美文网首页
Node.js模块系统

Node.js模块系统

作者: 贪恋冬天的幸福 | 来源:发表于2019-03-27 14:54 被阅读0次

Node.js 中的require方法接受以下几种参数的传递:

  • http、fs、path 等,原生模块
  • ./mod或../mod,相对路径的文件模块
  • /pathtomodule/mod,绝对路径的文件模块
  • mod,非原生模块的文件模块

文件模块

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

//hello.js
exports.world = function() {
      console.log('Hello');
}
//main.js
var hello = require('./hello');//"./"是当前目录,node.js默认后缀是js
hello.world();

//有时候我们只是想把一个对象封装到模块中
module.exports = function() {
}
//例如:
//hello.js
function Hello() {
     var name;
     this.setName = function(theName) {
         name = theName;
     }
     this.sayHello = function() {
         console.log('Hello ' + name);
     }
}
module.exports = Hello;

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

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

原生模块

通常在我们的代码经常使用原生模块,例如:

var http = require('http');
...
http.createServer(...);

Node.js 中自带了一个叫做 http 的模块,我们在代码中请求它并把返回值赋给一个本地变量,这把我们的本地变量变成了一个拥有所有 http 模块所提供的公共方法的对象。

模块加载策略

Node.js 中require的文件查找策略如下:
由于Node.js 中存在4类模块(原生模块和3种文件模块),模块在require内部中的加载优先级不同,查找策略如下:


可以看出require优先从文件模块的缓存中加载,若文件模块的缓存中不存在,则优先从原生模块中加载,当文件模块缓存中不存在,而且不是原生模块的时候,则从文件系统中加载实际的文件。

相关文章

  • Node.js教程(02)|基础知识篇(下)

    Node.js 模块系统 模块系统,便于各个文件之间的相互调用。在node.js中,模块就是文件,文件也是模块,这...

  • Node学习(6)--模块系统

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

  • node.js(十一)

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

  • Node.js - 模块系统

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

  • Node.js与内置模块

    目录: 认识Node.js fs文件系统模块 path路径模块 http模块 认识Node.js 为啥JavaSc...

  • Nodejs的模块引入与回调函数

    Node.js模块系统 在 Node.js 中,引入一个模块 如: var http=require('fs');...

  • node.js - 基础之module

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

  • 6-1 Node.js 模块

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

  • Node.js模块系统

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

  • Node(3)

    一、模块系统 1.什么是模块 Node.js中常用的核心模块有: http模块 fs文件系统模块 url模块 pa...

网友评论

      本文标题:Node.js模块系统

      本文链接:https://www.haomeiwen.com/subject/wbtzvqtx.html