模块的作用: 抽离公共代码,隔离作用域, 避免变量冲突
- require node 和 ES6 都支持的引入
- export 和 export default 是ES6的API
- exports 和 model.exports 是 nodejs 的 API
export 和 export default 的区别
- export与export default均可用于导出常量、函数、文件、模块等
- 在一个文件或模块中,export、import可以有多个,export default仅有一个
- 通过export方式导出,在导入时要加{ },export default则不需要
- export能直接导出变量表达式,export default不行
export default function(){...} // 导出默认值,只能导出一个
import any from 'a.js' // 引入默认值,any 可以是任意名字, 不用{}
export let a = 1; // 变量
export fn(){...} // 函数
export class Class(){...} // 类
export {a, fn, Class as Class1 } // 末尾统一输出多个变量,导出重命名
import {a, fn, Class as Class1} from 'a.js' // export 的引入要加{},单个也要加;
import * as example from 'a.js'; // 引入整个模块
example.a // 使用模块,在有很多需要引入时,建议这种方法;
node模块 Node里面的模块系统遵循的是CommonJS规范 CommonJS定义的模块分为:模块标识(module)、模块定义(exports)、模块引用(require) exports = module.exports = {}; exports只是module.exports的引用(起辅助功能),require导入的内容是module.exports 推荐module.exports导出,require导入