開源項目是眾多組織與個人分享的組件或項目,作者付出的心血我們是無法體會的,所以首先大家要心存感激、尊重。請嚴格遵守每個項目的開源協議后再使用。尊重知識產權,共建和諧開源社區。
模板引擎可以生成特定格式的文檔,用於軟件開發中生成具有相對規則的代碼文件,比如:數據訪問層、業務邏輯層、UI層等,使用模板可以大大提高開發效率。
模板引擎的實現方式有很多,最簡單的是“置換型”模板引擎,這類模板引擎只是將指定模板內容(字符串)中的特定標記(子字符串)替換一下便生成了最終需要的業務數據(比如網頁)。置換型模板引擎實現簡單,但其效率低下,無法滿足高負載的應用需求(比如有海量訪問的網站),因此還出現了“解釋型”模板引擎和“編譯型”模板引擎等。
Liquid 是一門開源的模板語言,由 Shopify 創造並用 Ruby 實現。它是 Shopify 主題的主要構成部分,並且被用於加載店鋪系統的動態內容。它是一種安全的模板語言,對於非程序員的受眾來說也非常容易理解。從 2006 年起,Liquid 就被 Shopify 所使用,現在更是被大量 web 應用所使用。
Fluid 是一個基於 Liquid 模板語言的開源 .NET 模板引擎。官網文檔非常詳細、簡單易容、是最值得推薦的模板引擎。
- NuGet:https://www.nuget.org/packages/Fluid.Core
- GitHub:https://github.com/sebastienros/fluid
- 英文文檔:https://shopify.github.io/liquid
- 中文文檔:https://www.coderbusy.com/liquid
Scriban是一種用於.NET的快速、強大、安全和輕量級腳本語言和引擎,它主要是為文本模板開發的,具有用於解析Liquid模板的兼容模式。
-
特征
- 非常高效、快速的解析器和輕量級的運行時。CPU 和垃圾收集器友好。檢查基准以獲取更多詳細信息。
- 由提供完整抽象語法樹的 Lexer/Parser 提供支持,快速、通用且健壯,比基於正則表達式的解析器更高效。
- 用於錯誤報告的精確源代碼位置(路徑、列和行)
- 將 AST 寫入腳本文本表示,使用
Template.ToText
,允許在內存中操作腳本並將它們重新保存到磁盤,對於往返腳本更新場景很有用
liquid
使用Template.ParseLiquid
方法 兼容提供許多擴展點的可擴展運行時- 支持
async
/await
評估腳本(例如Template.RenderAsync
) - 精確控制空白文本輸出
- 全功能語言,包括
if
/else
/for
/while
、表達式(x = 1 + 2
)、條件...等。 - 函數調用和管道(
myvar | string.capitalize
)復雜對象(javascript/json 之類的對象x = {mymember: 1}
)和數組(例如x = [1,2,3,4]
)- 自定義函數通過
func
語句直接進入語言,並允許函數指針/委托通過alias @ directive
- 將來自運行時 API 的.NET 自定義函數與許多用於與 .NET 對象交互的選項進行綁定。
- 自定義函數通過
- 允許將語句塊傳遞給函數,通常由
wrap
語句使用 - 幾個內置函數:多行語句,而不必包含每一行
{{...}}
- 安全解析器和安全運行時,允許您控制公開的對象和函數
-
語法着色
可以安裝適用於 Visual Studio Code的Scriban 擴展以獲取 scriban 腳本(不含 HTML)和 scriban html 文件的語法着色。
-
文檔
-
二進制文件
- Scriban 可用作 NuGet 包:
- 與以下 .NET Standard 2.0+ 兼容(3.0 中的新增功能)
- 為了支持較舊的框架(.NET 3.5、4.0、4.5、.NET Standard 1.1、1.3,它們僅在不再受支持的較舊的 Scriban 2.x 中提供。
- 另外,Scriban.Signed NuGet包提供了簽名的程序集。
- Scriban 可用作 NuGet 包:
-
源嵌入
從 Scriban 3.2.1+ 開始,該軟件包附帶了源代碼,以便您可以將 Scriban 的使用內化到您的項目中。這在您無法輕松使用 NuGet 引用(例如 Roslyn 源生成器)的環境中非常有用。
-
相關項目
- dotliquid : 液體模板引擎的 .NET 端口
- Fluid .NET 液體模板引擎
- Nustache:.NET 的無邏輯模板
- Handlebars.Net : handlebars.js 的 .NET 端口
- Textrude:使用 Scriban 模板將 CSV/JSON/YAML 模型轉換為代碼的 UI 和 CLI 工具
-
在線演示
-
ASP.NET Core 示例: https://scribanonline.azurewebsites.net/
-
NVelocity是一個非常不錯的模板引擎,可以用來生成文件、頁面等相關處理,非常高效和方便。它原先是在網站http://nvelocity.sourceforge.net/ 上維護,不過從0.41后,該網站就不再進行NVelocity更新了,現在可以在網站http://nvelocity.codeplex.com/上獲得最新版本的更新。
VTemplate模板引擎也簡稱為VT,是基於.NET的模板引擎,它允許任何人使用簡單的類似HTML語法的模板語言來引用.NET里定義的對象。當VTemplate應用於web開發時,界面設計人員可以和程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由程序開發人員關注業務邏輯編碼。VTemplate將.NET程序代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在ASP.NET WebForm開發之外又提供了一種可選的方案。 VTemplate也可以作為動態文本生成工具,生成HTML、XML、郵件、程序源代碼或其它文本等。
- VTemplate 開源地址
- 參考示例 VTemplate.WebTester 項目:http://net-vtemplate.googlecode.com/svn/src/VTemplate.WebTester
- 參考博客:https://blog.csdn.net/my98800/article/details/50942293
Mustachio 是一款輕量級且強大的模板引擎,可以用在網頁渲染、代碼生成器等需要模板引擎的場景。我用它是用在配置文件模板化的場景,在配置文件里面編寫一些模板語法,然后從 Cloud 拉取鍵值配置數據,來渲染配置文件,最后加載到程序中。和 Razor 比起來,它非常的簡單和輕,如果有這方面的需求可以考慮選擇它。
Razor Engine,之前僅僅是ASP.NET MVC的一種View引擎,目前已經完全成為一種可以獨立使用的模版引擎,並且已經成為了CodePlex上一個開源的項目(http://razorengine.codeplex.com/)。對於使用過ASP.NET MVC Razor視圖引擎的朋友們一定已經領略過它的靈活性和易用性。T4模板采用的就是該引擎。