js模块化

41 阅读1分钟

主流的有commonJs(主要应用于服务器端node.js)和es6(主要应用于浏览器端,也支持服务器端node.js)

commonJs

导出方式
  1. module.exports = value
  2. exports.xxx = value
    PS:commonJs中每个模块默认有一个空对象,this,module.exports,exports 都是指向同一个空对象,无论怎么导出,最后导出的都是module.exports对象

es6

导出方式

  1. 默认导出: export default xxx
  2. 统一导出: 代码的最后 export {你要导出的东西}
  3. 分别导出: export const a = 1

PS:默认导出可以和其他两个同时使用

导入方式

  1. 全部导入: import * as name form 'xxx.js'
  2. 默认导入: import name(随便取名,前提是有默认导出) from 'xxx.js'
  3. 动态导入: import('xxx.js')

数据引用问题:

  1. 闭包:外面解构赋值出来的变量只是副本而已
  2. CommonJs: 导入的数据也是副本
  3. es6: 导入的数据是引用,占用同一块内存空间