node——模块化

什么是模块化

特性

  1. 将程序划分为一个个小的结构
  2. 每个结构编写自己的逻辑代码,有自己的作用域
  3. 暴露自己模块中变量、对象、函数
  4. 导入其他模块中的变量、对象、函数

规范

AMD
CMD
CommonJS

CommonJS

node中实现模块化的方式是CommonJS,导入模块是同步

特点:

  1. 每个js文件都是单独的模块
  2. 可以导入导出,导出使用exports或者module.exports,导入使用require

exports

exports是一个对象,我们可以在这个对象中添加很多个属性,添加的属性会导出

//bar.js
const name ='jae'
const age = 18
exports.name = name
exports.age = age

另外一个文件中可以导入:

//main.js
const bar = require('./bar')
console.log(bar.name);//jae
console.log(bar.age);//18

注意事项
导入的exports 对象是引用值,在main.js 中修改,bar.js中也会被修改
在这里插入图片描述

//bar.js
const name ='jae'
const age = 18
exports.name = name
exports.age = age
setTimeout(()=>{

console.log('2s后打印bar中的exports.name',exports.name);

},2000)
const bar = require('./bar')
console.log('main.js中的bar',bar.name);
setTimeout(()=>{
  bar.name = 'hhh'
console.log('1s后修改main.js中的bar',bar.name);

},1000)

控制台输出
在这里插入图片描述

module.exports

Node中我们经常导出东西的时候,又是通过module.exports导出的
node 中默认module.exports = exports

require

导入格式如下:require(X)
情况一:X是一个核心模块,比如path、http
规则:直接返回核心模块,并且停止查找
情况二:X是以 ./ 或 …/ 或 /(根目录)开头的
规则:

  • 如果有后缀名,按照后缀名的格式查找对应的文件
  • 如果没有后缀名,会按照如下顺序:
  1. 直接查找文件X
  2. 查找X.js文件
  3. 查找X.json文件
  4. 查找X.node文件
  • 如果没有找到,那么报错:not found
    情况三:
    直接是一个X(没有路径),并且X不是一个核心模块
  1. E:\ZYH\node\node\base\CommonJS\main.js编写 require(bar)
  2. 查找bar的顺序如下:
    paths: [
    ‘e:\ZYH\node\node\base\CommonJS\node_modules’,
    ‘e:\ZYH\node\node\base\node_modules’,
    ‘e:\ZYH\node\node\node_modules’,
    ‘e:\ZYH\node\node_modules’,
    ‘e:\ZYH\node_modules’,
    ‘e:\node_modules’
    ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值