vue源码总结

第 1 行至第 10 行

模块化知识

在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。

  • CommonJS
  • CMD
  • AMD
  • ES6模块

具体可参考:模块化的全面总结

模块化变迁历史:函数=》对象=》闭包

闭包

拥有独立的词法作用域,内存中只会存在一份 copy。这不仅避免了外界访问此 IIFE 中的变量,而且又不会污染全局作用域,通过 return 暴露出公共接口供外界调用。这其实就是现代模块化实现的基础。

var module = (function(){
  var _count = 0;
  var fn1 = function (){
    // ...
  }
  var fn2 = function fn2(){
    // ...
  }
  //只有return的变量才可被外部访问
  return {
    count:_count,
    fn1: fn1,
    fn2: fn2
  }
})()
console.log('module',module)

CommonJS

同步加载,它使用 require 引用和加载模块,exports 定义和导出模块,module 标识模块。使用 require 时需要去读取并执行该文件,然后返回 exports 导出的内容。

CMD

CMD规范专门用于浏览器端,模块的加载是异步延迟加载,AMD是异步提前加载

define(function (require) {
  var m1 = require('./module1')
  var m4 = require('./module4')
  m1.show()
  m4.show()
})

版权声明:本文为lgdaren原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。