nodejs-模块系统
Node.js模块系统为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。//-------------------------------------hello.jsexports.world = function() {console.log('Hello World');}main.jsvar hello = require('./hello');hello.world();对象封装到模块中//hello.jsfunction Hello() {var name;this.setName = function(thyName) {name = thyName;};this.sayHello = function() {console.log('Hello ' + name);};};module.exports = Hello;//main.jsvar Hello = require('./hello');hello = new Hello();hello.setName('BYVoid');hello.sayHello();//-----------------------------------
调用查找顺序
在路径 Y 下执行 require(X) 语句执行顺序1. 如果 X 是内置模块a. 返回内置模块b. 停止执行2. 如果 X 以 '/' 开头a. 设置 Y 为文件根路径3. 如果 X 以 './' 或 '/' or '../' 开头a. LOAD_AS_FILE(Y + X)b. LOAD_AS_DIRECTORY(Y + X)4. LOAD_NODE_MODULES(X, dirname(Y))5. 抛出异常 "not found"LOAD_AS_FILE(X)1. 如果 X 是一个文件, 将 X 作为 JavaScript 文本载入并停止执行。2. 如果 X.js 是一个文件, 将 X.js 作为 JavaScript 文本载入并停止执行。3. 如果 X.json 是一个文件, 解析 X.json 为 JavaScript 对象并停止执行。4. 如果 X.node 是一个文件, 将 X.node 作为二进制插件载入并停止执行。LOAD_INDEX(X)1. 如果 X/index.js 是一个文件, 将 X/index.js 作为 JavaScript 文本载入并停止执行。2. 如果 X/index.json 是一个文件, 解析 X/index.json 为 JavaScript 对象并停止执行。3. 如果 X/index.node 是一个文件, 将 X/index.node 作为二进制插件载入并停止执行。LOAD_AS_DIRECTORY(X)1. 如果 X/package.json 是一个文件,a. 解析 X/package.json, 并查找 "main" 字段。b. let M = X + (json main 字段)c. LOAD_AS_FILE(M)d. LOAD_INDEX(M)2. LOAD_INDEX(X)LOAD_NODE_MODULES(X, START)1. let DIRS=NODE_MODULES_PATHS(START)2. for each DIR in DIRS:a. LOAD_AS_FILE(DIR/X)b. LOAD_AS_DIRECTORY(DIR/X)NODE_MODULES_PATHS(START)1. let PARTS = path split(START)2. let I = count of PARTS - 13. let DIRS = []4. while I >= 0,a. if PARTS[I] = "node_modules" CONTINUEb. DIR = path join(PARTS[0 .. I] + "node_modules")c. DIRS = DIRS + DIRd. let I = I - 15. return DIRS
nodejs-模块系统相关推荐
- 基于源码剖析nodejs模块系统
nodejs模块系统 简介 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之, 一个 No ...
- Nodejs的模块系统以及require的机制
一.简介 Nodejs 有一个简单的模块加载系统.在 Nodejs 中,文件和模块是一一对应的(每个文件被视为一个独立的模块),这个文件可能是 JavaScript 代码,JSON 或编译过的C/C+ ...
- nodejs html引用js_NodeJS与模块系统
本文作者:刘观宇,360 奇舞团高级前端工程师.技术经理,W3C CSS 工作组成员. 孤山寺北贾亭西,水面初平云脚低.几处早莺争暖树,谁家新燕啄春泥.乱花渐欲迷人眼,浅草才能没马蹄.最爱湖东行不足, ...
- Nodejs中的模块系统
一.模块化的定义 ①具有文件作用域 ②具有通信规则:加载和导出规则 二.CommonJS模块规范 1.nodejs中的模块系统,具有文件作用域,也具有通信规则,使用require方法加载模块,使用ex ...
- NodeJS与模块系统
孤山寺北贾亭西,水面初平云脚低.几处早莺争暖树,谁家新燕啄春泥.乱花渐欲迷人眼,浅草才能没马蹄.最爱湖东行不足,绿杨阴里白沙堤. ---- 唐.白居易<钱塘湖春行> 自从 Node8.5 ...
- NodeJs 之模块系统
前言 随着前端的发展,工程模块儿化已经是必不可少的一部分了,为了让NodeJs的文件可以相互调用,NodeJs提供了一个简单的模块系统:简单点说:一个 nodeJs 文件就是一个模块儿 . 通过代码来 ...
- nodejs中的模块系统:exports导出模块
node中的模块系统 示例: 模块作用域 成功获取add: module.exports
- (七)nodejs循序渐进-模块系统(进阶篇)
模块系统 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js 文件就是 ...
- javascript中的模块系统
文章目录 简介 CommonJS和Nodejs AMD异步模块加载 CMD ES modules和现代浏览器 在HTML中使用module和要注意的问题 简介 在很久以前,js只是简单的作为浏览器的交 ...
- node中模块系统及核心模块、执行node文件
node中模块系统: 1.模块系统:核心模块.第三方模块. 自己写的模块. 2.网页中所有的路径都是URL,而不是文件路径. 3.node偏底层开发,开启的服务器完全是一个黑盒子,所有的资源默认都是不 ...
最新文章
- 图像 DFT 尺寸转换
- 铃铛计数问题——分块
- 英雄联盟更新后服务器还在维护吗,英雄联盟今天维护到什么时候结束 11月12日停机更新维护公告...
- 高效的企业测试-单元和用例测试(2/6)
- PS教程第十一课:会打开 会关闭我回了
- 【转】Microsoft Graph 桌面应用程序
- redis-数据类型-string类型
- python123蟒蛇代码_巨蟒python全栈开发-第3天
- docker 容器的常用命令及配置
- java numberformat 方法_java.text.NumberFormat使用方法
- android x5 webview 第一次,android studio中配置X5 webview时的一个坑
- linux 可执行文件反编译,如何反汇编,修改,然后重新组装一个Linux可执行文件?...
- Linux驱动之Kconfig语法——学习笔记(11)
- 基于matlab的gmsk,基于matlab的gmsk
- firefox 网页无法播放视频问题
- 怎么简单的生成SSL证书
- springboot 自定义starter类
- 职场工作人员需不需要写日报
- android遥控杆控件,Android自定义滑杆控件SeekBar多功能版本
- 《游戏学习》Java版俄罗斯方块小游戏源码实战
热门文章
- 盘点互联网巨头奉献的十大开源安全工具
- svn 主干和分支项目代码更新与同步
- 前端框架——Jquery——基础篇2__获取DOM节点的值
- struts2中OGNL的访问
- 【转】电驴提示“该内容尚未提供权利证明,无法提供下载”之解决办法详解...
- Routeros双adsl线路基于ip分段策略路由
- ORz.....-0-
- 李开复给中国学生的第七封信:21世纪最需要的7种人才
- jquery书写一个简易的二级联动
- ZOJ Monthly, January 2013