与前端不同,nodejs采取commonJS规范

引用规则

  • / 表示绝对路径,./ 表示相对路径

  • 默认依次尝试js、json、node扩展名

  • 不写路径默认为 build-in 或者 node_modules 中的模块

特性

  • 加载一次会执行并缓存在内存中

示例:同一目录下有三个文件
mo.js:

  1. var i = 0
  2. i++
  3. console.log('this is ' + i + "th models")
  4. var testVar = 100
  5. function testFun(){
  6. testVar++
  7. console.log("this is " + testVar)
  8. }
  9. module.exports.testVar = testVar
  10. module.exports.testFun = testFun

mo2.js:

  1. const mo = require("./mo.js")
  2. module.exports.testVar = mo.testVar
  3. module.exports.testFun = mo.testFun

index.js:

  1. const mo = require("./mo.js")
  2. const mo2 = require("./mo2.js")
  3. console.log(mo.testVar)
  4. mo.testFun()
  5. const mo3 = require("./mo.js")

mo.js中的内容依旧只执行一次

  • 循环依赖的情况

mo.js

  1. module.exports.test = "A"
  2. const modB = require("./mo2")
  3. console.log("modA: ",modB.test)
  4. module.exports.test = "AA"

mo2.js

  1. module.exports.test = "B"
  2. const modB = require("./mo")
  3. console.log("modB: ",modB.test)
  4. module.exports.test = "BB"

index.js

  1. const mo = require("./mo.js")
  2. const mo2 = require("./mo2.js")output
  1. $ node index.js
  2. modB: A
  3. modA: BB

分析:部分执行