.NET Core/.NET5/.NET6 開源項目匯總13:模板引擎


開源項目是眾多組織與個人分享的組件或項目,作者付出的心血我們是無法體會的,所以首先大家要心存感激、尊重。請嚴格遵守每個項目的開源協議后再使用。尊重知識產權,共建和諧開源社區。

  模板引擎可以生成特定格式的文檔,用於軟件開發中生成具有相對規則的代碼文件,比如:數據訪問層、業務邏輯層、UI層等,使用模板可以大大提高開發效率。  

  模板引擎的實現方式有很多,最簡單的是“置換型”模板引擎,這類模板引擎只是將指定模板內容(字符串)中的特定標記(子字符串)替換一下便生成了最終需要的業務數據(比如網頁)。置換型模板引擎實現簡單,但其效率低下,無法滿足高負載的應用需求(比如有海量訪問的網站),因此還出現了“解釋型”模板引擎和“編譯型”模板引擎等。

1、Fluid 【最值得推薦】

Liquid 是一門開源的模板語言,由 Shopify 創造並用 Ruby 實現。它是 Shopify 主題的主要構成部分,並且被用於加載店鋪系統的動態內容。它是一種安全的模板語言,對於非程序員的受眾來說也非常容易理解。從 2006 年起,Liquid 就被 Shopify 所使用,現在更是被大量 web 應用所使用。

Fluid 是一個基於 Liquid 模板語言的開源 .NET 模板引擎。官網文檔非常詳細、簡單易容、是最值得推薦的模板引擎。

2、Scriban【推薦】

Scriban是一種用於.NET的快速、強大、安全和輕量級腳本語言和引擎,它主要是為文本模板開發的,具有用於解析Liquid模板的兼容模式。

  • 特征

    • 非常高效、快速的解析器和輕量級的運行時。CPU 和垃圾收集器友好。檢查基准以獲取更多詳細信息。
    • 由提供完整抽象語法樹的 Lexer/Parser 提供支持,快速、通用且健壯,比基於正則表達式的解析器更高效。
      • 用於錯誤報告的精確源代碼位置(路徑、列和行)
      • 將 AST 寫入腳本文本表示,使用Template.ToText,允許在內存中操作腳本並將它們重新保存到磁盤,對於往返腳本更新場景很有用
    • liquid使用Template.ParseLiquid方法 兼容提供許多擴展點的可擴展運行時
      • 雖然該liquid語言不如 scriban 強大,但此模式允許輕松遷移liquid到不同scriban語言
      • 使用AST 到文本模式,您可以liquid使用Template.ToText解析為的模板將腳本轉換為抄寫員腳本Template.ParseLiquid
      • 由於 Liquid 語言沒有嚴格定義,並且實際上有各種版本的 Liquid 語法,因此在使用帶有 scriban 的液體模板時存在一些限制,請參閱文檔中的Loquid支持獲取更多詳細信息。
    • 支持async/await評估腳本(例如Template.RenderAsync
    • 精確控制空白文本輸出
    • 全功能語言,包括ifelseforwhile表達式x = 1 + 2)、條件...等。
    • 函數調用和管道myvar | string.capitalize)復雜對象(javascript/json 之類的對象x = {mymember: 1})和數組(例如x = [1,2,3,4]
    • 允許將語句塊傳遞給函數,通常由wrap語句使用
    • 幾個內置函數多行語句,而不必包含每一行{{...}}
    • 安全解析器安全運行時,允許您控制公開的對象和函數
  • 語法着色

          可以安裝適用於 Visual Studio CodeScriban 擴展以獲取 scriban 腳本(不含 HTML)和 scriban html 文件的語法着色。

  • 文檔

  • 二進制文件

    • Scriban 可用作 NuGet 包: 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 3.2.1+ 開始,該軟件包附帶了源代碼,以便您可以將 Scriban 的使用內化到您的項目中。這在您無法輕松使用 NuGet 引用(例如 Roslyn 源生成器)的環境中非常有用。

  • 相關項目

    • dotliquid : 液體模板引擎的 .NET 端口
    • Fluid .NET 液體模板引擎
    • Nustache:.NET 的無邏輯模板
    • Handlebars.Net : handlebars.js 的 .NET 端口
    • Textrude:使用 Scriban 模板將 CSV/JSON/YAML 模型轉換為代碼的 UI 和 CLI 工具
3、NVelocity

NVelocity是一個非常不錯的模板引擎,可以用來生成文件、頁面等相關處理,非常高效和方便。它原先是在網站http://nvelocity.sourceforge.net/ 上維護,不過從0.41后,該網站就不再進行NVelocity更新了,現在可以在網站http://nvelocity.codeplex.com/上獲得最新版本的更新。

4、VTemplate

VTemplate模板引擎也簡稱為VT,是基於.NET的模板引擎,它允許任何人使用簡單的類似HTML語法的模板語言來引用.NET里定義的對象。當VTemplate應用於web開發時,界面設計人員可以和程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由程序開發人員關注業務邏輯編碼。VTemplate將.NET程序代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在ASP.NET WebForm開發之外又提供了一種可選的方案。 VTemplate也可以作為動態文本生成工具,生成HTML、XML、郵件、程序源代碼或其它文本等。

5、Mustachio

Mustachio 是一款輕量級且強大的模板引擎,可以用在網頁渲染、代碼生成器等需要模板引擎的場景。我用它是用在配置文件模板化的場景,在配置文件里面編寫一些模板語法,然后從 Cloud 拉取鍵值配置數據,來渲染配置文件,最后加載到程序中。和 Razor 比起來,它非常的簡單和輕,如果有這方面的需求可以考慮選擇它。

6、RazorEngine

Razor Engine,之前僅僅是ASP.NET MVC的一種View引擎,目前已經完全成為一種可以獨立使用的模版引擎,並且已經成為了CodePlex上一個開源的項目(http://razorengine.codeplex.com/)。對於使用過ASP.NET MVC Razor視圖引擎的朋友們一定已經領略過它的靈活性和易用性。T4模板采用的就是該引擎。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM