Node模块引入与加载机制

引入模块

Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。

在 Node.js 中,引入一个模块非常简单:

1.创建一个自定义模块,名为math.js

exports.add = function(a,b) {    console.log('a + b = ',a+b);return a+b;
}

2.创建一个sgf.js文件,引入刚才创建的自定义模块math,内容如下

var math = require('./math');
math.add(1,2);

模块种类

node.js存在两种模块,分别为原生模块(也叫内置模块)和文件模块:

一、核心模块

  1. 优先级最高,如果自定义模块与核心模块重名时,Node会选择加载核心模块。
  2. 引入核心模式时直接使用require(“moduleName”)即可,不需要写路径。
  3. 写错模块名则require方法会抛出异常。
模块名称 功能
HTTP模块 处理客户端的网络请求
URL模块 处理客户端请求过来的URL
Query Strings模块 处理客户端通过get/post请求传递过来的参数
File System模块 在服务端来操作文件,如写入文件、读取文件等操作
Path模块 操作文件的路径,为文件操作服务
Global模块 全局共享的,不需要导入模块即可以使用

二、文件模块

  1. 按引入路径可分为绝对路径(/moduleName),相对路径(./moduleName或…/moduleName)和第三方文件加载方式(moduleName)。
  2. 如果moduleName不加上扩展名,则在查找时会按照.js、.json、.node的顺序为其加上扩展名。

加载机制

一、优先从缓存中加载,如果缓存中存在对应模块则返回,否则进行下一步

二、如果不带./或/的,则从原生模块(也叫内置模块)中加载,如果原生模块中没有匹配的,则当做第三方模块加载。如果带./或/的,先把moduleName当做文件来加载,带扩展名时确切的文件名进行加载,否则在查找时会按照.js、.json、.node的顺序为其加上扩展名;加上扩展名都没有匹配的文件时,会将moduleName当成目录来加载。

三、第三方模块的加载:从当前模块所在路径下的/node_modules 文件夹中加载第三方模块,如果没有找到对应的第三方模块,则移动到再上一层父目录中,进行加载,直到文件系统的根目录。如在C:\A\B\C\D\sgf.js 路径下require(“moduleName”);

依次查找路径
C:\A\B\C\D\node_modules\moduleName
C:\A\B\C\node_modules\moduleName
C:\A\B\node_modules\moduleName
C:\A\node_modules\moduleName
C:\node_modules\moduleName

四、目录加载:

  1. 从当前模块所在路径下查找 package.json 的文件,若存在则查找文件内"main" 字段,作为 require() 加载的入口
  2. 当不存在 package.json 文件,或者文件内不存在main字段,则加载当前目录下的 index.js 文件。
  3. 当上述文件都找不到时,则报错。

Node模块引入与加载机制相关推荐

  1. python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...

  2. Node.js中模块加载机制

    Node.js中模块加载机制 模块查找规则-当模块拥有路径但没有后缀时 1. require方法根据模块路径查找模块,如果是完整路径,直接引入模块. 2. 如果模块后缀省略,先找同名JS文件再找同名J ...

  3. Node.js模块以及模块加载机制

    2019独角兽企业重金招聘Python工程师标准>>> Node.js中的模块 在Node.js中,以模块为单位划分功能,通过一个完整的模块加载机制使得开发人员可以将应用程序划分为多 ...

  4. nodejs学习巩固笔记-nodejs基础,Node.js 高级编程(核心模块、模块加载机制)

    目录 Nodejs 基础 大前端开发过程中的必备技能 nodejs 的架构 为什么是 Nodejs Nodejs 异步 IO Nodejs 事件驱动架构 全局对象 全局变量之 process 核心模块 ...

  5. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

  6. Node.js(一、Node.js基础、模块加载机制、包等)

    Node.js(一.Node.js基础.模块加载机制.包等) 1.Node.js基础 1.1.Node是什么 1.2.Node环境安装失败解决方法 1.2.1.Node环境搭建 1.2.2.错误代码2 ...

  7. node --- 模块加载机制

    1. Node.js中模块加载机制 1.1 模块查找规则-当模块拥有路径但没有后缀时 require('./find.js'); require('./find'); require方法根据模块路径查 ...

  8. Node.js学习笔记——模块加载机制及npm指令详解

    文章目录 二.模块化 1.模块化的基本概念 2.Node.js 中的模块化 Node.js 中模块的分类 加载模块 Node.js 中的模块作用域 向外共享模块作用域中的成员 Node.js 中的模块 ...

  9. Node.js---02、node.js 模块加载机制

    2019独角兽企业重金招聘Python工程师标准>>> node.js模块分为自定义模块.扩展模块和核心模块.所有模块的加载都是通过关键字require()实现. 1.自定义模块的加 ...

最新文章

  1. solr安装-tomcat+solrCloud构建稳健solr集群
  2. 解决MYSQL错误:ERROR 1040 (08004): Too many connections
  3. 51 时间片系统 纯c语言,51单片C语言学习.doc
  4. Hadoop平台日志结构
  5. 大火系列: Rust入门篇 mut
  6. 动漫风html源码,CSS3动画制作一个卡通风格的404错误页面代码
  7. Almost Regular Bracket Sequence
  8. git 清空所有commit记录
  9. mpvue 从零开始 女友的收纳盒 6 mpvue-entry入口管理
  10. PHP多坐席客服聊天系统源码完美定制版 带原生app+视频教程
  11. GridViewDetailsView对XML文件增删改
  12. OFCMS 项目开源 java cms 系统 内容管理系统
  13. python怎么写出正弦图_如何使用python在图像上生成随机正弦条纹?
  14. mysql sql执行cmd命令行_命令行执行MySQL的sql文件
  15. npm 使用报错合集
  16. python用户界面画图_通过海龟绘图学习Python-01
  17. 从需求出发来看关系模型与非关系模型–时代的变革
  18. (附源码)ssm天天超市购物网站 毕业设计 022101
  19. 智慧校园人脸识别解决方案
  20. 2020年网络搭建与应用——国赛samba答案

热门文章

  1. 小车手app安卓版下载_小车手app安卓版下载
  2. OpenCV4.3 Java 编程入门:离散傅里叶变换
  3. 《15个提高Google搜索的技巧》
  4. Js鼠标放上去图片变大变小
  5. PlantCV中文文档
  6. 图像相似度对比-直方图
  7. Promethes监控华为S5720交换机
  8. 干货知识:高清监控怎么选配交换机
  9. 【深度学习】120G+训练好的word2vec模型(中文词向量)
  10. C++基础知识(常函数和常对象)