assets pipline - 创建多个application.js

时间:2016-01-31 09:11:44

标签: ruby-on-rails asset-pipeline jruby

我们正在开发一个内部网应用程序的解决方案,该解决方案运行在chrome嵌入式框架和 移动设备(ios)

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

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

我们的设置: jruby,rails,puma

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

要添加到x = [1, 2, 3]; var k = String(x).trim; // k is now '1,2,3' 的答案,您需要查看创建其他资产文件(无法称为@vasfed):

application.js

以上内容基本上会将# app/views/layouts/application.html.erb <%= javascript_include_tag :application, (:cms if controller_name == "posts") %> application.js添加到您的布局中;如果控制器为cms.js,则cms 加载。

-

您需要将文件添加到PostsController初始化程序,并阻止assets.rb的manifest指令加载它:

application

然后,您可以根据需要将sprockets manifest directives文件添加到#app/initializers/assets.rb Rails.application.config.assets.precompile += %w( cms.js ) #app/assets/javascripts/application.js //= require_tree . //= stub cms 文件中:

cms.js