Node.js模块系统

简介: Node.js模块系统 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。
+关注继续查看

Node.js模块系统

为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。

模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。

创建模块

在 Node.js 中,创建一个模块非常简单,如下我们创建一个 main.js 文件,代码如下:

var hello = require('./hello');
hello.world();

  

以上实例中,代码 require('./hello') 引入了当前目录下的 hello.js 文件(./ 为当前目录,node.js 默认后缀为 js)。

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

接下来我们就来创建 hello.js 文件,代码如下:

exports.world = function() {
  console.log('Hello World');
}

  

将对象封装到模块中:

//hello.js 
function Hello() { 
    var name; 
    this.setName = function(thyName) { 
        name = thyName; 
    }; 
    this.sayHello = function() { 
        console.log('Hello ' + name); 
    }; 
}; 
module.exports = Hello;

  

这样就可以直接获取到对象:

//main.js 
var Hello = require('./hello'); 
hello = new Hello(); 
hello.setName('BYVoid'); 
hello.sayHello(); 

  

模块接口的唯一变化是使用 module.exports = Hello 代替了exports.world = function(){}。 在外部引用该模块时,其接口对象就是要输出的 Hello 对象本身,而不是原先的 exports。

Node.js 中自带了一个叫做 http 的模块,我们在我们的代码中请求它并把返回值赋给一个本地变量。

从文件模块缓存中加载

尽管原生模块与文件模块的优先级不同,但是都会优先从文件模块的缓存中加载已经存在的模块。

从原生模块加载

原生模块的优先级仅次于文件模块缓存的优先级。require 方法在解析文件名之后,优先检查模块是否在原生模块列表中。以http模块为例,尽管在目录下存在一个 http/http.js/http.node/http.json 文件,require("http") 都不会从这些文件中加载,而是从原生模块中加载。

原生模块也有一个缓存区,同样也是优先从缓存区加载。如果缓存区没有被加载过,则调用原生模块的加载方式进行加载和执行。

从文件加载

当文件模块缓存中不存在,而且不是原生模块的时候,Node.js 会解析 require 方法传入的参数,并从文件系统中加载实际的文件。

 

 

摘自:http://www.runoob.com/nodejs/nodejs-module-system.html

目录
相关文章
|
2月前
|
存储 缓存 数据可视化
基于Vue.js+Node问卷调查系统的设计与实现(二)
基于Vue.js+Node问卷调查系统的设计与实现
105 0
基于Vue.js+Node问卷调查系统的设计与实现(二)
|
2月前
|
Web App开发 JavaScript NoSQL
基于Vue.js+Node问卷调查系统的设计与实现(一)
基于Vue.js+Node问卷调查系统的设计与实现
|
3月前
|
JavaScript 关系型数据库 MySQL
node.js+vue好未来团购网系统
在当今社会的高速发展过程中,产生的劳动力越来越大,提高人们的生活水平和质量,尤其计算机科技的进步,数据和信息以人兴化为本的目的,给人们提供优质的服务,其中网上购买团购商品尤其突出,使我们的团购方式发生巨大的改变。而线上团购,不仅需要在硬件上为人们提供服务网上团购,而且还可以省去许多时间去实体店选择团购商品,既可以吸引用户流量好,还可以购买团购商品,更要在软件上为需要服务的人提供必要的便利。于是好未来团购网系统便应运而生。 在好未来团购网系统的实现下,管理人员能够充分发挥信息化处理的优势,提高日常管理的处理速率。用户一方可以更好的享受信息化处理带来的便利。系统运行能够稳定且高效。并且人机友好程度
|
4月前
|
JSON 缓存 JavaScript
Node【模块系统】
Node【模块系统】
99 0
|
5月前
|
缓存 JavaScript
Node.js学习笔记(三) 模块系统
Node.js学习笔记(三) 模块系统
42 0
|
7月前
|
JavaScript 安全 前端开发
node.js异步模型插入万条excel数据,为了不搞挂系统怎么办?
node.js异步模型插入万条excel数据,为了不搞挂系统怎么办?
node.js异步模型插入万条excel数据,为了不搞挂系统怎么办?
|
8月前
|
JavaScript
node.js 学习入门(02 - fs系统模块)
node.js 学习入门(02 - fs系统模块)
node.js 学习入门(02 - fs系统模块)
|
9月前
|
前端开发 JavaScript 关系型数据库
基于Node+Vue+Express开发实现商城系统
基于Node+Vue+Express开发实现商城系统
基于Node+Vue+Express开发实现商城系统
|
10月前
|
JSON JavaScript 前端开发
JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】
JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】
JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】
|
11月前
基于Node+Vue.js高质量商城系统的开发
下面看一下开发的基于Node+Vue.js高质量商城系统的开发系统。
192 0
基于Node+Vue.js高质量商城系统的开发
相关产品
云迁移中心
推荐文章
更多