加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 资源如何在开发环境中预编译在ruby on rails上

发布时间:2020-12-16 19:32:16 所属栏目:百科 来源:网络整理
导读:为什么我们不能在开发环境中预编译资产?我知道sprockets基本上编译所有资产. 当我们进入生产环境时,我们运行命令: rake assets:precompile 但是在开发环境中,我们无法为它编译自己做任何事情. 两种环境中资产编译的行为有何不同? 解决方法 每个Web应用程
为什么我们不能在开发环境中预编译资产?我知道sprockets基本上编译所有资产.

当我们进入生产环境时,我们运行命令:

rake assets:precompile

但是在开发环境中,我们无法为它编译自己做任何事情.
两种环境中资产编译的行为有何不同?

解决方法

每个Web应用程序都包含一些图像和CSS文件,使其看起来很漂亮,还有一些JavaScript文件来处理用户交互和行为.如果资产加载速度更快,Web应用程序应该表现更好.有许多策略可以使资产快速加载,例如缩小,压缩(gzipping),缓存等.

在开发模式下,资产按清单文件中指定的顺序作为单独的文件提供.

这个清单app / assets / javascripts / application.js:

//= require core
//= require projects
//= require tickets

在生产环境中,Sprockets使用上面概述的指纹识别方案.默认情况下,Rails假定资产已经过预编译,并且将由Web服务器作为静态资产提供.

在预编译阶段,MD5从编译文件的内容生成,并在写入光盘时插入文件名. Rails助手使用这些指纹名称代替清单名称.

例如:

<%= javascript_include_tag "application" %>
<%= stylesheet_link_tag "application" %>

生成这样的东西:

<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script>
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen"
rel="stylesheet" />

注意:使用Asset Pipeline:cache和:concat选项不再使用,请从javascript_include_tag和stylesheet_link_tag中删除这些选项.

指纹识别行为由config.assets.digest初始化选项控制(对于生产,默认为true,对于其他所有选项,默认为false).

Precompiling Rails Assets for Development

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读