Node.js模块化学习笔记

Node.js模块化

模块化雨模块

将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为模块化。

其中拆分的每个文件就是一个模块,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用

模块化项目

编码时按照模块一个一个编码的,整个项目就是一个模块化项目。

模块化好处

  • 防止命名冲突
  • 高复用性
  • 高维护性

模块化代码示例

新建两个js文件,分别是index.js;me.js
在me.js里面写test函数,然后暴露数据

function test(){
    console.log('testhahhh ');
}

// 暴露数据
// module.exports = test;

在index.js里面导入模块(模块化导入me.js脚本文件)
然后调用test函数

// 导入模块
const me = require('./me.js')
// 调用函数
test();

需求升级:如果是me.js里面有多个函数,调用其中一个函数

//新增内容
function spa() {
    console.log('spa……');
}

暴露数据使用如下方式

module.exports = {
    spa: spa,
    test:test
}

在index.js中可以这样调用

// 调用一个
// console.log(me.spa());
me.spa();

模块暴露数据的方式

  • module.exports=value

  • exports.name=value
    在这里插入图片描述

    module.exports = 'ilove';
    

在这里插入图片描述

注意

  • module.exports可以暴露任何数据
  • 不能使用exports=value的形式暴露数据。模块内部module与exports的隐式关系 exports=module.exports={}
exports = module.exports = {}
console.log(module.exports === exports);

两者的隐藏关系如上,但是require导入模块返回的是module.exports的值。

导入文件模块

在模块中使用require传入文件路径即可引入文件

const test=require(‘./test.js’)

require使用过程中的一些注意事项:

  • 对于自己创建的模块,导入路径时建议写相对路径,不能省略./和…/
  • js和json文件导入时可以不用后缀,C/C++编写的node扩展文件也可以不写后缀,但是一般用不到。
  • 如果导入的路径是个文件夹,则会首先监测该文件夹下package.json文件中main属性对应的文件,如果main属性不存在,或者package.json不存在,则会监测文件夹下的index.js和index.json,如果还没找到,就会报错。
  • 导入node.js内置模块时,直接require模块的名字即可,无需加./和…/

导入模块的基本流程

require导入自定义模块的基本流程

  • 将相对路径转化为绝对路径,定位目标文件
  • 缓存检测
  • 读取目标文件代码
  • 包裹为一个函数并执行(自执行函数)。通过argument.callee.toString()查看自执行函数
  • 缓存模块的值
  • 返回module.exports的值

行(自执行函数)。通过argument.callee.toString()查看自执行函数

  • 缓存模块的值
  • 返回module.exports的值

猜你喜欢

转载自blog.csdn.net/weixin_55355282/article/details/131155301