Node.js模块化


模块化的由来

  • 在团队协作中,经常会不同队员负责不同的文件编写(比如js),那么如果不同js文件定义了相同的变量,那么如果这些文件都引入在页面中,那么会出问题。-导致了全局变量的污染。
  • 期望不同的文件之间互不干扰,同时也不会污染到全局变量。—模块化

什么是模块化

  • 文件作用域(模块是独立的,在不同的文件使用必须要重新引用)【在node中没有全局作用域,它是文件模块作用域】
  • 通俗来讲就是将每一个js文件作为一个单独的模块,如果需要使用另一个js文件,需要使用专门的语法,模块内的内容和变量对于其他模块都是不可见的。
  • 通信规则
    • 加载require
    • 导出exports

common.js

概念:是一个如何实现模块化的规范。规定实现JavaScript模块化应该是什么样子。nodejs根据commonjs实现了一套模块化的语法

  • commonjsnodejs的关系
    • commonjs是模块化的规范,模板。nodejscommonjs的实现。

common.js模块化内容

  • require:引入,模块的语法。如果需要在一个模块中引入另一个模块,需要使用require语法

    const  变量名 = require("模块的路径");
    
    • require引入一个模块是指引入模块所暴露出来的内容。并不是模块的全部。
  • module:这是每个模块都有的一个变量,指的是模块本身。

  • module.exports:一个模块暴露的内容,是一个对象。require语法引入的就这个属性的内容

如果一个模块引入的内容比较多,也可以使用解构赋值来优化

module.exportsexports

  • exports module.exports 的引用

  • 注意:给 module.exports 赋值会切断与 exports 之间的联系

    1. 直接添加属性两者皆可。

    2. 赋值操作时,只能使用 module.exports

console.log( module.exports === exports ) // ==> true
 
// 等价操作
module.exports.num = 123
exports.num = 123
 
// 赋值操作:不要使用 exports = {}
module.exports = {}

模块路径

  • 相对路径:以该模块的本身所在目录为出发点

    require('./子目录名/')require('./../')
    
    • ./指的是的当前模块所在文件夹
  • 绝对路径

    require('/目录名/模块名');
    
    • /指的是当前盘符为起点(C盘、d盘等)
  • nodejs本身的模块:

    require('模块名');
    
    • 直接写模块名,不需要写路径

文章作者: 时光路人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 时光路人 !
评论
  目录