深入浅出node.js:2 模块机制
2018-01-08 17:48
423 查看
经历了长长的后天努力过程,JavaScript不断被类聚和抽象,以更好地组织业务逻辑。从另一个角度而言,它也道出了JavaScript先天就缺乏一项功能:模块。
在其他高级语言中,Java有类文件,Python有import机制,Ruby有require,PHP有include和require。而JavaScript通过<script>标签引入代码的方式显得杂乱无章,语言自身毫无组织和约束能能力。不得不用命名空间等方式人为地约束代码,以求达到安全和易用的目的。
2.1 CommonJS规范
官方规范(ECMAScript)后端JavaCript的规范,缺乏:没有模块系统
标准库较少:
没有标准接口:
缺乏包管理系统:基本没有自动加载和安装依赖的能力
为此提出CommonJS,目前,它依旧在成长中,这些规范涵盖了模块、二进制、Buffer、字符集编码、IO流、进程环境、文件系统、套接字、单元测试、Web服务器网关接口、包管理等。
CommonJS的模块规范:主要分为模块引用、模块定义和模块标识3部分。
2.2 Node的模块实现
在Node中引入模块,需要经历路径分析、文件定位和编译执行3个步骤。分为核心模块(启动时加载)和文件模块(用户编写的,动态加载)
优先从缓存加载:浏览器仅仅缓存文件,而Node缓存的是编译和执行之后的对象。
路径分析和文件定位:
模块编译:Node会新建一个模块对象,然后根据路径载入并编译,缓存在Module._cache对象上,以提高二次引入的性能。
2.3 核心模块
分为C/C++编写的(src目录下)和JavaScript编写(lib目录下)JavaScript核心模块的编译过程:
C/C++核心模块的编译过程:
核心模块的引入:require("os")
编写核心模块:
2.4 C/C++扩展模块
JavaScript的一个典型弱点就是位运算,只有double型的数据类型,在进行位运算的过程中,需要将double型转换为int型应用中会频繁出现位运算的需求。
2.5 模块调用栈
模块之间的调用关系2.6 包与NPM
CommonJS的包规范的定义:有包结构和包描述文件两个部分组成。包结构:
package.json:包描述文件
bin:
lib:存放JavaScript代码的目录
doc:
test:
包描述文件与NPM:P51
2.7 前后端共用模块
模块的侧重点:AMD规范:CommonJS模块规范的一个延伸
CMD规范有国内的玉伯提出
兼容多种模块规范:
相关文章推荐
- 深入浅出Node.js(三):深入Node.js的模块机制
- 【深入浅出Node.js系列三】深入Node.js的模块机制
- 【深入浅出node.js】读书摘录2 - node.js模块机制
- 深入浅出Node.js (2) - 模块机制
- 深入浅出Node.js(三):深入Node.js的模块机制
- 深入浅出Node.js(三):深入Node.js的模块机制
- 深入浅出Node.js(三):深入Node.js的模块机制
- 深入浅出Node.js(四):Node.js的事件机制
- 深入浅出Node.js(四):Node.js的事件机制
- 深入浅出Node.js(八):Connect模块解析(之二)静态文件中间件
- Node.js 模块加载机制
- Node.js中的模块机制学习笔记
- 深入浅出Node.js(七):Connect模块解析(之一)
- 深入浅出Node.js(七):Connect模块解析(之一)
- Node.js笔记之模块机制
- 深入浅出Node.js(八):Connect模块解析(之二)静态文件中间件
- Node.js的模块载入方式与机制
- 深入浅出Node.js(三):深入Node.js的模块机制
- 深入浅出Node.js(四):Node.js的事件机制
- 2. node.js 模块管理机制