【翻譯】Scriban README 文本模板語言和.NET引擎
scriban
Scriban是一種快速、強大、安全和輕量級的文本模板語言和.NET引擎,具有解析liquid
模板的兼容模式
Github
目錄
- 【翻譯】Scriban是一種快速、強大、安全和輕量級的文本模板語言和.NET引擎,具有解析liquid模板的兼容模式
- 【翻譯】 Scriban language
- 【翻譯】Scriban runtime
// Parse a scriban template
var template = Template.Parse("Hello {{name}}!");
var result = template.Render(new { Name = "World" }); // => "Hello World!"
使用Liquid語言解析Liquid模板:
// Parse a liquid template
var template = Template.ParseLiquid("Hello {{name}}!");
var result = template.Render(new { Name = "World" }); // => "Hello World!"
語言非常通用,易於閱讀和使用,類似於liquid 模板:
var template = Template.Parse(@"
<ul id='products'>
{{ for product in products }}
<li>
<h2>{{ product.name }}</h2>
Price: {{ product.price }}
{{ product.description | string.truncate 15 }}
</li>
{{ end }}
</ul>
");
var result = template.Render(new { Products = this.ProductList });
注意
默認情況下, .NET對象的屬性和方法會自動以小寫和
_
命名,這意味著像MyMethodIsNice
這樣的屬性將被公開為my_method_is_nice
.這是默認約定,最初是為了匹配liquid
模板的行為。
如果要改變此行為,則需要使用MemberRenamer
委託
特性
- 非常高效,快速 解析器和輕量級的運行時. 對CPU和垃圾收集器友好. 查看 benchmarks獲取更多細節.
- 由Lexer / Parser提供一個完整的抽象語法樹,fast, versatile and robust(快速,通用且強大), 比基於regex的解析器更高效
- 錯誤報告:能提供精確的源程式碼位置 ,包括(path, column and line)
- 將AST寫入腳本文本的形式, 使用
Template.ToText
, 可以操作記憶體中的腳本並將其重新保存到磁碟, 對於 roundtrip(往返)的腳本更新方案是有用的
- 兼容
liquid
模板 可使用Template.ParseLiquid
方法- 雖然
liquid
語言不如scriban
強大, 但該模式從liquid
則更容易地遷移至scriban
- 在 AST to text 模式下,將對模板
Template.ParseLiquid
進行解析,替換成Template.ToText
,即可將liquid
腳本 轉換成scriban
腳本 - 由於 liquid 語言沒有嚴格定義 並且它有著不同版本的liquid語法,在使用scriban的liquid模板時會有一些限制, 查看此文檔了解詳情 liquid support in scriban
- 雖然
- 可擴展的運行時 提供許多擴展點
- 支援
async
/await
的腳本支援 (e.gTemplate.RenderAsync
) - 精確控制空白文本輸出
- 完整的語言特性 包括
if
/else
/for
/while
, expressions (x = 1 + 2
), conditions… etc. - 函數調用和管道 (
myvar | string.capitalize
) - Complex objects (複雜對象) (javascript/json like objects
x = {mymember: 1}
) and arrays (e.gx = [1,2,3,4]
) - 通常由
wrap
語句使用可以將 a block of statements (語句塊) 傳遞給函數, - 一些內置函數:
- Multi-line statements(多行語句) 不必在每行都使用
{{...}}
- Safe parser and safe runtime, 使您可以控制公開哪些對象和功能
Syntax Coloring(語法著色)
您可以安裝 Scriban Extension for Visual Studio Code 獲取 scriban 腳本 (without HTML) 和 scriban html文件的語法顏色提示
文檔
- 有關語言語法的說明,請參閱語言文檔。
- 內置函數見文檔內置函數列表。
- 有關編譯和運行模板的.NET運行時API的說明,請參閱運行時文檔。
- 有關支援liquid模板的更多詳細資訊,請參閱[Liquid support]文檔。
- 請參閱我的部落格文章”實現.NET的文本模板引擎“,了解一些幕後細節。
二進位包
兼容以下 .NET framework 版本:
- .NET Framework 3.5
- .NET Framework 4.0
- .NET Framework 4.5+ (supports asynchronous code and timeouts for regular expressions)
- .NET Standard1.1+ (some features are not available)
- .NET Standard1.3+ (which means .NET Core, Xamarin, UWP, Unity etc.)
還有提供簽名的NuGet包 Scriban.Signed
Benchmarks(基準測試)
Scriban 速度極快! 更多細節, 你可以查看此文檔 benchmarks(基準測試) 文檔.
License
該軟體是在BSD-Clause 2 license協議下發布的
相關項目
- dotliquid: Liquid模板語言的.NET埠。
- Fluid .NET liquid 模板引擎
- Nustache: .NET 無邏輯模板(Logic-less templates for .NET)
- Handlebars.Net: .NET port of handlebars.js
在線示例
- (//scribanonline.azurewebsites.net/): ASP.NET Core Sample.
Credits
Adapted logo Puzzle
by Andrew Doane from the Noun Project
作者
Alexandre Mutel aka xoofx.