Eri*_* Hu 25 javascript optimization ruby-on-rails-3
在为网站中的特定页面编写javascript时,您何时想将javascript转换为函数并将其包含在内application.js?
我已经看到了关于这样做(以及缩小或gzip-ing)的建议,以最小化HTTP请求.这是有道理的,但可维护性呢?如果我有一个特定于一个视图的js代码,那么看起来更有意义的是看一个潜在的大量application.js.该代码可以嵌入到该视图中,也可以放在该视图文件夹中的自己的.js(.js.erb或.rjs)文件中.
我已经看到另一个建议,Rails会自动将所有javascript合并到一个文件中.这是真的?
TLDR:开发人员在编写javascript时担心优化需要多少或多少?
Eri*_* Hu 48
由于我在大约一个月内没有看到答案,我将尽我所能回答这个问题.
Rails 3.1(目前在候选版本4)引入了sprockets,它将rails项目中的所有javascript编译成一个文件.它甚至还带有缩小和压缩javascript的工具,以便将它们全部交付给客户端.
与sprockets相关的是Rails 3.1资产管道.据我所知,这是一个文件夹层次结构/抽象.Javascripts可以进入3个文件夹:
/apps/assets/javscripts/
特定于应用程序的Javascript文件,包括application.js.这应该只包含要包含在项目中的javascript文件的清单.该rails new工具将生成此文件并在清单中包含jquery.
/lib/assets/javascripts/
开发人员编写的Javascript文件更通用.(我的印象是,这将是您开发的javascript库放入多个应用程序)
/vendor/assets/javascripts/
第三方javascript文件(即JQuery,Modernizr)
这些文件夹中的所有文件都将显示在客户端内部/assets/,从而抽象出服务器端文件路径.我认为这是为了帮助开发人员组织javascript文件.
回答我自己的问题
.../assets/javascripts/都ok 当且仅当子文件夹路径包括在清单.
//= subfolder/js_file清单的IE 将起作用.//= js_file如果js_file在里面就不会投入.../javascripts/subfolder//lib/assets/javascripts/一段时间.(目标是最终识别何时编写通用JavaScript函数而不是特定于应用程序的函数并消除此重构步骤)一篇博客文章,涵盖Rails 3.1中所有变化的内容
DHH关于Rails 3.1变化的讨论,2011年5月16日(~1小时)