我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

    • nodejs

      • nodejs有哪些全局对象,怎么用
      • 如何在nodejs中实现分页机制功能
      • 如何在nodejs实现文件上传功能
      • 如何实现nodejs鉴权机制,说一下思路
      • 说说nodejs中require的原理
        • 模块是什么?
          • 示例
          • module
          • require
        • 模块载入和缓存机制
        • 文件定位
      • 说说nodejs中的EventEmit是如何实现的
      • 说说nodejs中的事件循环机制理解
      • 说说nodejs中进程通信有哪些方式
      • 说说nodejs中间件是什么,如何封装一个中间件
      • 说说对buffer的理解及应用场景
      • 说说对fs模块的理解及常用方法
      • 说说对nodejs的理解及应用场景
      • 说说对process的理解及常用方法
      • 说说对stream的理解及应用场景
      • nodejs如何进行性能监控及优化
      • nodejs批量改文件名
    • git

    • CI

    • 小程序

    • docker

    • Typescript

    • webpack

    • 安全

  • 基础

  • 框架

  • 情商

  • 算法

  • 网络

  • 千锤百炼
  • 大前端
  • nodejs
fangdown
2021-07-30
目录

说说nodejs中require的原理

# 模块是什么?

在nodejs中每一个文件都是一个模块,默认含有2个属性,module和require

# 示例

function add (x,y){
  return x+y
}

console.log(module)
console.log(require)

# module

提示

有exports属性

Module {
  id: '.',
  path: '/Users/fangzhiqing/Desktop/fangdown/github/app-node/src',
  exports: {},
  parent: null,
  filename: '/Users/fangzhiqing/Desktop/fangdown/github/app-node/src/test.js',
  loaded: false,
  children: [],
  paths: [
    '/Users/fangzhiqing/Desktop/fangdown/github/app-node/src/node_modules',
    '/Users/fangzhiqing/Desktop/fangdown/github/app-node/node_modules',
    '/Users/fangzhiqing/Desktop/fangdown/github/node_modules',
    '/Users/fangzhiqing/Desktop/fangdown/node_modules',
    '/Users/fangzhiqing/Desktop/node_modules',
    '/Users/fangzhiqing/node_modules',
    '/Users/node_modules',
    '/node_modules'
  ]
}

# require

有cache属性,缓存模块

[Function: require] {
  resolve: [Function: resolve] { paths: [Function: paths] },
  main: Module {
    id: '.',
    path: '/Users/fangzhiqing/Desktop/fangdown/github/app-node/src',
    exports: {},
    parent: null,
    filename: '/Users/fangzhiqing/Desktop/fangdown/github/app-node/src/test.js',
    loaded: false,
    children: [],
    paths: [
      '/Users/fangzhiqing/Desktop/fangdown/github/app-node/src/node_modules',
      '/Users/fangzhiqing/Desktop/fangdown/github/app-node/node_modules',
      '/Users/fangzhiqing/Desktop/fangdown/github/node_modules',
      '/Users/fangzhiqing/Desktop/fangdown/node_modules',
      '/Users/fangzhiqing/Desktop/node_modules',
      '/Users/fangzhiqing/node_modules',
      '/Users/node_modules',
      '/node_modules'
    ]
  },
  extensions: [Object: null prototype] {
    '.js': [Function],
    '.json': [Function],
    '.node': [Function]
  },
  cache: [Object: null prototype] {
    '/Users/fangzhiqing/Desktop/fangdown/github/app-node/src/test.js': Module {
      id: '.',
      path: '/Users/fangzhiqing/Desktop/fangdown/github/app-node/src',
      exports: {},
      parent: null,
      filename: '/Users/fangzhiqing/Desktop/fangdown/github/app-node/src/test.js',
      loaded: false,
      children: [],
      paths: [Array]
    }
  }
}

# 模块载入和缓存机制

  1. 加载内置模块
  2. 加载文件模块
  3. 加载文件目录模块
  4. 加载node_modules里的模块
  5. 自动缓存已载入的模块(优先)

# 文件定位

没有扩展名,会按.js ---> .json ---> .node的顺序补足扩展名,依次尝试

#nodejs
上次更新: 2021/12/19, 18:05:42
如何实现nodejs鉴权机制,说一下思路
说说nodejs中的EventEmit是如何实现的

← 如何实现nodejs鉴权机制,说一下思路 说说nodejs中的EventEmit是如何实现的→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式