所谓模块化,即在一个js文件中引入另一个js文件,各个文件都有自己的作用域,所以在模块化时,需要遵循一定的规范:
global(数据无法独立,易被覆盖,故不常用)
加入main.js要引入两个js文件1.js和2.js:
const m1=require('1.js')
const m2=require('2.js')
2.暴露
在1.js和2.js中(a为各自作用域内的常量):
exports.a=a
3.在main.js中即可用两个js文件各自的a了。
当export与module.export同时存在时,以module.export为主
module.export={b:200}
module.export一旦赋值,对象的引用就发生了改变,不再指向原来的module,而export的暴露就是指向原来的module,就不再生效。
所以以后在暴露时直接使用module.export={a:111,b:222}
即可
系统模块包
:安装时已经放在c盘第三方的包
,一般放在node_modules文件夹
中package.json文件
(初始化,使用命令npm init -y
)
入口文件
(package.js文件中查看)const calc=require('./calc.js')
注意:node_modules中不需要./
但是自定义包需要
首先初始化包的package.json配置文件
npm init -y
module.exports=(x,y)=>{x+y}
const add=require('./1.js')
const add=require('./2.js')
module.exports={
add,
sub
}
const m=require('./calc')
注意:入口函数index.js一定要在package.js中配置对,否则包无法引用
1.定义
function rizhi(req,res,next){ //定义中间件
let data=req.url+'___'+req.method
fs.appendFile(path.join(__dirname,'./中间件日志/1.txt'),data,err=>{
if(err) return console.log(err.message)
console.log('记录成功')
next() //不next就不会继续执行中间件以下的内容
})
}
2.注册
然后在需要使用中间件的代码前面注册中间件即可,注意中间件位置一定要对
app.use(rizhi)
3.模块化中间件
将中间件写为模块,然后在使用时引入即可
//定义
function biaodan(req,res,next){
let str = ''
req.on('data',(chunk)=>{
str+=chunk //str为data数据chunk块的拼加
})
req.on('end',()=>{
req.body=querystring.parse(str.toString()) //querystring.parse()方法将字符串转换为对象
next()
})
}