2011-11-18 12 views
4

只是亂搞Rails 3.1,它通過控制器分隔樣式表。Rails 3.1資產:每個控制器樣式表的優點是什麼?

我假設有這樣的好處,但我努力確定它們是什麼。似乎我必須在每個樣式表中包含scss變量/ mixins,並且查找我想要編輯的元素需要多一點時間,並且我的樣式很少適用於特定的控制器。

那麼,我錯過了什麼?什麼是「酷東西」:每個控制器樣式表?

回答

2

僅僅因爲它存在於腳手架中並不意味着它是有用的 - IMO最好是非常小衆的,也許如果你有一些針對控制器的非常有針對性的CSS。

我認爲每個控制器樣式表的一般用法很少見,但我很想聽聽其他意見。

1

從我聽到的解釋,它可以更容易地組織資源

基本上都得到合併,並在年底一起加載,所以真的,它只是組織。

+1

那真可惜。我仍然必須在佈局中編寫這個怪異的'>>',並將css與命名空間分開。 – jibiel

0

這將取決於你正在優化。默認方法允許您對樣式進行分區,並將其放入與當前作用域(控制器)匹配的文件中。這符合The Rails的做事方式。

在生產這些文件並不重要,因爲它們都捆綁在一起。在過去的美好時光中,你會有多次請求,因此性能受到影響。

當您想要最大限度地利用級聯,並優化整個站點的規則(如OOCSS方法)時,就會出現問題。

我更喜歡圍繞一個常見的重置文件構建我的CSS,佈局文件,並從那裏開始工作,構建和重構。

讓事情遍佈在許多文件中,使得事物始終處於你的鼻子之下,並且可能(恕我直言)導致構建CSS的門檻較低。

2

我覺得這個討論非常有趣,它讓我想起了舊時代人們懷疑面向對象有什麼價值。對我來說,有很多的相似之處:

在從面向對象的左側方面,從HTML世界的權利:

  • 類 - 每個控制器CSS文件
  • 方法 - 選擇例如與#id
  • 超類 - 導入到例如指南針框架文件(@import "compass/utilities/tables/scaffolding";

做Web應用程序時使用的所有文件,所有的意見,並使用不同的id S代表不同的視圖來表示它們應該以不同的呈現我們的培訓。通過使用每個控制器的樣式表,並向資產添加選項以將右側控制器的樣式表(僅)包含在內,您可以使用具有不同規則的相同#id,因此您可以共享佈局,然後以不同的方式呈現佈局。

一個簡單的例子可能是每個控制器樣式表表示背景顏色,所以通過調用來自不同控制器的動作,背景顏色顯示了你的工作環境。 (我不認爲這對於用戶來說是一個聰明的主意或者很好,但它在技術上是可行的。)

所以我認爲這個額外的技術本身就有一個價值,但是我們必須學習什麼這是好事。

0

儘管stylesheet-per-controller具有基於您正在構建的應用程序的潛在價值,但它對於每個應用程序當然都是不正確的。請記住,「所有樣式表一起編譯」的行爲僅僅是一種默認行爲 - 您可以更改主樣式表清單文件以包含您想要的內容,或者有許多不同的清單在生產中擁有不同的編譯文件。如果您正在尋找更多信息,請查看the Railscast on the asset pipeline

相關問題