vue源码总结

文章探讨了在ES6之前,JavaScript的模块化方案,如CommonJS用于服务器,AMD用于浏览器。CommonJS采用同步加载,而AMD(CMD)则是异步的。闭包是实现模块化的基础,通过它来保护内部变量并提供公共接口。ES6引入了新的模块系统,对模块管理进行了标准化。
摘要由CSDN通过智能技术生成

第 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()
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值