ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 模块系统 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统 ### 创建模块 在 Node.js 中,创建一个模块非常简单,如下我们创建一个 hello.js 文件, 代码如下 ~~~ exports.world = function() { console.log('Hello World'); } ~~~ ### 引用模块 代码如下 ~~~ var hello = require('./hello'); hello.world(); ~~~ * Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象 其中export 是 module.exports的一个引用 如何创建一个对象模块 ~~~ function Hello() { var name; this.setName = function(thyName) { name = thyName; }; this.sayHello = function() { console.log('Hello ' + name); }; }; module.exports = Hello; ~~~ ~~~ //main.js var Hello = require('./hello'); hello = new Hello(); hello.setName('BYVoid'); hello.sayHello(); ~~~ 模块接口的唯一变化是使用 module.exports = Hello 代替了exports.world = function(){}。 在外部引用该模块时,其接口对象就是要输出的 Hello 对象本身,而不是原先的 exports。 模块的加载顺序 ![](https://box.kancloud.cn/3c633b91c44bd0ea6d61e015f10a9e75_479x601.png) ### 举例说明模块查找顺序 1.如果a是核心模块,直接返回核心模块 2.路径识别 require('/a') 从根目录寻找a require('./a') 相对当前路径 require('../a') 相对上一级路径 1.把a当作文件来处理 require('a') require('a.js') require('a.json') require('a.node') 2.把a当目录来处理 require('a/package.json') 通过寻找该文件里的main字断的路径来找到入口 如果main字断是 enter.js require('a/enter.js') require('a/index.js') require('a/index.json') require('a/index.node') 3.从node_modules里来寻找模块 require('a') require('node_modules/a') requre('./node_mod') ### 课后习题 1.编写一个模块,名为 math.js 模块有加减乘除是个功能