JavaSE部分 (File類)
阿新 • • 發佈:2020-07-19
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
線上示例
- (https://scribanonline.azurewebsites.net/): ASP.NET Core Sample.
Credits
Adapted logo Puzzle
by Andrew Doane from the Noun Project
作者
Alexandre Mutel aka xoofx.