## 模块系统
为了让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 模块有加减乘除是个功能
- Less
- 课程规划
- Less概述
- 变量
- 混合
- 嵌套
- 继承
- 导入
- 函数
- 其他
- 实战
- ES6
- 课程规划
- ES6概述
- let和const命令
- 变量的解构赋值
- 字符串扩展
- 函数扩展
- 数组扩展
- Set和Map数据结构
- Symbol
- Generator 函数
- Promise对象
- Class语法
- Module 的语法
- ES7和ES8
- 实战
- VUE
- 课程规划
- vue概述
- vue实例
- 模版语法
- 计算属性和侦听器
- Class和Style的绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 过渡和动画
- 自定义指令
- 过滤器
- 响应式原理
- 实战课程
- Node
- 课程规划
- 课程概述
- node入门实例
- 模块系统
- 回调函数
- 全局对象
- 常用模块介绍
- 常用模块介绍-1
- 常用模块介绍-2
- 常用模块介绍-3
- npm使用
- express的使用
- express的使用-1
- webpack基础
- 实战
- 微信小程序
- 课程规划
- 课程概述
- 基本配置和生命周期
- wxml模版
- wxss
- wxs
- 组件
- 微信API
- 自定义组件开发
- 实战小程序
- Element
- 课程规划
- 课程概述
- 特性介绍
- 组件介绍-基础组件
- 组件介绍-表单组件
- 组件介绍-数据展示组件
- 组件介绍-提示组件
- 组件介绍-导航组件
- 组件介绍-其他组件
- 综合案例