繁体   English   中英

你的rails应用程序如何包含javascript?

[英]How does your rails app include javascript?

我很好奇你的Rails应用程序如何包含javascript。 例如:

  • 你把所有的js代码打包成一个文件并为所有请求提供服务吗?
  • 你有条件地加载某些js取决于控制器/动作?
  • 您使用什么工具或技术,即:asset_packager,yui压缩器,链轮,BigPipe启发实现?

一点背景:我正在开发一个非常JS的大型Rails应用程序。 目前,所有js都被缩小并从单个文件中提供。 这使得事情变得非常方便,因为所有框架和小部件都可以在任何地方使用。 我开始质疑这种方法是让所有用户付出他们可能永远看不到的一些js的价格似乎有点疯狂。 由于网站的大部分内容通过ajax提供内容,因此使用脚本包含乱码代码似乎很糟糕且困难。

有人有任何建议可以分享吗?

非常感谢!

需要考虑几个权衡因素:

  • 如果你有一个大的JS文件,那么应该为你的所有页面缓存它。 但是如果只有几页使用JS那么这就不好了。
  • 如果您的页面不共享JS,那么您可能希望为每个页面的单个JS使用“按需”加载。 但是你不需要太多的加载,因为每个JS fetch都有自己的开销。

笔记

  • 确保所有JS都将永远缓存在您的客户端上。 在文件名或URL中使用版本号(foo.js?123)
  • 确保JS文件最小化。
  • 确保Web服务器已打开gzip编码。
  • 您可能希望为您的JS使用低成本的内容交付网络,例如亚马逊的Cloudfront或其竞争对手之一。

回答您的具体问题

您是否将所有js代码打包到一个文件中并为所有请求提供服务?

所有请求都获得一个JS的大文件,其中包含库代码和大多数页面使用的JS。 某些特定页面还会获得额外的JS文件。

你有条件地加载某些js取决于控制器/动作?

是的,对于几个非常重的JS页面,这些页面会获得一个额外的JS文件。 所有页面都获得了reg JS文件,并且它被缓存/可用于所有页面。

您使用什么工具或技术,即:asset_packager,yui压缩器,链轮,BigPipe启发实现?

  • YUI压缩机
  • S3用于提供我的assets.foo.com域名
  • rake任务合并/最小化多个JS源文件

首先,尝试使用Firefox的这个插件: http//developer.yahoo.com/yslow/ 它将帮助您确定缓慢的来源,并可以分析您的脚本使用情况并提出改进建议。

另外,请查看雅虎关于快速网站最佳做法的文章: http//developer.yahoo.com/performance/rules.html 此建议适用于所有网站,而不仅仅是rails。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM