(三)、node.js的模块和包-创新互联

我们做东西不可能把所有的功能都放在一起,那样会相互影响,我们需要把他们分门别类,

成都创新互联公司专注于两当企业网站建设,成都响应式网站建设,商城网站建设。两当网站建设公司,为两当等地区提供建站服务。全流程按需网站设计,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

让他们各自执行各自的功能,这就是包或者模块,包和模块这两个概念经常地会用,其实他俩讲的是一个东西

而在node.js中一个文件就是一个包

下面我们就来具体的讲解一下:

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

创建一个module.js的文件,内容如下

var name;

function setName(thyName){
  name = thyName;
};

function sayHello(){
  console.log('Hello ' + name);
};

//导出模块
exports.setName = setName;
exports.sayHello = sayHello;
再创建一个文件getmodule.js
//获取模块   require('./文件名'),不需要后缀
var myModule = require('./module');

myModule.setName('MyDuoEr');
myModule.sayHello();

运行命令

(三)、node.js的模块和包

这个例子有点类似于创建一个对象,但实际上和对象又有本质的区别,因为
require 不会重复加载模块,也就是说无论调用多少次 require,获得的模块都是同一个。
我们在 getmodule.js 的基础上稍作修改:

//获取模块
var hello1 = require('./module');
hello1.setName('MyDuoEr'); 

var hello2 = require('./module');
hello2.setName('MyDuoEr 2'); 

hello1.sayHello();

运行命令

(三)、node.js的模块和包

运行后发现输出结果是 Hello MyDuoEr 2,这是因为变量 hello1 和 hello2 指向的是

同一个实例,因此 hello1.setName 的结果被 hello2.setName 覆盖,最终输出结果是
由后者决定的。

 覆盖 exports
有时候我们只是想把一个对象封装到模块中,例如:

function Hello() {
  var name;
  
  this.setName = function (thyName) {
    name = thyName;
  }; 

  this.sayHello = function () {
    console.log('Hello ' + name);
  };
};

exports.Hello = Hello;
此时我们在其他文件中需要通过 require('./singleobject').Hello 来获取
Hello 对象,这略显冗余,可以用下面方法稍微简化:

function Hello() {
  var name;
  
  this.setName = function(thyName) {
    name = thyName;
  };
  
  this.sayHello = function() {
    console.log('Hello ' + name);
  };
};

module.exports = Hello;

这样就可以直接获得这个对象了:

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

hello = new Hello();
hello.setName('MyDuoEr');
hello.sayHello();

注意,模块接口的唯一变化是使用 module.exports = Hello 代替了 exports.Hello=
Hello。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:(三)、node.js的模块和包-创新互联
分享地址:http://ybzwz.com/article/dhsdss.html