bsd虚拟货币搬砖
angula
0
scriban
目录
- 【翻译】Scriban是一种快速、强大、安全和轻量级的文本模板语言和.NET引擎,具有解析liquid模板的兼容模式
- 【翻译】 Scriban language( 待完成)
- 【翻译】Scriban runtime( 待完成)
原文Github:https://github.com/lunet-io/scriban#readme
Scriban是一种快速、强大、安全和轻量级的文本模板语言和
.NET引擎,具有解析liquid模板的兼容模式
// Parse a scriban templatevar template = Template.Parse("Hello {{name}}!");var result = template.Render(new { Name = "World" }); // => "Hello World!"
使用Liquid语言解析Liquid模板:
// Parse a liquid templatevar 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.g Template.RenderAsync)
- 精确控制空白文本输出
- 完整的语言特性 包括 if/else/for/while, expressions (x = 1 + 2), conditions... etc.
- 函数调用和管道 (myvar | string.capitalize) 自定义函数 通过func语句直接将函数自定义到语言中 通过alias @ directive可使用function pointers/delegates从runtime API绑定 .NET自定义函数,并提供许多与.NET对象接口的选项 。
- Complex objects (复杂对象) (javascript/json like objects x = {mymember: 1}) and arrays (e.g x = [1,2,3,4])
- 通常由wrap语句使用可以将 a block of statements (语句块) 传递给函数,
- 一些内置函数: arrays functionsdatehtmlmaths functionsobjectregex functionsstring functionstimespan
- 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的文本模板引擎",了解一些幕后细节。
二进制包
Scriban提供一个可获取的 NuGet 包:
兼容一下 .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.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2384272385@qq.com举报,一经查实,本站将立刻删除。