Ruby on rails 3 如何使用Rails在HTML页面中嵌入JavaScript/CSS';资产管道?
我正在开发一个网页,内容完全由客户端JavaScript生成。index.html的唯一用途是引用JavaScript和CSS文档,它们是通过Rails的资产管道生成的。为了避免额外的请求,我想在生产中内联这些JavaScript和CSSRuby on rails 3 如何使用Rails在HTML页面中嵌入JavaScript/CSS';资产管道?,ruby-on-rails-3,asset-pipeline,Ruby On Rails 3,Asset Pipeline,我正在开发一个网页,内容完全由客户端JavaScript生成。index.html的唯一用途是引用JavaScript和CSS文档,它们是通过Rails的资产管道生成的。为了避免额外的请求,我想在生产中内联这些JavaScript和CSS 如何内联使用资产管道生成的JavaScript和CSS内容?您可能不想内联这些资产以提高生产性能。通过像CloudFront这样的CDN为它们提供服务,并在此过程中缓存它们,您的境况可能会好得多 这应该比删除2个很少发出的HTTP请求提供更好的性能提升。您可以
如何内联使用资产管道生成的JavaScript和CSS内容?您可能不想内联这些资产以提高生产性能。通过像CloudFront这样的CDN为它们提供服务,并在此过程中缓存它们,您的境况可能会好得多
这应该比删除2个很少发出的HTTP请求提供更好的性能提升。您可以使用
Rails.application.assets
在预编译后获取资产的内容。将此添加到index.html.erb
中:
不要忘记raw
,否则“
将变为”
等
注意这不是压缩的;对于生产,您可能需要内联压缩代码。为此,请将gem'uglifier'
添加到您的gem文件中,运行bundle,并使用以下命令:
<%= raw Uglifier.new(:copyright => false).compile Rails.application.assets['application.js'].to_s %>
false)。将Rails.application.assets['application.js']编译到\u%>
您还可以使用:Rails.application.assets.find_asset('api.css')。to_s
此页面不包含动态内容(实际上根本不包含正文内容)。它只包含对脚本和样式表的引用,所以我打算缓存整个响应并返回它,而不进行任何渲染。我相信这会比CDN更好,CDN仍然需要额外的请求。页面内容是用JavaScript构建的,数据是通过AJAX获取的,我相信保存此往返并尽早执行此AJAX调用是有益的:有一些第三方服务/库从html/css生成pdf和其他类型的文档。谢谢,很好用!而且,为了丑化JavaScript,Uglifier.compile Rails.application.assets['application.js']to_
。如果你想丑化而不加注释:false)。将Rails.application.assets['application.js']编译成_%>
丑化它的好技巧。我在答案中添加了这一点。我还必须在production.rb中设置config.assets.compile=true
,才能在生产中使用Rails.application.assets
)