内容简介:Nodejs的模块化由于出现的较早,因此它遵循的是CommonJS规范,而非ES6的模块化。在Nodejs的模块化中,最常用到的有module对象、exports对象、require方法。其中module和exports用于输出模块,require用于引用模块。
Nodejs的模块化由于出现的较早,因此它遵循的是CommonJS规范,而非ES6的模块化。
在Nodejs的模块化中,最常用到的有module对象、exports对象、require方法。
其中module和exports用于输出模块,require用于引用模块。
一个简单的模块例子
示例代码:/lesson10/module1.js、/lesson10/require.js
先新建一个module1.js文件,代码如下:
module.exports.a = 1 module.exports.b = 2 let c = 3 复制代码
在require.js中,引入模块并打印:
const module1 = require('./module1') console.log(module1) 复制代码
可以看到打印结果:{ a: 1, b: 2 }。
这段代码的含义如下:
- module1.js对外输出了module.exports,module.exports为一个对象,它含有a和b属性。
- module1.js中虽然定义了变量c,但它只在module1.js这个模块中存在,从外部无法访问。
- 在require.js中引用module1.js,必须使用相对路径或绝对路径。
- 若引用时不带路径,而是直接使用模块名称,则会默认引用项目目录下的node_modules文件夹下的模块,如:
const module2 = require('module2') console.log(module2) // { a: 1, b: 2 } 复制代码
若此时项目目录下的node_modules文件夹下存在module2.js文件,则会引用该文件。
若不存在,则会查找系统的node_modules文件夹下,即全局安装的模块,是否存在module2。
若还不存在该模块,则会报错。
通过require导入的模块,可以被任意命名,因此写成const a = require('module2')也是可以的。
module.exports
上面这个例子中的模块导出,还可以省略module,直接写成exports.a = 1; exports.b = 1; ...。
但直接使用exports导出,也仅支持这种写法,若写成:
exports = { a: 1, b: 2 } 复制代码
在引用模块时,只能接收到{},也就是说exports只支持exports.a = 1;这样的语法。
如果要将整个模块直接定义为一个对象、函数、变量、类,则需要使用module.exports = 123。
如下:
示例代码:/lesson10/module3.js
module.exports = { a: 1, b: 2 } module.exports = 123 module.exports = { a: 1, b: 2, c: 3 } module.exports = function () { console.log('test') } module.exports = class { constructor(name) { this.name = name } show() { console.log(`Show ${this.name}`) } } 复制代码
module.exports可以让模块被赋值成任意类型,但需要注意的是此时module.exports类似于一个模块内的全局变量。
对它的重复赋值,只有最后的值有效,之前的值会直接被覆盖。
在这个例子中,module3.js模块最终导出为一个类。
因此,通常推荐使用module.exports,可以避免出错。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Android模块化改造以及模块化通信框架
- Laravel 模块化开发模块 – Caffienate
- 前端模块化架构设计与实现(二|模块接口设计)
- 模块化编程的实践者 disconver 更新了用户模块
- ASP.NET Core模块化前后端分离快速开发框架介绍之4、模块化实现思路
- JavaScript模块化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
图论算法理论、实现及应用
王桂平//王衍//任嘉辰 / 北京大学 / 2011-1 / 54.00元
《图论算法理论、实现及应用》系统地介绍了图论算法理论,并选取经典的ACM/ICPC竞赛题目为例题阐述图论算法思想,侧重于图论算法的程序实现及应用。《图论算法理论、实现及应用》第1章介绍图的基本概念和图的两种存储表示方法:邻接矩阵和邻接表,第2~9章分别讨论图的遍历与活动网络问题,树与图的生成树,最短路径问题,可行遍性问题,网络流问题,支配集、覆盖集、独立集与匹配,图的连通性问题,平面图及图的着色问......一起来看看 《图论算法理论、实现及应用》 这本书的介绍吧!