Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你的rails应用程序如何包含javascript?_Javascript_Jquery_Ruby On Rails_Ajax_Prototypejs - Fatal编程技术网

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

你的rails应用程序如何包含javascript?,javascript,jquery,ruby-on-rails,ajax,prototypejs,Javascript,Jquery,Ruby On Rails,Ajax,Prototypejs,我很好奇你的Rails应用程序是如何包含javascript的。例如: 您是否将所有js代码打包到一个文件中,并为所有请求提供服务 您是否根据控制器/操作有条件地加载某些js 您使用什么工具或技术,例如:asset_packager、yui压缩机、链轮、BigPipe灵感实现 一点背景:我在一个非常重JS的大型Rails应用程序上工作。目前,所有js都被缩小并从单个文件提供服务。这使得事情变得非常方便,因为所有的框架和小部件都随处可见。我开始质疑这种方法,让所有用户为他们可能永远看不到的js

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

  • 您是否将所有js代码打包到一个文件中,并为所有请求提供服务
  • 您是否根据控制器/操作有条件地加载某些js
  • 您使用什么工具或技术,例如:asset_packager、yui压缩机、链轮、BigPipe灵感实现
一点背景:我在一个非常重JS的大型Rails应用程序上工作。目前,所有js都被缩小并从单个文件提供服务。这使得事情变得非常方便,因为所有的框架和小部件都随处可见。我开始质疑这种方法,让所有用户为他们可能永远看不到的js付费似乎有点疯狂。将脚本包含的代码乱七八糟地放在一起似乎既糟糕又困难,因为站点的大部分内容都是通过ajax交付的

有人有什么建议可以分享吗


多谢

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


另外,请查看雅虎关于fast网站最佳实践的这篇文章:。此建议适用于所有网站,而不仅仅是rails。

需要考虑以下几个权衡:

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

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

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

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

您是否根据控制器/操作有条件地加载某些js

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

您使用什么工具或技术,例如:asset_packager、yui压缩机、链轮、BigPipe灵感实现

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