alamedajs/almondjs/requirejs 三者差异及使用场景

almondjs 和 alamedajs 都是为了满足某些轻量使用requirejs的开发者而出现的轻量化的AMD加载器。基本的API都保持一致。

* 三者的功能完整度:requirejs>alamedajs>almondjs

* 文件的体积:requirejs>alamedajs>almondjs

alamedajs

1、不兼容低版本的浏览器,它的目标兼容浏览器是chrome、safari、IE10+等其他现代标准浏览器,不支持ie<=9,因为源码用ES5写的,使用到了一些ES5特性,比如Array.isArray, forEach等等。

2、省去了很多兼容代码,并且用了一些高级的API,所以代码总体积减比requirejs减少了35%左右。

3、源码使用了Promise,所以IE10\11如果要使用alamedajs需要再引入一个Promise polyfill或者直接用almameda-prim这个支持Promise的版本。

使用场景:只需兼容标准浏览器的项目,可以代替requirejs使用

almondjs

1、没有内置加载器,不能加载远程模块

2、因为不能加载远程模块,所以需要将项目的所有模块打包到一个JS文件里

3、只能使用一次requirejs.config

4、阉割了一些requirejs的功能,比如require.toUrl,require.nameToUrl等

5、每个模块必须有模块ID,因为所有模块最终会被打包到一个文件里,不能通过文件名来标识。这个可以通过requirejs的优化工具(r.js)来自动解决。

使用场景:纯打包成一个bundle文件的项目。

总结:不同项目为了优化极致,可以使用不同阉割程度的加载器,减少带宽消耗,提高运行效率

猜你喜欢

转载自12d.iteye.com/blog/2282949
今日推荐