Rails3:javascript放置位置的好经验法则



为站点中的特定页面编写javascript时,您希望何时将该javascript转换为函数并将其包含在application.js中?

我看到了一些关于这样做(以及缩小或gzip)以最小化HTTP请求的建议。这是有道理的,但是可维护性呢?如果我有特定于一个视图的js代码,那么研究潜在的巨大application.js似乎需要做更多的工作。该代码可以嵌入到该视图中,也可以放在该视图文件夹中自己的.js(或.js.erb.rjs)文件中。

我看到了另一个建议,Rails会自动将所有javascript合并到一个文件中。这是真的吗?

TLDR:开发人员在编写javascript时应该为优化担心多少?

由于我已经一个月没有看到答案了,我将尽我目前所知回答这个问题。

Rails3.1(目前是候选版本4)引入了链轮,它将把Rails项目中的所有javascript编译成一个文件。它甚至还附带了缩小和压缩javascript的工具,以便一次将其全部交付给客户端。

与链轮相关的是Rails 3.1资产管道。据我所知,这是一个文件夹层次结构/抽象。Javascript可以分为3个文件夹:

/apps/assets/javscripts/
特定于应用程序的Javascript文件,包括application.js。这应该只包含要包含在项目中的javascript文件的清单。rails new工具将生成此文件,并在清单中包含jquery。

/lib/assets/javascripts/
由开发人员编写的Javascript文件更通用。(我的印象是,这将适用于您开发的javascript库,以便放入多个应用程序中)

/vendor/assets/javascripts/
第三方javascript文件(即JQuery、Modernizr)

这些文件夹中的所有文件都将显示在/assets/中的客户端,抽象出服务器端的文件路径。我认为这是为了帮助开发人员组织javascript文件。

回答我自己的问题

  • 将javascript函数放入单独的文件中,按逻辑对它们进行分组。我的测试应用程序指示.../assets/javascripts/中的子文件夹是可以的当且仅当子文件夹路径包含在清单中时。
    • I。E.将//= subfolder/js_file放入清单即可。如果js_file.../javascripts/subfolder/内,则不会放入//= js_file
    • DHH在他的演讲中提到了"13条规则"(链接如下)。如果一个文件夹中的javascript数量超过13,它就会开始显得混乱和难以管理。这将是将javascript文件分组到子文件夹中的好时机
  • 使用内置的Rails 3.1 minifier和压缩器(或安装首选gem)
  • 不时重构javascript代码。随着时间的推移,将函数移动到/lib/assets/javascripts/。(目标是最终识别出何时需要编写通用javascript函数,而不是特定于应用程序的函数,并消除此重构步骤)

更多资源

一篇博客文章,介绍Rails 3.1中的所有更改
DHH关于Rails3.1更改的谈话,2011年5月16日(约1小时)

相关内容

  • 没有找到相关文章

最新更新