31 # 模块的概念

模块化规范

  • commonjs 规范:node 中的模块化规范就是 commonjs 规范(node 自己实现的),CommonJS 模块输出的是一个值的拷贝
  • esmodule 规范(import export):ES6 模块输出的是值的引用
  • umd 规范(统一模块规范,如果浏览器不支持 commonjs requirejs,直接将变量放到 window 上)
  • amd 规范(requirejs):采用异步方式加载模块,推崇依赖前置、提前执行
  • cmd 规范(seajs,过时了):推崇依赖就近、延迟执行。

commonjs 规范

  • 可以把复杂的代码拆分成小的模块,方便管理代码和维护
  • 每个模块之间的内容都是相互独立的,互不影响(解决变量冲突的问题),解决方案:使用单例模式不能完全解决,可以使用自执行函数来解决

规范的定义:

  • 每个文件都是一个模块
  • 如果你希望模块中的变量被别人使用,可以使用 module.exports 导出这个变量
  • 如果另一个模块想使用这个模块导出的结果,需要使用 require 语法来引用(同步)

模块的分类

  • 核心模块、内置模块:不是自己写的,也不是安装来的,而是 node 中自己提供的,可以直接使用,比如:require("fs")
  • 第三方模块:别人写的模块,通过 npm install 安装过来的,不需要有路径,比如:require("commander")
  • 自定义模块:自己定义的模块就是自己写的模块,引用时需要增加路径(相对路径,绝对路径),比如:require("./6/kaimo-promise.js")

你可能感兴趣的:(前端工程架构,Node,/,Node,框架,node.js,模块)