前端代码遵循的规范化

CommonJS 规范

优点:

  1. 所有代码在模块作用域内运行,不会污染其他文件
  2. require 得到的值是值的拷贝,即你引用其他 JS 文件的变量,修改操作了也不会影响其他文件
    缺点:
  3. 应用层面。在 index.html 中做 var index = require(’./index.js’) 操作报错,因为它最终是后台执行的,只能是 index.js 引用 index2.js 这种方式。
  4. 同步加载问题。CommonJS 规范中模块是同步加载的,即在 index.js 中加载 index2.js,如果 index2.js 卡住了,那就要等很久
AMD 规范
  1. 适用客户端
  2. 等待加载(同步加载问题)。
  3. 可以采用异步方式加载模块。AMD 是 Asynchronous Module Definition 的缩写,也就是 “异步模块定义”,记住这个 async 就知道它是异步的了
CMD 规范

CMD是 seajs 推崇的规范,CMD 则是依赖就近,用的时候再 require。
AMD 和 CMD 最大的区别是对依赖模块的执行时机处理不同,注意不是加载的时机或者方式不同,二者皆为异步加载模块

ES6 Modules 规范

优点:

  1. export 命令和 import 命令可以出现在模块的任何位置,只要处于模块顶层就可以。 如果处于块级作用域内,就会报错,这是因为处于条件代码块之中,就没法做静态优化了,违背了 ES6 模块的设计初衷。
  2. import 命令具有提升效果,会提升到整个模块的头部,首先执行
    ES6 Modules 规范和CommonJS 规范区别
  • CommonJS 模块是运行时加载,ES6 Modules 是编译时输出接口
  • CommonJS 输出是值的拷贝;ES6 Modules 输出的是值的引用,被输出模块的内部的改变会影响引用的改变
  • CommonJs 导入的模块路径可以是一个表达式,因为它使用的是require() 方法;而 ES6 Modules 只能是字符串
  • CommonJS this 指向当前模块,ES6 Modules 的 this 指向 undefined
  • ES6 Modules 中没有这些顶层变量:arguments、require、module、exports、__filename、__dirname
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值