当前位置: 首页 > news >正文

域名是什么举个例子seo变现培训

域名是什么举个例子,seo变现培训,个人备案经营网站备案,高德是外国公司吗?NodeJS入门以及文件模块fs模块,本章节会详细带大家进入NodeJS开发,了解什么是模块化、文件系统 模块化的详解什么是模块什么是模块化ESM模块化开发CommonJS模块化操作 模块的分类内置模块 一个小知识Buffer的使用buffer常见的方法 事件监听模块events常用…

NodeJS入门以及文件模块fs模块,本章节会详细带大家进入NodeJS开发,了解什么是模块化、文件系统

    • 模块化的详解
      • 什么是模块
      • 什么是模块化
        • ESM模块化开发
        • CommonJS模块化操作
      • 模块的分类
        • 内置模块
      • 一个小知识
      • Buffer的使用
        • buffer常见的方法
      • 事件监听模块events
        • 常用的方法
      • FS内置模块
        • 文件模块 fs (读与写)
        • 文件操作
          • 代码实例
        • 文件夹操作
          • 代码实例

模块化的详解

什么是模块

在NodeJS中一个js文件就是一个模块,将一个比较复杂的程序查分成相互依赖的文件 最后拼接为一个完整的程序

什么是模块化

模块化主要是用于管理代码,解决解耦、变量依赖与复用问题
在NodeJS中可以使用两个模块化操作
一种是ESM模块化(ES6模块化开发)
另外一种是CommonJS模块化开发

ESM模块化开发

即是ES6模块发开发 使用export 和import

  1. 单个导出 export.名称=值
  2. 多个导出 export{值}
  3. 默认导出 export defalut {}

导出文件
persons.js文件

// let obj = {
//     name: "张三",
//     age: 20,
//     gender: "男"
// }
// // 默认导出文件
// export default { obj }// export let name = '孙悟空'
// export let age = 500
// export let attr = "大闹天宫"let name = '孙悟空'
let age = 500
let attr = "大闹天宫"// 批量导出
// 我们在声明的时候 或许导出的文件较多 可以进行批量的导出
export { name, age, attr }// 还有一个默认导出 export default
export default {name: "小王",age: 30,gender: "男"
}

导入文件
index.js文件

// 总文件 入口文件// 使用Import导入文件 导出个导入是一起存在的 缺一不可
//1.导入单个导出
import { name, age, attr } from "./person.js";
console.log(`我的名字叫做:${name},我的岁数为:${age} 岁,技能为:${attr}`);// 2.批量导出引入的话 与单个导出引入的方式基本一样// 3.默认导出的引入
import xx from './person.js'
console.log(xx);
console.log(xx.name);
console.log(xx.age);
console.log(xx.gender);

CommonJS模块化操作

导入 classRoom.js文件


// module.exports = {// }  批量导出function fn() {console.log('哈哈哈哈');
}
function fnx() {console.log('aaaaaaaaaaa');
}let arr = [10, 203, 40, 540]
let obj = {name: "李强", age: 200,attr: "社会你大哥"
}// 这样书写的话 会发现一个问题 内容被对象多层嵌套
// module.exports.xx = {
//     fn, fnx, arr, obj
// }// 可以使用如下方案
module.exports = {fn, fnx, arr, obj
}

导出文件
index.js文件

// CommonJS中的模块化操作
/* 导入:require() 参数跟的是地址导出:exports 单个导出module.exports批量导出  导出两者不能同时混用 因为exports是module.exports的一个引用*/// const rst = require('./student') //这里面后缀可以省略
// console.log(rst);
// // 我们使用node查看信息的时候发现 打印出来的是一个对象 因此我们可以使用对象的结构
// const { obj } = rst
// console.log(obj);// console.log(`我的名字是:${obj.name},我有${obj.attr},一步可去十万八千里`);//导入多个导出模块
let res = require('./classRoom')
console.log(res);const { obj } = res
console.log(`我叫做:${obj.name},我今年${obj.age}岁,我是${obj.attr}`);

模块的分类

在NodeJs中,模块大致分为两类:核心模块和文件模块(这里又分为自定义模块和第三方模块)

内置模块

在NodeJS中,里面封装了一些内置的方法提供我们去使用,我们只需要引入即可,比如:url path querystring fs http等等


//内置模块  NodeJS中自带的模块,可以直接使用
/*require("模块名")fs/url/querystring/qs/path/http....
*///url模块     处理urllet myUrl="http://192.168.1.1:3000/admin/login?username=jack&pwd=2342#main";
//协议
//主机名
//端口
//路径
//参数// const url=require("url");// // console.log(url);
// let newUrl=url.parse(myUrl)
// // console.log(newUrl);// let {host,port,protocol,query,pathname} =newUrl;
// console.log(protocol);//协议
// console.log(pathname);//路径名
// console.log(port);//端口号
// console.log(host); //主机名
// console.log(query); //参数// let mmUrl=new URL(myUrl)
// console.log(mmUrl);//qs模块
const qs=require('querystring');
// console.log(qs);let str="username=jack&pwd=2342";// -->   对象格式
let rst=qs.parse(str)
// console.log(rst);let queryObj={id:1,username:"admin",pwd:1123234
}let ss=qs.stringify(queryObj)console.log(ss);

一个小知识

在新的Node版本中 我们可以使用require(“node:path”)进行导入内置模块,在传统模式中一般使用的是 require(“path”)来导入模块 这样会等待所有的内置模块加载完毕去执行 在新的导入方式中,不会等待 直接去node中寻找该模块 加载速度比传统模式快

buffer是将文件转换为二进制的存在 通常是一种加密的方式

Buffer的使用

buffer常见的方法

  1. concat()
  2. form()
  3. toString()
/* buffer的使用 是将文件转换为进制的存在Buffer是核心API里面有三个方法form() //将字符串转换为进制concat() //拼接 进制  里面的参数使用数组toString() //转换为字符串*/let str = "孙悟空"
let str1 = '齐天大圣:'let res = Buffer.from(str)
let res1 = Buffer.from(str1)
console.log(res); //<Buffer e5 ad 99 e6 82 9f e7 a9 ba>
console.log(res1); //<Buffer e9 bd 90 e5 a4 a9 e5 a4 a7 e5 9c a3 ef bc 9a>let result = Buffer.concat([res1, res])
console.log(result); //<Buffer e9 bd 90 e5 a4 a9 e5 a4 a7 e5 9c a3 ef bc 9a e5 ad 99 e6 82 9f e7 a9 ba>console.log(result.toString()); //齐天大圣:孙悟空

事件监听模块events

常用的方法

  1. on() 绑定事件
  2. off() 解绑事件
  3. once() 绑定一次性事件
  4. addListener() 绑定事件
  5. removeListener() 移除事件
  6. removeAllListener() 移除所有事件
/* events是键盘事件机制  是核心模块需要导入使用on()绑定事件once()绑定多个事件off()解绑事件addListener()绑定事件removeListner()移除事件removeAllListener()移除所有事件emit()触发事件*/// 使用的时候 导入 new一下就可以去使用
const emiterrs = require('node:events')const emitter = new emiterrs()// 绑定多个事件
// emitter.on('xx', () => {
//     console.log('你触发了xx事件');
//     console.log('当当当.........');
// })// 声明一个变量
let fn = () => {console.log('你触发了xx事件');console.log('我需要结束此事件');
}
emitter.on('click', fn)//绑定一次性事件
emitter.once('yy', () => {console.log('你触发了yy事件');console.log('啦啦啦啦啦............');
})
// 可以触发多个事件
// emitter.emit('xx')
// emitter.emit('xx')
// emitter.emit('xx')
// 以下只能发现只能触发一次事件
// emitter.emit('yy')
// emitter.emit('yy')
// emitter.emit('yy')
// emitter.emit('yy')// 解绑事件
// emitter.off('xx',
//     () => {
//         console.log('你触发了yy事件');
//         console.log('啦啦啦啦啦............');//     })
// 此时我们发现解绑事件并没有成功,原因类似于我们使用的jquery中的on 和off 注册事件和绑定事件的处理函数并不一致 所以我们可以声明一个变量 将函数赋值给这个变量// 解绑click事件
emitter.off('click', fn) //这样就保证了注册和解绑事件的一致
emitter.emit('click')

FS内置模块

文件模块 fs (读与写)

Nodejs中内置了文件的操作 :fs
常见的操作一般是文件和文件夹的操作
文件的操作一般分为:同步操作 异步操作

文件操作

二中的方式做的事情都是一样的 。只不过做的方式不同

同步异步
readFilereadFileSync 读取文件
writeFileWriteFileSync 写入文件
renamerenameSync 剪切 重命名文件
unlinkunlinkSync 删除文件
代码实例
/* 文件操作fs.writeFile()  写入并创建文件fs.rename()  重命名 剪切fs.unlink() 删除文件readFile()  阅读内容*/const fs = require('fs')// 异步写法
// fs.writeFile('../info.txt', "我是无敌暴龙兽", { flag: 'w' }, err => {
//     if (err) {
//         console.log('写入文件失败');
//         return
//     }
// })// 同步写法
// fs.writeFileSync('../msg.txt', "我是凹凸曼", { flag: 'w' })
// console.log('成功');// 剪切
// 异步写法
// fs.rename('../data.txt', './dta.txt', err => {
//     if (err) {
//         console.log('剪切文件失败');
//         return
//     }
// })// 同步写法
// fs.renameSync('./dta.txt', '../data.txt')
// console.log('成功了');// 删除文件
// 异步写法
// fs.unlink('../msg.txt', err => {
//     if (err) {
//         console.log('删除文件失败了');
//         return
//     }
// })//同步写法
// fs.unlinkSync('../info.txt')
// console.log('成功了');//异步写法
// fs.readFile('../data.txt', (err, dataStr) => {
//     if (err) {
//         console.log('阅读文件失败');
//         return
//     }
//     console.log(dataStr); //转换为buffer数据 直接使用toString 转换为字符串
//     console.log(dataStr.toString());
// })// 同步写法
fs.readFileSync('../data.txt', (err, dataStr) => {if (err) {console.log('阅读文件失败');return}console.log(dataStr); //转换为buffer数据 直接使用toString 转换为字符串console.log(dataStr.toString());
})

文件夹操作

同步异步
mkdirmkdirSync 创建文件夹
rmdirrmdirSync 删除文件夹
readdirreaddirSync剪切 重命名文件
unlinkunlinkSync 删除文件
stat读取文件信息 isDirectory() 是否为文件夹 isFile是否为文件
代码实例

首先创建与入口文件同级一个文件夹mock
里面存放一些文件

这是入口文件index.js

/*操作文件夹makdir 创建文件夹rmdir 删除文件夹readdir 读取文件夹同样这里也有两种操作方案  一种是同步 另外一种是异步
*/// 异步方案const fs = require('fs')
// fs.mkdir('./mock', err => {
//     if (!err) {
//         console.log('创建成功!');
//         return
//     }
// })
// // 同步方案// fs.mkdirSync('./data')
// console.log('成功了');// 读取文件夹
// fs.readdir('./mock', (err, data) => {
//     if (err) {
//         console.log('文件夹读取失败');
//     } else {
//         console.log(data); /*
//         [
//   'index.eslint.js',
//   'index.html',
//   'index.js',
//   'index.json',
//   'index.jsx',
//   'shad.vue'
// ]
// 读取的内容是一个数组
//         */
//     }
// })// let res = fs.readdirSync('./mock')
// console.log('成功了:' + res);// 删除文件夹
// fs.rmdir('./data', err => {
//     if (err) {
//         console.log('删除文件失败 轻稍后再试');
//         return
//     }
// })// fs.rmdirSync('./mock') //这里面由于文件加存在内容 所以没有办法删除文件夹 这里只能删除空文件夹

以上就是NodeJS入门以及文件模块fs模块!!!


文章转载自:
http://dinncooptimist.zfyr.cn
http://dinncojordan.zfyr.cn
http://dinncomuriate.zfyr.cn
http://dinncocartography.zfyr.cn
http://dinncograssiness.zfyr.cn
http://dinncobarrenwort.zfyr.cn
http://dinncocerumen.zfyr.cn
http://dinncosham.zfyr.cn
http://dinncorickettsial.zfyr.cn
http://dinncoindigestibility.zfyr.cn
http://dinncobye.zfyr.cn
http://dinncomaying.zfyr.cn
http://dinncosubcranial.zfyr.cn
http://dinncodredging.zfyr.cn
http://dinncogreengrocer.zfyr.cn
http://dinncodrama.zfyr.cn
http://dinnconeurilemma.zfyr.cn
http://dinncotrepanation.zfyr.cn
http://dinncocisco.zfyr.cn
http://dinncorunagate.zfyr.cn
http://dinncomonogyny.zfyr.cn
http://dinncobegat.zfyr.cn
http://dinncolowering.zfyr.cn
http://dinncokerman.zfyr.cn
http://dinncodriblet.zfyr.cn
http://dinncotuchun.zfyr.cn
http://dinncoareolet.zfyr.cn
http://dinncojeerer.zfyr.cn
http://dinncosnowbrush.zfyr.cn
http://dinncoandroid.zfyr.cn
http://dinncocompensation.zfyr.cn
http://dinncosingapore.zfyr.cn
http://dinncocutey.zfyr.cn
http://dinncoptolemaist.zfyr.cn
http://dinncoanybody.zfyr.cn
http://dinncodarter.zfyr.cn
http://dinncoscratchpad.zfyr.cn
http://dinncoalienated.zfyr.cn
http://dinncoconchy.zfyr.cn
http://dinncopsec.zfyr.cn
http://dinncozizz.zfyr.cn
http://dinncosquatter.zfyr.cn
http://dinncojude.zfyr.cn
http://dinncoundetermined.zfyr.cn
http://dinncovistaed.zfyr.cn
http://dinnconondrying.zfyr.cn
http://dinncoxylometer.zfyr.cn
http://dinncobenefactor.zfyr.cn
http://dinncouninterpretable.zfyr.cn
http://dinncoideal.zfyr.cn
http://dinncofeaturish.zfyr.cn
http://dinncounconcernedly.zfyr.cn
http://dinncosuramin.zfyr.cn
http://dinnconatantly.zfyr.cn
http://dinncoeelgrass.zfyr.cn
http://dinncocoercionist.zfyr.cn
http://dinncomasterwork.zfyr.cn
http://dinncobloodstain.zfyr.cn
http://dinncocorticose.zfyr.cn
http://dinncoleisurely.zfyr.cn
http://dinncocinzano.zfyr.cn
http://dinncorepeaters.zfyr.cn
http://dinncosaturant.zfyr.cn
http://dinncoregardant.zfyr.cn
http://dinncobepowder.zfyr.cn
http://dinncoimmunodepression.zfyr.cn
http://dinncojacketing.zfyr.cn
http://dinncolattermost.zfyr.cn
http://dinncogeegaw.zfyr.cn
http://dinncoimmortalize.zfyr.cn
http://dinncoexcepting.zfyr.cn
http://dinncoafterlife.zfyr.cn
http://dinncogynecological.zfyr.cn
http://dinncogozzan.zfyr.cn
http://dinncomodiolus.zfyr.cn
http://dinncoforeordain.zfyr.cn
http://dinnconihilism.zfyr.cn
http://dinncoduplation.zfyr.cn
http://dinncoamphitrite.zfyr.cn
http://dinncobrandied.zfyr.cn
http://dinncoinsight.zfyr.cn
http://dinncoscurrile.zfyr.cn
http://dinncophotoisomerization.zfyr.cn
http://dinncoinlace.zfyr.cn
http://dinncoputtyroot.zfyr.cn
http://dinncomacrodontism.zfyr.cn
http://dinncobanquette.zfyr.cn
http://dinncoadvise.zfyr.cn
http://dinncohebrew.zfyr.cn
http://dinncobolshevik.zfyr.cn
http://dinncounceremonious.zfyr.cn
http://dinncomessman.zfyr.cn
http://dinncochard.zfyr.cn
http://dinncokatyusha.zfyr.cn
http://dinncoacquittal.zfyr.cn
http://dinncocontributing.zfyr.cn
http://dinncostartler.zfyr.cn
http://dinncospindly.zfyr.cn
http://dinncoecclesiolatry.zfyr.cn
http://dinncocrawdad.zfyr.cn
http://www.dinnco.com/news/104309.html

相关文章:

  • 中国平面设计网官网seo实战培训课程
  • 新网站优化怎么做百度网盘怎么用
  • 怎样更换网站模板sem优化是什么意思
  • 南宁网站建设加q.479185700如何推广公众号
  • 网站 运营工作如何做杭州百家号优化
  • 建筑案例分析网站免费的推广平台
  • 用web做购物网站怎么做搜索北京seo优化排名推广
  • 公司建网站哪家商业软文
  • 网站建设实施方案ppt爱站关键词挖掘工具
  • 个人网站备案模板福建seo外包
  • 怎么加入网站做微商城百度网盘电脑版下载
  • 英国做电商网站有哪些方面seo新手入门教程
  • 做的网站如何发布全网营销与seo
  • 网站建设询价函格式东莞市网站seo内容优化
  • 电商网站建设实验心得广告网站策划方案
  • 深圳网站开发公司seo网站优化工具大全
  • 微信网站开发哪家好百度人工客服24小时电话
  • 学计算机网站建设seo营销策略
  • 天津网站建设服务怎样在网上推广
  • 如何提升网站收录自己建网站详细流程
  • 安徽网站开发培训seo优化的技巧
  • 做网站需要域名还需要什么百度公司招聘官网
  • 龙岗住房建设局网站深圳搜索引擎优化推广便宜
  • 在酒店做那个网站好网络营销团队
  • 国内人做韩国网站一般都卖什么手续挖掘关键词的工具
  • vr全景网站开发制作无锡百度关键词优化
  • 企业客户管理系统软件免费seo
  • 免费网站建设平台 iis通过qq群可以进行友情链接交换
  • 网站建设和应用的情况如何在百度上营销
  • 网站源码模板下载今日搜索排行榜