Node学习之----模块机制篇

我们来看张图, 看node与W3C组织、CommonJS组织、ECMAScript之间的关系。

Node借鉴来CommonJS的Modules规范实现了一套非常易用的模块系统,NPM对Packages规范
的完好支持使得Node应用在开发过程中事半功倍。

一、CommonJS 的模块规范

CommonJS中的大部分规范涵盖了模块、二进制、Buffer、字符集编码、I/O流、进程环境、文件系统、套接字、单元测试、Web服务器网关接口、包管理等。

1. 模块引用
模块示例代码如下:

var math = require(‘math‘); 

在CommonJS规范中,存在require()方法,这个方法接受模块标识,以此引入一个模块的API到当前上下文中。

2.模块定义

在模块中,上下文提供require()方法引入外部模块。对应引入的功能,上下文提供了exports对象用于导出当前模块的方法或者变量,并且它是唯一导出的出口。

例如:

// math.js
exports.add = function () {
 var sum = 0,
 i = 0,
 args = arguments,
 l = args.length;
 while (i < l) {
sum += args[i++];
 }
 return sum;
}; 

// program.js
var math = require(‘math‘);
exports.increment = function (val) {
 return math.add(val, 1);
}; 

3.模块标识

简单理解就是传递给require()方法的参数,必须使用小驼峰命名的字符串,或者使用相对路径,亦可使用绝对路径。

Tip: 可以没有.js文件名后缀。

CommonJS导出和引入机制,我们不需要考虑变量污染、命名空间等。

二、Node的模块实现

在Node中引入模块,要经历3个步骤:
(1) 路径引入
(2) 文件定位
(3) 编译执行

Node模块分两种,一种是Node提供的模块,称为核心模块;

欢迎关注公众号,进一步技术交流:

原文地址:https://www.cnblogs.com/cczlovexw/p/11770406.html

时间: 2024-11-14 11:18:29

Node学习之----模块机制篇的相关文章

Node学习HTTP模块(HTTP 服务器与客户端)

Node学习HTTP模块(HTTP 服务器与客户端) Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端.http.Server 是一个基于事件的 HTTP 服务器,它的核心由 Node.js 下层 C++部分实现,而接口由JavaScript封装,兼顾了高性能与简易性.http.request 则是一个HTTP 客户端工具,用于向 HTTP 服务器发起请求. 'http'模块提供两种使用方式: 作为服务端使用时,创建一个HTTP服务

Node.js之模块机制

文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 其实在JavaScript的发展中,它主要是在浏览器前端中被应用广泛.因为在实际应用中, JavaScript的表现能力主要取决于宿主环境的API支持程度, 在最早期,只有对BOM, DOM的支持,随着HTML5的出现,在浏览器中出现了更多,更强大的API供JavaScript调用,但是这些都是发生在前端,后端JavaScript的规范却远远落后.Java有class文件,Phthon有import机制,P

深入浅出Node.js (2) - 模块机制

2.1 CommonJS规范 2.1.1 CommonJS的出发点 2.1.2 CommonJS的模块规范 2.2 Node的模块实现 2.2.1 优先从缓存加载 2.2.2 路径分析和文件定位 2.2.3 模块编译 2.3 核心模块 2.3.1 JavaScript核心模块的编译过程 2.3.2 C/C++核心模块的编译过程 2.3.3 核心模块的引入流程 2.3.4 编写核心模块 2.4 C/C++扩展模块 2.4.1 前提条件 2.4.2 C/C++扩展模块的编写 2.4.3 C/C++扩

node学习--常用模块

Node的用处在于它本身提供的一系列的功能模块,用于与操作系统互动.常用内置模块如下: path:处理文件路径 fs:  操作文件系统 child_process: 新建子进程 util: 提供一系列的实用小工具 http: 提供HTTP服务器功能 url:用于解析URL querystring:解析URL中的查询字符串 crypto:提供加密和解密功能 注:包名如果跟内置模块重名,会优先加载内置模块,最好不要重名 在D:nodejs/node/1.js  新建一个1.js文件 1.在path文

Node.js的模块机制

模块加载过程: 路径分析 -> 文件定位 -> 模块编译 Node对引入过的模块都会进行缓存,以减少二次引入时的开销.缓存的是编译和执行之后的对象.require时对缓存中的模块是第一优先级的 路径分析 模块标识符:require的参数,按书写形式可以分成以下几类: 核心模块:如http,fs,path 文件模块 路径模块 相对路径模块:.或..开始 绝对路径模块:/开始 非路径形式的模块 核心模块 在Node.js源代码编译过程中就已经编译成二进制代码,加载速度超快: 优先级仅次于缓存,因此

Node.js入门:模块机制

CommonJS规范  早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来实现的,在这样的背景之下,一没有特色,二没有实用价值.但是随着JavaScript在前端的应用越来越广泛,以及服务端JavaScript的推动,JavaScript现有的规范十分薄弱,不利于JavaScript大规模的应用.那些以JavaScript为宿主语言的环境中,只有本身的基础原生对象和类型,更多的对

node的模块机制

Node.js模块的实现 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着墨不多.在后续介绍模块的使用之前,我认为有必要深入一下Node.js的模块机制. CommonJS规范 早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来实现的,在这样的背景之下,一没有特色,二没有实用价值.但是随着JavaScript在前端的应用越来越广泛,以及服务端J

Node.js中的模块机制

本文为读书笔记. 一.CommonJS的模块规范 Node与浏览器以及 W3C组织.CommonJS组织.ECMAScript之间的关系 Node借鉴CommonJS的Modules规范实现了一套模块系统,所以先来看看CommonJS的模块规范. CommonJS对模块的定义十分简单,主要分为模块引用.模块定义和模块标识3个部分. 1. 模块引用 模块引用的示例代码如下: var math = require('math'); 在CommonJS规范中,存在require()方法,这个方法接受模

深入浅出node(2) 模块机制

一)CommonJs 1.1CommonJs模块定义 二)Node的模块实现 2.1模块分类 2.2 路径分析和文件定位 2.2.1 路径分析 2.2.2 文件定位 2.3 模块编译 一) CommonJs  在CommonJs的官网上写着这样一句话 javascript:not just for browsers any more  CommonJs是一种规范,它涵盖了模块.二进制.Buffer.文件系统.包管理等,node就是借鉴了CommonJs的Modules规范实现了一套非常易用的模块