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'