簡體   English   中英

資源如何在開發環境中預編譯在ruby on rails上?

[英]How assets precompile in development environment on ruby on rails?

為什么我們不能在開發環境中預編譯資產? 我知道sprockets基本上編譯所有資產。

當我們進入生產環境時,我們運行命令:

rake assets:precompile

但是在開發環境中,我們無法為它編譯自己做任何事情。 兩種環境中資產編譯的行為有何不同?

如果要在開發環境中預編譯資源,可以使用以下命令:

RAILS_ENV=development bundle exec rake assets:precompile

您可以使用config / development.rb在開發環境中預編譯資產

config.assets.debug = false

在大多數情況下,您不需要它,因為您的開發過程會更加困難。

每個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)。

預編譯Rails資產以進行開發

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM