前端模块概览

大概7,8年前学习过前端模块的相关只是,那时候还是jQuery时代,前端模块的概念处于萌芽阶段。经过前端在这几年的疯狂迭代,前端模块的发展已经完全超过我的想象,如果不会写就不写出正规的前端代码了。这边就在这里简单总结一下前端模块的知识,所有知识均来自互联网。

 

模块的意义:

  • 增加可维护性
  • 减少全局污染
  • 可复用
  • 依赖管理

 

闭包的模块化

这种方式就是我以前学习过的模式。简单粗暴。

 

CommonJS规范

CommonJS是Node.js的模块和规范。适用于服务端。

CommonJS模块是同步加载的。对于后端来说同步加载没什么问题,但是对于前端同步加载是不能忍受的。

 

AMD规范

James Burke提出了AMD规范。RequireJS即AMD的一个实现。这是一个给前端使用的模块化方案。

AMD使用异步加载,解决了CommonJS在前端的不足。在后端也可以使用AMD规范,响应的工具是amdefine。

AMD规范定义了一个全局方法define,该方法用来定义和加载模块。

RequireJS后期提供了require方法来加载模块。

 

CMD规范

玉伯(支付宝前端工程师)提出CMD规范,并给出实现:sea.js

CMD使用懒加载,使得CMD本身更加接近CommonJS。

sea.js提供了 seajs.use 方法,来运行已经定义的模块。所有 define 的回调函数都不会立即执行,而是将所有的回调函数进行缓存,只有 use 之后,以及被 require的模块回调才会执行。

 

ES Module

ES6提供了模块化方案,统一了浏览器和服务端,采用了完全静态化的方式进行模块加载。

 

 

 

 

 

 

 

参考资料:

五分钟带你回顾前端模块化发展史

 

posted @ 2020-11-02 11:32  LaplaceDemon  阅读(364)  评论(0编辑  收藏  举报