资产管道 - 创建多个 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.js
和 cms.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
我们正在为运行在 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.js
和 cms.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