Haml
Haml 是 HTML 的範本引擎。它旨在透過消除重複、反映文件所代表的基礎結構,並提供既強大又易於理解的優雅語法,讓撰寫 HTML 文件變得更輕鬆且更愉快。
基本用法
Haml 可從命令列或作為 Ruby 網路架構的一部分使用。第一步是安裝 gem
gem install haml
撰寫一些 Haml 後,您可以執行
haml render document.haml
將其編譯為 HTML。有關這些命令的更多資訊,請查看
haml --help
若要以程式方式使用 Haml,請查看 YARD 文件。
將 Haml 與 Rails 搭配使用
若要將 Haml 與 Rails 搭配使用,只需將 Haml 加入 Gemfile 並執行 bundle
即可。
gem 'haml'
如果您想用 Haml 取代 Rails 基於 ERB 的產生器,請將 haml-rails 也加入 Gemfile。
格式化
Haml 最基本的元素是建立 HTML 的速記
%tagname{:attr1 => 'value1', :attr2 => 'value2'} Contents
不需要結束標籤;Haml 會自動處理。如果您偏好 HTML 樣式的屬性,您也可以使用
%tagname(attr1='value1' attr2='value2') Contents
加入 class
和 id
屬性更為容易。Haml 使用與設定文件樣式的 CSS 相同的語法
%tagname#id.class
事實上,當您使用 <div>
標籤時,它會變得更容易。因為 <div>
是如此常見的元素,沒有名稱的標籤預設為 div。因此
#foo Hello!
變成
<div id='foo'>Hello!</div>
Haml 使用縮排來讓個別元素代表 HTML 結構。標籤的子項目縮排在父標籤下方。同樣地,會自動加入一個關閉標籤。例如
%ul
%li Salt
%li Pepper
變成
<ul>
<li>Salt</li>
<li>Pepper</li>
</ul>
您也可以將純文字作為元素的子項目
%p
Hello,
World!
也可以將 Ruby 程式碼嵌入 Haml 文件中。等號 =
會輸出程式碼的結果。連字號 -
會執行程式碼,但不會輸出結果。您甚至可以使用控制陳述式,例如 if
和 while
%p
Date/Time:
- now = DateTime.now
%strong= now
- if now > DateTime.parse("December 31, 2006")
= "Happy new " + "year!"
Haml 提供的工具遠多於此。請查看 參考文件 以取得完整詳細資料。
縮排
Haml 的縮排可以由一個或多個 tab 或空格組成。但是,縮排在給定的文件中必須一致。不能混用硬 tab 和空格,而且必須始終使用相同數量的 tab 或空格。
貢獻
歡迎貢獻,但在開始之前,請閱讀 指南。
在 fork 然後在本地複製儲存庫之後,安裝 Bundler,然後使用它來安裝開發寶石依賴項:~~~sh gem install bundler bundle install ~~~
完成後,您應該可以執行測試套件:~~~sh rake ~~~
此時,rake
應可執行而不會產生錯誤或警告,您也準備好開始處理您的修補程式!
請注意,如果您正在處理特定區域,您也可以只執行測試套件中的一個測試
ruby -Itest test/helper_test.rb -n test_buffer_access
Haml 目前支援 Ruby 2.0.0 及更新版本,因此請確保您的變更在 2.0+ 上執行。
團隊
目前維護者
校友
Haml 由 Hampton Catlin 建立,他是原始實作的作者。Hampton 不再參與日常編碼,但仍會諮詢語言問題。
Natalie Weizenbaum 多年來一直是 Haml「現代」Ruby 實作的主要開發者和架構師。
Norman Clarke 是 2012 年至 2016 年間 Haml 的主要維護者。
授權
Natalie 在 Haml 上的一些工作獲得 Unspace Interactive 的支援。
除此之外,實作在 MIT 授權下授權。
版權所有 (c) 2006-2019 Hampton Catlin、Natalie Weizenbaum 和 Haml 團隊
在此免費授予任何取得本軟體及其相關文件(「軟體」)副本的人,在不限於使用、複製、修改、合併、發布、散布、再授權和/或販售軟體副本的權利下,不受限制地處理軟體,並允許軟體提供給的人員在下列條件下執行相同動作
上述版權公告和此許可公告應包含在軟體的所有副本或實質部分中。
軟體依「現況」提供,不提供任何明示或暗示的保證,包括但不限於適銷性、特定目的適用性和非侵權的保證。在任何情況下,作者或版權持有人對於因軟體或軟體的使用或其他交易而產生的任何索賠、損害或其他責任,不論是基於合約、侵權或其他原因,概不負責。