资产管道 - 创建多个 application.js

assets pipline - create multiple application.js

我们正在为运行在 Chromium 嵌入式框架上的 Intranet 应用程序开发一个解决方案,并且 移动设备(ios)

我们遇到了加载时间长的问题。该问题的一部分是我们的 application.js 超过 1MB (缩小)所以我们正在考虑通过将文件分成几个版本来减小文件的大小, 这样每个站点都可以调用 application.js 的优化形式,只包含它需要的 js 部分。 例如我们在某些页面上使用了 ckeditor - 因此 ckeditor 的资产只有在需要时才应交付。

我的问题是如何配置资产管道以生成 application.js

的多个版本

我们的设置: jruby,rails,美洲狮

您可以创建其他相同格式的 js 清单,并在 config/application.rb 中进行预编译:

config.assets.precompile << 'some_other_application.js'

以同样的方式包含在视图中。

要添加到 @vasfed 的答案,您需要查看创建其他资产文件(它们 不能 被称为 application.js ):

# app/views/layouts/application.html.erb
<%= javascript_include_tag :application, (:cms if controller_name == "posts") %>

以上内容基本上会将 application.jscms.js 添加到您的布局中; cms 如果控制器是 PostsController,则仅 被加载。

--

您需要将文件添加到 assets.rb 初始值设定项,并阻止 application 的清单指令加载它:

#app/initializers/assets.rb
Rails.application.config.assets.precompile += %w( cms.js )

#app/assets/javascripts/application.js
//= require_tree .
//= stub cms

然后您可以根据需要向 cms.js 文件中添加任意数量的 sprockets manifest directives

#app/assets/javascripts/application.js
//= require ckeditor/init