Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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
Javascript Application.js超过1 Mb的rails_Javascript_Ruby On Rails_Ruby_Asset Pipeline - Fatal编程技术网

Javascript Application.js超过1 Mb的rails

Javascript Application.js超过1 Mb的rails,javascript,ruby-on-rails,ruby,asset-pipeline,Javascript,Ruby On Rails,Ruby,Asset Pipeline,我有一个rails应用程序,资产编译后的application.js占用了超过1MB的空间。这减慢了我整个网站的速度 我使用Apache、Rails 4、jQuery、大量JavaScript和AJAX。如果有人能给我指出正确的方向,我将非常感激 这在您的特定情况下可能不可行,但确实帮助我防止Application.js膨胀 我相信您知道,Application.js会将所有指定的文件(默认情况下,所有文件)编译成一个.js文件,并作为布局的一部分在每个页面中加载(默认情况下也是如此)。通常情况

我有一个rails应用程序,资产编译后的
application.js
占用了超过1MB的空间。这减慢了我整个网站的速度

我使用Apache、Rails 4、jQuery、大量JavaScript和AJAX。如果有人能给我指出正确的方向,我将非常感激

这在您的特定情况下可能不可行,但确实帮助我防止Application.js膨胀

我相信您知道,Application.js会将所有指定的文件(默认情况下,所有文件)编译成一个.js文件,并作为布局的一部分在每个页面中加载(默认情况下也是如此)。通常情况下,这会导致在每个页面中加载完全不必要的自定义脚本,从而降低整个应用程序的速度。我个人认为这种行为不可取。我发现对我的站点有效的只是在Application.js中包含我的“核心”javascript组件(jquery、bootstrap的js库以及与layout.html.erb本身相关的任何脚本),并在页面中指定需要它们的其余部分。例如:

application.js 请注意,它不包括
需求树。
。这很重要,因为这是指定包含整个assets/javascripts文件夹的行。本例中的“模板”是定义的.js文件,它属于layout.html.erb

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require bootstrap-sprockets
//= require template
//= require turbolinks
layout.html.erb 下面是我的布局的最后一部分,就在结束正文标记之前。这将在每个页面上加载application.js,然后加载视图中指定的任何js

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<% if content_for?(:javascript) %>
    <%= yield :javascript%>
<% end %>
…或者,更有效地假设您有许多带有自己脚本的页面

Rails.application.config.assets.precompile += %w( pages/* )
总之 我发现这项技术确实有助于减小Application.js的大小,并有助于进行良好的实践。我希望您觉得它有用,如果它与您的问题无关,请道歉。

这在您的特定情况下可能不可行,但确实帮助我避免了Application.js膨胀

我相信您知道,Application.js会将所有指定的文件(默认情况下,所有文件)编译成一个.js文件,并作为布局的一部分在每个页面中加载(默认情况下也是如此)。通常情况下,这会导致在每个页面中加载完全不必要的自定义脚本,从而降低整个应用程序的速度。我个人认为这种行为不可取。我发现对我的站点有效的只是在Application.js中包含我的“核心”javascript组件(jquery、bootstrap的js库以及与layout.html.erb本身相关的任何脚本),并在页面中指定需要它们的其余部分。例如:

application.js 请注意,它不包括
需求树。
。这很重要,因为这是指定包含整个assets/javascripts文件夹的行。本例中的“模板”是定义的.js文件,它属于layout.html.erb

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require bootstrap-sprockets
//= require template
//= require turbolinks
layout.html.erb 下面是我的布局的最后一部分,就在结束正文标记之前。这将在每个页面上加载application.js,然后加载视图中指定的任何js

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<% if content_for?(:javascript) %>
    <%= yield :javascript%>
<% end %>
…或者,更有效地假设您有许多带有自己脚本的页面

Rails.application.config.assets.precompile += %w( pages/* )
总之
我发现这项技术确实有助于减小Application.js的大小,并有助于进行良好的实践。我希望您觉得它很有用,如果与您的问题无关,请道歉。

您是否想过使用CDN托管的jQuery版本?能否提供未编译的application.js

Rails.application.config.assets.precompile += %w( pages/profile.js )

您也可以尝试使用或

您是否想过使用CDN托管的jQuery版本?能否提供未编译的application.js

Rails.application.config.assets.precompile += %w( pages/profile.js )

您也可以尝试使用或

感谢编辑Akarienta。感谢编辑Akarienta。嗨,康纳,非常感谢您如此详尽的回复。你的建议与我的情况很有关系。我会根据你的建议优化我的application.js文件。嗨,康纳,非常感谢你如此详尽的回复。你的建议与我的情况很有关系。我将根据您的建议优化application.js文件。