什么(amd)脚本加载器用于移动网站

时间:2013-02-20 17:40:38

标签: mobile local-storage requirejs amd

我正在开发新版移动网站。我正在研究使用amd脚本加载器,并将其缩小到require和lsjs。我知道这两者都有很多专业人士和骗子,但我试图将所有这些都用于我网站的移动版本。有没有人在移动级别有这个lib的经验?试着在这里讨论一下人们认为最好的方法。 (拥有1500名代表的人都想创建一个lsjs标签:))。也许这些图书馆的创作者(todd burke或richard backhouse)对此有一个看法

感谢

编辑:

感谢Simon Smith在下面提供了很好的信息。有没有人用过lsjs?它在速度方面看起来非常有前景,但没有用户群,文档或(我认为)require / curl的功能,但看起来仍然很有希望

2 个答案:

答案 0 :(得分:2)

我会说在您准备好投入生产之前使用RequireJS。然后编译脚本并用Almond替换RequireJS。这是James Burke(RequireJS的作者)制作的一个简单的库,所以你可以依靠它无缝地工作:

  

一些开发人员喜欢使用AMD API编写模块化JavaScript代码,   但在进行优化构建后,他们不希望包含完整版本   AMD装载机就像RequireJS,因为它们不需要所有这些   功能。某些用例(如移动设备)对文件非常敏感   尺寸。

     

通过在构建文件中包含杏仁,不需要RequireJS。   使用Closure Compiler和缩小时,杏仁约为1千字节   gzip压缩。

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   卷曲可能是一个不错的选择。

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 ......

     

小到RequireJS大小的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

答案 1 :(得分:0)

2014年,我遇到了同样的问题。为了使网站在移动设备上快速运行,我还有一些其他要求:

  • 足够小以进行内联(以避免向支付额外的请求税 将装载机装上)。
  • 内联的配置文件(摆脱请求)。
  • 使用纯JavaScript的配置文件(无解析开销)。
  • 让浏览器进行文件的实际加载(如今浏览器很聪明)。
  • 将所有异步加载的模块连接在一起。
  • 支持单页应用程序,这些应用程序包括使用分散的$(function(){...})构造的旧代码,但我坚持要延迟并异步加载jQuery以加快处理速度。

在评估了RequireJS,curl,lsjs和其他一些工具之后,我得出结论,它们都不足够接近我的项目需求。最终,我决定创建自己的lockandload AMD-loader。当时我没有开源,因为那意味着编写文档。但是我最近用新文档将其开源,以防其他人受益。