Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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
Ruby on rails 3 如何使用Rails在HTML页面中嵌入JavaScript/CSS';资产管道?_Ruby On Rails 3_Asset Pipeline - Fatal编程技术网

Ruby on rails 3 如何使用Rails在HTML页面中嵌入JavaScript/CSS';资产管道?

Ruby 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生成。index.html的唯一用途是引用JavaScript和CSS文档,它们是通过Rails的资产管道生成的。为了避免额外的请求,我想在生产中内联这些JavaScript和CSS


如何内联使用资产管道生成的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