我正在开始研发移动网站的新版本。我正在研究使用amd脚本加载器,并将其缩小到require和lsjs。我知道这两者都有很多专业人士和骗子,但我试图将所有这些都用于我网站的移动版本。有没有人在移动级别有这个lib的经验?试着在这里讨论一下人们认为最好的方法。 (拥有1500名代表的人都想创建一个lsjs标签:))。也许这些图书馆的创作者(todd burke或richard backhouse)对此有意见
谢谢
编辑:
感谢Simon Smith在下面提供了很好的信息。有没有人用过lsjs?它在速度方面看起来非常有前景,但没有用户群,文档或(我认为)require / curl的功能,但看起来仍然很有前景
我会说在您准备好投入生产之前使用RequireJS。然后编译脚本并用Almond替换RequireJS。这是James Burke(RequireJS的作者)制作的一个简单的库,所以你可以依靠它无缝地工作:
一些开发人员喜欢使用AMD API来编写模块化JavaScript,但在进行优化构建之后,他们不希望包含像RequireJS这样的完整AMD加载器,因为他们不需要所有这些功能。某些用例(如移动设备)对文件大小非常敏感。
通过在构建文件中包含杏仁,不需要RequireJS。当使用Closure Compiler和gzip进行缩小时,杏仁大约为1千字节。
https://github.com/jrburke/almond
编辑:
Curl.js也是一个选项。我没有使用它,但知道它比RequireJS小很多。做了一些研究,为什么:
RequireJS通过Curl执行以下操作(通过James Burke):
- 支持多版本/上下文,对模拟测试很有用,但是没有它就可以使用
- 支持通过require加载普通JS文件,不必是AMD模块
- 支持特殊检测并使用旧版本的jQuery(如果使用jQuery 1.7.1或更高版本,则不应该是一个问题)
- (目前)更好地支持简化包装的commonjs样式:define(function(require){});
简而言之,如果您只是在应用程序中处理AMD模块,不需要多版本/上下文支持,并且不使用简化的commonjs包装样式,或者使用旧的jQuery,那么curl可能是一个不错的选择。
https://groups.google.com/forum/?fromgroups=#!topic/requirejs/niUyLZrivgs
而Curl的作者:
RequireJS在curl.js以外的地方运行,包括WebWorkers和node.js.它也比curl.js有更多的“战斗测试”,这可能意味着它在边缘情况下的错误更少。 curl.js也缺少一些重要的功能,例如预加载隐式依赖项和支持AMD包装的commonjs模块。这些都是0.6版本(下周末)。
从好的方面来说,curl.js ......
小到要求的1/4大小 - 即使与js捆绑在一起!和domReady!插件仍然不到一半的大小。
加载模块比RequireJS更快,但在IE6-8或开发(非构建)环境中只有意义。
支持可插拔模块加载器,用于AMD以外的格式(例如,我们正在处理未包装的CJSM / 1.1和CJSM / 2.0)。
通过IOC容器(如wire.js(通过cram.js))支持基于配置的依赖关系管理。
支持内联css(通过cram.js)和css的连接(通过cram.js 0.3到年底)
https://github.com/cujojs/curl/issues/35#issuecomment-2954344
早在2014年,我遇到了同样的问题。我有一些额外的要求,以便在移动设备上快速建立网站:
在评估了RequireJS,curl,lsjs和其他一些人之后,我得出结论,他们中没有一个能够达到我项目所需要的水平。最终我决定创建自己的lockandload AMD-loader。我当时没有开源,因为这意味着编写文档。但我最近用新文档开源,以防其他人受益。