將haml的專案改為html的最佳實踐方法


#1

目前專案是用haml,但小弟不會haml,考慮學習時間(要學也不如學slim haha),想要把專案改成用原本的html.erb開發。

目前考慮做法是新增html.erb但同時保留html.haml,測過如果同時存在就會去讀.html.erb。
保留舊檔原因是因為還是怕怕的,擔心之後出問題還可以參考。

使用工具是,https://haml2erb.org/,開發到哪邊再更新哪邊的haml -> html
而且也找不到一次把整個專案haml換掉的方法(有大大知道嗎?)

想請問各位大神對於小弟的做法有什麼看法嗎?或更好的實踐方法


#2

… 複製貼上,然後繼續複製貼上 … 結束 …

Rails 你可以去看產出的 HTML,然後複製回去改成 html.erb,把 haml 處的 string 變數貼回去,這邊就結束了哩|||

你可以在 haml 內增加些註解標籤,就可以知道作用段的頭尾位置,然後就真的貼一貼改一改之類的?

haml 的好處是不會造成結尾 tag 的增加遺失,不過效能應該滿慘的就是||| 且不如用 html validator 驗證之類的


#3

啊!對啊!我怎沒想到直接看產出的html最準了!因為我用converter好像產生錯誤,不是很可靠。


#4

其實Haml跟Slim都是差不多的東西
會Haml差不多也會Slim了

Haml這類東西的規則不過是十多條,讀懂其實也不用花多久
hamlit-把html寫得更好更快

現在有了hamlit,效能比slim其實還好一點點
當然這個大前端時代伺服器端寫的HTML其實也不一定很有用就是


#5

嘛,我給你一個需求,你會知道為啥我不寫 HAML …

<!-- layout/_header start -->
<html>
  <head></head>
  <body>
<!-- layout/_header end -->
<!-- layout/application start -->
    <div class="wrap">
    </div>
<!-- layout/application end -->
<!-- layout/_footer start -->
  </body>
</html>
<!-- layout/_footer end -->

其中 _header / _footer 用 HAML 來做會很搞笑 … 因為其當初開發意義就是怕缺 / 多 tag,所以用程式寫可以防止這件事情,但實際開發時其實還滿常見的 … so~ (當然你用包裹式的可以處理掉這問題,但對我而言並不是很直覺)

再來是 HAML 很難用輔助工具開發,畢竟別人都是出 HTML 哩,最後一根稻草應該是 … Python 的縮排設計,見上,因為希望能少 close tag,結果可能因為縮排關係一不小心反而弄更糟唄||| 簡單的來說 browser 都有容錯機制,但是 HAML 縮排數打錯是整個包裹的階層會亂掉的 … Orz" 以上


#6

HAML的效能vsLESSvsHTML是如何呢?
我看到有些人說HAML慢很多,但又有人說新的HAML比ERB快?
請問大大的看法?


#7

HTML(erb) 是把 <% %> 的部分變成 block,yield 應該是 @view_flowcontent_for 暫存),其餘都是 string concat

HAML 其實就是巢狀 call block 然後過程中加上 start / close(end) tag,所以每個 tag 都是完整的 block,且還要加上 HTML(erb) 的基數

LESS / SASS / coffeescript … 是隔壁棚的事情了,基本上和效能無關,因為最終都會編譯出對象的靜態檔案:CSS / JS,通常這類一次性成本都不算的,而 HAML 在結構上可能可以編譯成靜態中介檔,最佳狀況應該就全等於 HTML(erb) 而已,但實際上應該不太有辦法|||,因為可能會動態生成,類似迴圈之類的

anyway 上述的 block 在 Ruby 實作不外乎就是 proc / lambda( … 好像也沒別的方法),也當作是 call method 的次數唄,光內耗就不小,你應該可以想像我所說的差別就是

最後 … HAML 概念上應該"不可能"比 ERB 快|||,當然前提是等同結構 / 實作就是