前端模块加载规范

模块加载规范:CommonJS、AMD 和 CMD,而框架Node.js、RequireJS 和 Seajs 分别实现了上述规范。

没有这些模块加载规范时,加载模块是一种什么情况?
只能在HTML中通过

同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,因此停止了后续的文件加载(如图像)、渲染、代码执行。

js 之所以要同步执行,是因为 js 中可能有输出 document 内容、修改dom、重定向等行为,所以默认同步执行才是安全的。

2.带defer属性defer属性声明这个脚本中将不会有 document.write 或 dom 修改。浏览器将会并行下载 a.js 和其它有 defer 属性的script,而不会阻塞页面后续处理。注:所有的defer 脚本保证是按顺序依次执行的。

3.带async属性

async属性是HTML5新增的。作用和defer类似,但是它将在下载后尽快执行,不能保证脚本会按顺序执行。它们将在onload 事件之前完成。

defer属性在IE 4.0中就实现了,超过13年了!Firefox 从 3.5 开始支持defer属性 。

Firefox 3.6、Opera 10.5、IE 9 和 最新的Chrome 和 Safari 都支持 async 属性。可以同时使用 async 和 defer,这样IE 4之后的所有 IE 都支持异步加载。


感谢:

详解JavaScript模块化开发

Node中没搞明白require和import,你会被坑的很惨

ES6模块的import和export用法总结

浏览器加载 CommonJS 模块的原理与实现

JavaScript异步加载详解

你可能感兴趣的:(前端模块加载规范)