2011-04-12 68 views
2

成爲新的Ruby on Rails學生/開發人員的樂趣之一就是不斷髮現新寶石,讓我的生活變得更有趣或更輕鬆。最近,我發現了「HAML」,這看起來是一個讓ERB代碼比以前更具可讀性的絕佳工具。但是,我想知道對於像我這樣的新開發人員來說,在早期擁抱像HAML這樣的工具是否是一個好主意,或者如果在我的Ruby/Rails代碼的熟練程度已經成熟之前再拖延下去會更聰明。我擔心,我認爲,過早地擁抱像HAML這樣的工具可能會阻礙我通過它提供的編碼「快捷方式」來充分理解Ruby。你有經驗的編碼員說什麼?HAML是經驗豐富的Ruby/Rails開發人員的更好工具嗎?

+0

正如僅供參考,Perl的Mojo和Mojolicious,相當於Padrino和Sinatra,與HAML一起工作。 – 2011-04-12 20:35:39

回答

6

這並不是說採取HAML路線會爲您提供一條捷徑,因爲它不像HAML抽象的東西(HTML除外),否則您可能會錯過。 HAML是ERB的替代品,而不是抽象。

有人說,我認爲這完全取決於你。如果你還沒有學到,我會考慮兩種情況,看看你更喜歡哪一種。我知道一些喜歡HAML的人,以及一些喜歡ERB的人。

還有一點需要指出的是ERB中有很多代碼,因此至少獲得ERB的一般要點有助於閱讀其他代碼。

+0

我現在更清楚地瞭解這顆寶石。感謝所有回覆的人,並感謝我給予我的「noob」問題這麼多建設性的幫助。我認爲,現在,我會在HAML中延期,儘管它可能不會持續很長時間。我在HTML方面已經很有經驗,所以看起來HAML會幫助我改進我的代碼。有了這個說法,似乎@SpyrosP的評論是有針對性的:我現在可以利用我的時間學習更多有用的東西,然後把注意力集中在稍後美化我的代碼上。 – 2011-04-12 17:57:33

+0

我同意你應該把時間放在其他更重要的概念上,然而選擇HAML vs.再培訓局(時間是正確的)完全取決於你。但是你似乎已經有了答案:) – 2011-04-12 18:04:47

+0

+1「HAML是替代ERB的,而不是抽象。」 HAML有助於擺脫HTML中惱人的重複。模板能力與ERB類似,我根據項目來回跳轉。 – 2011-04-12 20:30:46

3

我會爲後者投票。至少現在,堅持我的看法是更好的做法。主要原因是您可以花時間學習更有成效的東西,比如測試,路由,REST和其他更重要的東西。

這也是一個品味問題。 Haml很好,但我發現erb相當不錯,而且對於我需要做的事情來說非常棒。我也在考慮換用haml很長一段時間,但最後,我會堅持使用erb並繼續研究其他Rails問題。

您會注意到該主題的一些強烈意見。例如,費爾南德斯的Rails book完全使用haml,而敏捷rails使用erb。找出最適合自己的方法,但最好是在練習一段時間後再做。

1

Haml是一個偉大的工具,我認爲你不應該擔心使用它。它使你的HTML更具可讀性。它並沒有從Rails的核心ruby中學習任何東西。使用它並且喜歡它。

2

HAML是一個HTML抽象。除了空白問題外,它不會改變你自己寫Ruby的方式。

2

這一切都取決於您的工作流程。如果你有一個能夠在HAML中完成他的HTML的HTML人物,那將比使用靜態HTML並將其轉換爲HAML更有用。我從HAML切換回ERB,因爲將現有的HTML轉換爲ERB比將其轉換爲HAML要少。

+0

+1,這是當我堅持ERB並且是一個項目/團隊的決定。對於我自己的工作,或者如果我有一個熟悉HAML的人,那麼我會使用HAML,因爲我認爲它更清潔,並且有更好的機會獲得有效的HTML。 – 2011-04-12 20:32:59

+0

您是否使用過html2haml命令行工具?我用了幾次,它似乎工作得很好。 – johnmcaliley 2011-04-13 02:48:05

+0

@cowboycoded - 問題不在於轉換HTML,而是如果你希望你的HTML人能夠在實現後編輯你的視圖,說一個元素更新一個類或id。 – 2011-04-13 14:51:27

1

這裏是我會做什麼:

  1. 瞭解HTML,如果你還不知道它做好

  2. 瞭解如何使用ERB與HTML。這可能需要30分鐘。你只需將代碼放在<%%內,如果你想輸出一個變量的值,你可以使用等號:<%=%>。真的沒有太大的意義。但是和其他人一樣,你至少需要了解它是如何工作的,因爲它在視圖代碼示例中被廣泛使用......並且它也被用在yaml文件中。

  3. 然後花幾個小時學習HAML並用它代替erb。除了在JavaScript偏好和yaml文件中使用erb之外,在學習HAML之後,我從來沒有想過使用它。

國際海事組織,HAML是方式更清潔,不太容易出錯和比寫erb短得多。 HAML爲您關閉標籤,因此您不必將其放入代碼中,這會強制您編寫正確縮進的代碼,並且它有一些用於向HTML標記添加類和標識的優秀快捷方式。

我會有興趣聽到任何使用情況下,你們發現html.erb比html.haml更好。就像我說的,我不喜歡使用它的唯一地方是使用JavaScript代碼......因爲我發現縮進規則有時會遇到問題。

1

我很早就開始使用HAML,我非常喜歡它。儘管像所有工具一樣,它也有其用途。一些快速點

  1. 別忘了你可以同時擁有HAML和ERB模板在同一個項目......只是擴展名更改爲改變其使用。你不必承諾一個或另一個。
  2. HAML不會更改模板的ruby/rails一側...只能表示HTML,所以它不應妨礙您的學習。
  3. HAML比ERB慢。雖然在大多數情況下這是微不足道的(對最終用戶來說並不明顯),但如果你有一部分將會一遍又一遍地渲染,那麼請記住這一點。

只是一些想法。

1

因爲這是問4yrs前,我會繼續我的回答簡短,我只是想補充一點,HAML增加indentaion的該位,使得它更簡潔,可讀性(IMO)和非常相似的CoffeeScript和蟒蛇「風格「

- something.map do |x| 
    - # ... x 

VS

something.map do |x| 
    # ... x 
end 

是在每行必須添加-但這是因爲它是一個模板引擎(和格式)。

此外寫紅寶石,你有過濾器,所以你可以只加:ruby「塊」。而不是

:ruby 
    a = 1+1 
    multi = "line" 
%html 
    %body 
    /... 

<% 
    a = 1+1 
    multi = "line" 
%> 
<html> 
    <body> 
    <!-- ... 

因爲試圖紅寶石沒有結束語句是你只能通過安裝紅寶石的補丁版本做,也HAML已經在野外和兩個纖細及使用玉也很常見,haml只是前身,但更多的是「密切的標籤」vs「基於縮進」的風格和選擇。

相關問題