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文件的项目。
总结:不同项目为了优化极致,可以使用不同阉割程度的加载器,减少带宽消耗,提高运行效率