模块化开发

Node.js的模块化开发

传统非模块化开发有如下缺点:

  1. 命名冲突
  2. 文件依赖

前端标准的模块化规范:

  1. AMD - requirejs
  2. CMD - seajs

服务器端的模块化规范:

  1. CommonJs - Node.js

前端模块化规范和服务器端模块化规范的不同之处主要在:文件加载
对于前端的模块化:要加载js文件要从服务器端经过网络传输到浏览器端(一般是异步);
对于服务器端的模块化:js文件本来在服务器中,它的加载只需从磁盘加载到内存(同步)。

模块化相关的规则:

  1. 如何定义模块化:一个js文件就是一个模块化,模块内部的成员都是互相独立;
  2. 模块成员的导出和引入:
    导出模块成员的两种方式:exports和module.exports,还有一个是global(不常用)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 方法一:exports
var sum = function(a, b){
    return parseInt(a) + parseInt(b)
}
// 导出模块成员
exports.sum = sum;

// 在另一个js文件中引入并使用
var module = require('路径')//已经加载的模块会缓存,即使require多次也只有第一次有用
var result = module.sum(1 + 1)

// 方法二:module.exports
var sum = function(a, b){
    return parseInt(a) + parseInt(b)
}
// 导出模块成员
module.exports = sum;

// 在另一个js文件中引入并使用
var module = require('路径')
var result = module(1 + 1)

模块文件后缀的3种情况:.js、.json、.node

不加文件后缀的情况下,以上三种模块的加载优先级:.js -> .json -> .node



-->