CommomJS(Node)
每个文件是一个模块,有自己的作用域。
在一个文件中的变量、函数、类都是私有的。
定义模块:
// module.js
let name = '';
let hello = function () {
console.log(name);
};
module.exports = { name, hello }
// 或者
exports.hello = hello;
加载模块:
let module = require('./module.js');
module.sayName();
module.export跟exports的区别
module.exports 方法还可以单独返回一个数据类型(String、Number、Object...),而 exports 只能返回一个 Object 对象
所有的 exports 对象最终都是通过 module.exports 传递执行,因此可以更确切地说,exports 是给 module.exports 添加属性和方法
AMD: Asynchronous Module Definition 异步模块定义。
使用define定义模块
require方法加载模块
define(['module'], function() {
let name = '';
function hello() {
console.log(name);
}
return { hello }
})
使用模块:
// 通过 require 引入依赖
require(['module'], function(mod) {
mod.hello(); //
})
CMD
define(function(require, exports, module) {
// 通过 require 引入依赖
var otherModule = require('./otherModule');
// 通过 exports 对外提供接口
exports.myModule = function () {};
// 或者通过 module.exports 提供整个接口
module.exports = function () {};
})
ES6
export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。
定义模块
export default { name: '' }
使用模块
import people from 'a.js';
console.log(people); //
UMD: Universal Module Definition,通用模块定义规范。
其不是专门的规范,而是
- 0. 前言
- 1. 基础篇
- Node.js 入门介绍与安装
- Node.js运行模式与入门实例
- npm介绍及与Node.js关联
- Webpack 快速介绍及入门示例
- 模块
- webpack
- gulp
- 2. 进阶篇
- Node.js与Apache比较
- Node.js VS JavaScript
- CommonJS、AMD、CMD与ES6
- 3. 框架篇
- Node.js之Express快速介绍与入门示例
- 4. 实战篇
- 调试器监听
- webpack入门示例
- 5. 补充篇
- 语法
- 前端包管理工具:npm、cnpm、yarn
- 6. 问题解决篇
- webpack之options has an unknown property ‘contentBase‘. These properties are valid: