Skip to content
IGeekFan 开发者文档IGeekFan 开发者文档
CMS
.NET指南
FreeKit
Docker
关于
博客
github icon
    • 开发起步
      • Newtonsoft.Json基础问题
        • 依赖注入scrutor
          • 认证与授权
            • 获取控制器及方法特性标签
              • 认证鉴权状态
                • 全局敏感词处理
                  • GitHub第三方授权登录
                    • QQ第三方授权登录
                      • CAP实现EventBus
                        • Scriban 模板语言
                          • 目录
                            • 特性
                              • Syntax Coloring(语法着色)
                                • 文档
                                  • 二进制包
                                    • Benchmarks(基准测试)
                                      • License
                                        • 相关项目
                                          • 在线示例
                                            • Credits
                                              • 作者

                                            Scriban 模板语言

                                            calendar icon2021年12月12日timer icon大约 5 分钟word icon约 1564 字

                                            此页内容
                                            • 目录
                                            • 特性
                                            • Syntax Coloring(语法着色)
                                            • 文档
                                            • 二进制包
                                            • Benchmarks(基准测试)
                                            • License
                                            • 相关项目
                                            • 在线示例
                                            • Credits
                                            • 作者

                                            # Scriban 模板语言

                                            # 目录

                                            • 【翻译】Scriban 是一种快速、强大、安全和轻量级的文本模板语言和.NET 引擎,具有解析 liquid 模板的兼容模式open in new window
                                            • 【翻译】 Scriban language( 待完成)
                                            • 【翻译】Scriban runtime( 待完成)
                                            • 原文 Github:https://github.com/lunet-io/scriban#readmeopen in new window

                                            Build Statusopen in new window Coverage Statusopen in new window NuGetopen in new window

                                            Scriban 是一种快速、强大、安全和轻量级的文本模板语言和.NET 引擎,具有解析liquid模板的兼容模式

                                            // Parse a scriban template
                                            var template = Template.Parse("Hello {{name}}!");
                                            var result = template.Render(new { Name = "World" }); // => "Hello World!"
                                            
                                            1
                                            2
                                            3

                                            使用 Liquid 语言解析 Liquid 模板:

                                            // Parse a liquid template
                                            var template = Template.ParseLiquid("Hello {{name}}!");
                                            var result = template.Render(new { Name = "World" }); // => "Hello World!"
                                            
                                            1
                                            2
                                            3

                                            语言非常通用,易于阅读和使用,类似于liquidopen in new window 模板:

                                            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 });
                                            
                                            1
                                            2
                                            3
                                            4
                                            5
                                            6
                                            7
                                            8
                                            9
                                            10
                                            11
                                            12

                                            注意

                                            默认情况下, .NET 对象的属性和方法会自动以小写和_命名,这意味着像MyMethodIsNice这样的属性将被公开为my_method_is_nice.这是默认约定,最初是为了匹配liquid模板的行为。 如果要改变此行为,则需要使用 MemberRenamer 委托

                                            # 特性

                                            • 非常高效,快速 解析器和轻量级的运行时. 对 CPU 和垃圾收集器友好. 查看
                                            • benchmarksopen in new window获取更多细节.
                                            • 由 Lexer / Parser 提供一个完整的抽象语法树,fast, versatile and robust(快速,通用且强大), 比基于 regex 的解析器更高效
                                              • 错误报告:能提供精确的源代码位置 ,包括(path, column and line)
                                              • 将 AST 写入脚本文本的形式, 使用 Template.ToTextopen in new window, 可以操作内存中的脚本并将其重新保存到磁盘, 对于 roundtrip(往返)的脚本更新方案是有用的
                                            • 兼容liquid 模板 可使用Template.ParseLiquid 方法
                                              • 虽然 liquid 语言不如scriban强大, 但该模式从 liquid 则更容易地迁移至 scriban
                                              • 在 AST to textopen in new window 模式下,将对模板Template.ParseLiquid进行解析,替换成Template.ToText,即可将liquid 脚本 转换成 scriban 脚本
                                              • 由于 liquid 语言没有严格定义 并且它有着不同版本的 liquid 语法,在使用 scriban 的 liquid 模板时会有一些限制, 查看此文档了解详情 liquid support in scribanopen in new window
                                            • 可扩展的运行时 提供许多扩展点
                                            • 支持 async/await 的脚本支持 (e.g Template.RenderAsync)
                                            • 精确控制空白文本输出open in new window
                                            • 完整的语言特性open in new window 包括 if/else/for/while, expressions (x = 1 + 2), conditions... etc.
                                            • 函数调用和管道open in new window (myvar | string.capitalize)
                                              • 自定义函数open in new window 通过func语句直接将函数自定义到语言中 通过alias @ directive可使用function pointers/delegates
                                              • 从 runtime API 绑定 .NET 自定义函数open in new window,并提供许多与.NET 对象接口的选项open in new window 。
                                            • Complex objects (复杂对象) (javascript/json like objects x = {mymember: 1}) and arraysopen in new window (e.g x = [1,2,3,4])
                                            • 通常由wrap语句使用可以将 a block of statements (语句块)open in new window 传递给函数,
                                            • 一些内置函数open in new window:
                                              • arrays functionsopen in new window
                                              • dateopen in new window
                                              • htmlopen in new window
                                              • maths functionsopen in new window
                                              • object
                                              • regex functionsopen in new window
                                              • string functionsopen in new window
                                              • timespan
                                            • Multi-line statements 多行语句open in new window 不必在每行都使用
                                            {{...}}
                                            
                                            1
                                            • Safe parseropen in new window and safe runtimeopen in new window, 使您可以控制公开哪些对象和功能

                                            # Syntax Coloring(语法着色)

                                            您可以安装 Scriban Extension for Visual Studio Codeopen in new window 获取 scriban 脚本 (without HTML) 和 scriban html 文件的语法颜色提示

                                            # 文档

                                            • 有关语言语法open in new window的说明,请参阅语言文档。
                                            • 内置函数见文档内置函数open in new window列表。
                                            • 有关编译和运行模板的.NET 运行时 API 的说明,请参阅运行时open in new window文档。
                                            • 有关支持 liquid 模板的更多详细信息,请参阅[Liquid support]文档。
                                            • 请参阅我的博客文章"实现.NET 的文本模板引擎open in new window",了解一些幕后细节。

                                            # 二进制包

                                            Scriban 提供一个可获取的 NuGet 包: NuGetopen in new window

                                            兼容以下 .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.Signedopen in new window

                                            # Benchmarks(基准测试)

                                            Scriban 速度极快! 更多细节, 你可以查看此文档 benchmarks(基准测试) 文档open in new window.

                                            # License

                                            该软件是在BSD-Clause 2 licenseopen in new window协议下发布的

                                            # 相关项目

                                            • dotliquidopen in new window: Liquid 模板语言的.NET 端口。
                                            • Fluidopen in new window .NET liquid 模板引擎
                                            • Nustacheopen in new window: .NET 无逻辑模板(Logic-less templates for .NET)
                                            • Handlebars.Netopen in new window: .NET port of handlebars.js

                                            # 在线示例

                                            • https://scribanonline.azurewebsites.net/)open in new window: ASP.NET Core Sample.

                                            # Credits

                                            Adapted logo Puzzle by Andrew Doaneopen in new window from the Noun Project

                                            # 作者

                                            Alexandre Mutel aka xoofxopen in new window.

                                            edit icon在 GitHub 上编辑此页open in new window
                                            上次编辑于: 2022/6/2 11:02:17
                                            贡献者: luoyunchong,igeekfan
                                            上一页
                                            CAP实现EventBus
                                            MIT Licensed | Copyright © 2021-present luoyunchong
                                            苏ICP备16046457号-1

                                            该应用可以安装在你的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和你的操作系统安全地进行交互。

                                            详情