Node.js--模块化

Node.js模块化

一、介绍

1.1 什么是模块化与模块

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

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

1.2 什么是模块化项目

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

1.3 模块化好处

下面是模块化的一些好处

  1. 防止命名冲突
  2. 高复用性
  3. 高维护性

二、模块暴露数据

2.1 模块初体验

  1. 创建me.js
// 声明函数
function timeo(){
	console.log('...')
}
// 暴露数据
module.exports = tiemo
  1. 创建index.js
// 导入模块
const tiemo = require('./me.js')
// 调用函数
tiemo()

2.2 暴露数据

模块暴露数据的方式有两种:

  1. module.exports = value
  2. exports.name = value

使用时有几点注意:

  • module.exports可以暴露任意数据
  • 不能使用 exports = value 的形式暴露数据,模块内部module与exports的隐式关系exports = module.exports = {},require返回的是目标模块中module.exports的值

三、导入(引入)模块

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

const test = require('./me.js')

require使用的一些注意事项:

  1. 对于自己创建的模块,导入时路径建议写相对路径,且不能省略./../

  2. jsjson文件导入时可以不用写后缀,c/c++编写的node扩展文件也可以不写后缀,但是一般用不到

  3. 如果导入其他类型的文件,会以js文件进行处理

  4. 如果导入的路径是个文件夹,则会首先检测该文件下package.json文件中main属性对应的文件,

    如果存在则导入,反之不存在就会报错

    如果mian属性不存在,或者package.json不存在,则会尝试导入文件夹下的index.jsindex.json

    如果还是没找到,就报错

  5. 导入node.js内置模块时,直接require模块的名字即可,无需加./../

四、导入模块的基本流程

这里我们介绍一下require导入自定义模块的基本流程

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

五、CommonJS规范

module.exportsexports以及require这些都是CommonJS模块化规范中的内容。

而Node.js是实现了CommonJS模块化规范,二者关系有点像JavaScript与ECMAScript

你可能感兴趣的:(node,node.js)