Node中的module

本节主要讲述Node中的module

JS模块规范

  • CommomJs
  • AMD

require及其运行机制

使用require加载模块

1
2
3
4
5
6
7
8
9
10
11
// person.js
var person = {
talk: function() {
console.log("this is talking")
},
listen: function() {
console.log("this is listinging")
}
}

module.export = person
  • 这样就实现了一个自定义模块

  • 该模块提供一个接口(person

  • 然后使用module.exports将该接口暴露给外部使用

  • 外部想要使用person.js的方法,需要使用require关键字引入该接口

1
2
var person = require('./person.js');
person.talk();

在引入模块时, 省略相对路径 “./“会导致错误

重复引入问题

面试题:为什么在node中,require()加载模块是同步而非异步

  • 一个作为公共依赖的模块,自然要一步加载到位

  • 模块的个数有限,且node会自动缓存已经加载的模块

  • nide程序运行在服务器端,很少遇到需要频繁重启服务的情况

require的缓存策略

Node会自动缓存经过require引入的文件,这样下次再引入不需要经过文件系统而是直接从缓存中读取

作用域

控制台中的this

挂载在global下

1
2
var a=10;
console.log(this.a) //10

脚本中的this

是一个空对象

object()