NodeJS中模块概念及使用方法.pdfVIP

  • 0
  • 0
  • 约9.54千字
  • 约 10页
  • 2026-02-09 发布于北京
  • 举报

NodeJS中模块的概念

简介

上,JavaScript一直没有模块(module)体系,无法将一个大程序拆分成互相依赖

的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如Ruby的

require、Python的import,甚至就连CSS都有@import,但是JavaScript任何这

方面的支持都没有,这对开发大型的、复杂的项目形成了巨大。

在ES6中其实已经实现了JS中模块的概念,使用起来也非常简单,今后我们有时间再来介绍

ES6中模块的使用方式,然而今天我们主要学下Nodejs中模块的相关概念以及使用

方式

其实在这一课之前我们已经频繁的使用了Nodejs中的模块,还记得我们每次在写代码前

使用require(xx)引入的包吗?require()这个函数就是在引入模块到我们的项目中

在Nodejs中,文件和模块是一一对应的(每个文件被视为一个独立的模块),这个文

件可能是JavaScript代码,JSON或编译过的C/C++扩展,例如:

导出

1/**

*新建一个文件foo.js

*将这个js文件导出为模块

*/

exports.hellofunction(){

console.log(helloNodejs!);

7}

导入

1/**

*main.js

*main.js和foo.js在同一目录下

*在控制台中将会输出:helloNodejs!

*/

varfoo=require(./foo.js);//导入foo.js

foo.hello();

module.exports与exports的区别

Nodejs中的每一个模块都会自动创建一个module对象,同时module对象下有一个

叫exports的属性,可以将某个类的实例赋值给module.exports,从而导出这个类的

实例。

1/**

2*foo.js

3*导入方式:varfoo=require(./foo.js);

4*使用方式foo.hello();

5*/

6functionFoo(){}

7Foo.prototype.hello=function(){

8console.log(helloNodejs!);

9}

10

11module.exportsnewFoo();

1/**

2*foo.js

3*导入方式:varFoo=require(./foo.js);

4*使用方式varfoonewFoo();foo.hello();

5*/

6functionFoo(){}

7Foo.prototype.hello=function(){

8console.log(helloNodejs!);

9}

10

11module.exportsFoo;

上面是使用module.exports导出对象的实例,那么现在我们知道在模块中想导出方法或

者数据可以使用module.exports或exports,但是他们之间有什么区别呢?

看下面这段代码

1//2.js

2exports={a:123};//我们希望通过exports导出对象实例

3

4//1.js

5constbbrequire(./2.js);

6

7console.log(bb.a)//undefined

8

从上面的代码中我们知道模块本意想导出一个对象实例,但是在模块以后却发现这个

实例并不存在?

为什么会这样?

其实上面我们,在每个模块中都包含一个module的对象,这个对象有一个属性叫

exports,我们可以通过给module.exports赋值来导出对象,而在这个页面中还存在另外

一个对象exports,这个对象其实是指向module.exports属

文档评论(0)

1亿VIP精品文档

相关文档