2016-12-02 65 views
1

我正在Ruby on Rails中工作,並通過(rails g controller)生成控制器和視圖。它給我一個.css.scss文件和一個js.coffee文件。我認爲這是一個有效的文件擴展名形式,因爲它是通過Rails生成的。Rails中有兩個文件擴展名(即:.css.scss)是什麼?

如果一個文件有兩個文件擴展名,解釋代碼的程序如何知道使用哪一個?

即:

somefile.css.scss - > CSS或SCSS?

somefile.js.coffee - >的CoffeeScript或JavaScript?

回答

2

這些是預處理器。所以index.html是純html。 index.html.erb是啓用了嵌入式ruby的html。 index.js.coffee是一個JavaScript文件,您可以將其編寫爲coffeescript。 index.js.coffee.erb是一個JavaScript文件,你可以在CoffeeScript中編寫,並嵌入紅寶石(請注意,請儘量避免與僱員再培訓局的js)

在這裏閱讀更多:https://learn.co/lessons/asset-preprocessors-in-rails

功能理由使用,如在後述上面是能夠用一種語言編寫的,這種語言可以轉換成另一種語言,或者嵌入否則不可用的功能。 (簡而言之)

+0

所以文章說,它將它們從一個文件轉換爲另一個文件,這是否僅在Rails中有效,或者即使沒有Rails應用程序也是有效的? – the12

+1

其軌道資產管道的事情。紅寶石默認沒有這個。 – Kirka121

2

只有最後一個文件擴展名將會被使用:

somefile.css.scss將是一個SASS文件。

somefile.coffee.js將是一個JavaScript文件。

我假設Rails應用程序正在從CSS轉換爲SASS(奇怪的是,通常是其他方式),並且從CoffeeScript轉換爲JavaScript,這就是爲什麼它將文件命名爲這樣的原因。

+0

是否有一個功能原因爲什麼你會使用它? – the12

+1

不確定你的意思是「功能原因」。在這種情況下,它被用作提示以前文件的格式。另一個常見用法是指定一個最小化的文件,例如'somefile.min.js'。 –

1

始終將最新的擴展名假定爲文件擴展名。