NodeJS模块

2018-09-16  本文已影响0人  One_Hund

模块分类

require('fs')
require('./a.js')
require('/data/project/a.js')
require('a.js') // 查找过程见下面“模块定位”

Tips:文件后缀可省略,NodeJS会尝试给文件补上.js.json.node

模块定位

通过模块标识符引入自定义模块的查找规则:

  1. 取当前目录下的node_modules为查找路径
  2. 首先尝试把模块标识符当作是文件名处理(module.jsmodule.jsonmodule.node
  3. 把模块标识符当作目录来处理(module\package.jsonmodule\index.js
  4. 到上一级node_modules,重复步骤2,3,直到根目录
    例:
// 当前路径:
// C:\Users\documents\example\a.js
const moment = require('moment')

// 查找路径:
C:\Users\documents\example\node_modules\moment.js
C:\Users\documents\example\node_modules\moment.json
C:\Users\documents\example\node_modules\moment.node
C:\Users\documents\example\node_modules\moment\package.json
C:\Users\documents\example\node_modules\moment\index.js
// 向上一级查找,重复上面5步
C:\Users\documents\node_modules
C:\Users\node_modules
C:\node_modules

模块缓存

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req,res)=>{

  // 清理模块缓存
  Object.keys(require.cache).forEach((key)=>{
    delete require.cache[key]
  })
  // 重新加载
  const example = require('./example')

  res.statusCode = 200;
  res.setHeader('Content-Type','text/plain');
  res.end(example.text)
})

server.listen(port,hostname,()=>{
  console.log(`Server running at http://${hostname}:${port}/`)
})
上一篇 下一篇

猜你喜欢

热点阅读