JavaScript模块化编程之require.js与sea.js

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript模块化编程之require.js与sea.js相关的知识,希望对你有一定的参考价值。

个人倾向于require.js

AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。
类似的还有 CommonJS Modules/2.0 规范,是 BravoJS 在推广过程中对模块定义的规范化产出。
还有不少??
AMD 即Asynchronous Module Definition,中文名是异步模块定义的意思。
CMD 即Common Module Definition通用模块定义,CMD规范是国内发展出来的,就像AMD有个requireJS,CMD有个浏览器的实现SeaJS,SeaJS要解决的问题和requireJS一样,只不过在模块定义方式和模块加载(可以说运行、解析)时机上有所不同 

requireJS主要解决两个问题

1、多个js文件可能有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器 
2、js加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应时间越长 

 

 

1.首先原理上的区别

sea.js遵循CMD规范.书写方式类似node.js的书写模板代码.依赖的自动加载,配置的简洁清晰.说白了就是懒加载.

require.js遵循AMD规范,CMD和AMD基本相同,最大的区别是就CMD是懒加载,AMD是预加载.

简单来说,就是sea.js属于懒加载,require.js属于预加载.

在这里,顺便扩展一下预加载和懒加载的优缺点

预加载:当第一次访问时将所有的文件加载出来

优点:第一次访问完成以后, 再次访问的速度会很快

缺点:第一次加载页面要等待很久.

懒加载:使用的时候才会加载对应的文件.

优点:第一次访问速度相对快点

缺点:再访问其他新的模块时速度会变慢.

 

2.书写上面的区别

都是用define来定义一个模板.通过require,exports,module三个参数来调动函数.

基本上他们的用法是大同小异的.不过要两点较大的区别是需要大家去注意的:

1)sea.js使用模块时用方法seajs.use,而require.js直接用require关键字

2)sea.js只使用一个模块时可以只传入一个字符串,但是require传入的必须是一个数组.

以上是关于JavaScript模块化编程之require.js与sea.js的主要内容,如果未能解决你的问题,请参考以下文章

《SPA设计与架构》之JavaScript模块化

js模块化编程之CommonJS和AMD/CMD

JS的模块化编程

再唠叨JS模块化加载之CommonJSAMDCMDES6

再唠叨JS模块化加载之CommonJSAMDCMDES6

Javascript模块化编程