Node.js模块系统node
为了让Node.js的文件相互调用,Node.js提供了一个简单的模块系统缓存
Node.js应用程序的组成就是由模块组成基本部分,文件和模块是一一对应的。ui
一个Node.js文件就是一个模块,这个文件能够是js代码,JSON 或者编译过的C/C++扩展。this
接下来写一个实例。spa
建立模块与引入模块很简单,首先咱们写一个hello.js文件 代码以下code
// 模块的主要逻辑 function Hello() { let name this.setName = function(argName) { name = argName } this.sayHello = function() { console.log('Hello' + name) } } module.exports = Hello //导出模块
exports 和 module.exports 的使用
若是要对外暴露属性或方法,就用 exports 就行,要暴露对象(相似class,包含了不少属性和方法),就用 module.exports。对象
而后写一个倒入模块的文件 main.jsip
const Hello = require('./hello') // 这里使用require导入刚刚写好的hello.js let hello = new Hello() hello.setName('思否') hello.sayHello()
服务端的模块的加载流程it
node.js中有原生模块和三种文件模块 ,在使用中只须要require,用起来很简单,可是内部的加载很复杂,其加载优先级也各有不一样,入下图所示io
按图中所示,无论是哪一种模块,加载机制都会优先检查文件是否在模块缓存区中,缓存区的意义在于防止某一个模块被反复加载。缓存区域分为两种,一种是文件模块缓存区,也就是咱们说的三种文件类型,还有一种就是原生模块缓存区,例如http fs等原生模块。