Node.js 中的模块化
- Module.exports
- exports
- require()
/* 原理 */var module = { exports: { ... }}var exports = module.exportsreturn module.exports
/* 应用 exports 接口对象 导出成员 */// exports.jsvar foo = 'hello'var bar = function (x, y) { console.log(x + y)}exports.bar = bar// require.jsvar reqRes = require('./exports.js')console.log(reqRes.bar(1, 1)) // 2console.log(reqRes.foo) // 报错
/* 应用 module.exports 导出成员 */// exports.jsvar foo = 'hello'var bar = function (x, y) { console.log(x + y)}module.exports = bar// require.jsvar reqRes = require('./exports.js')console.log(reqRes(1, 1)) // 2
ES6 Module
- export
- export default
- import
import()
import 是动态加载(编译时加载),require() 是动静加载(运行时加载)。
import() 函数能够实现动静加载,与 require() 不同的是,import() 函数是异步加载,require() 函数是同步加载。
/* 应用 export 导出成员 */// export.jsexport var a = 1export function sum (x, y) { console.log(x + y)}var age = [1, 2, 3, 4]var names = {'张三', '李四'}export age // 报错export {age}export {names as enNames}// import.jsimport {a, sum as add, age, enNames} from './export.js'
/* 应用 export default 导出繁多成员 */// export_default.jsexport default { name: '', props: '', data: '', methods: ''}// import.jsimport login from './export_default.js'