码迷,mamicode.com
首页 > Web开发 > 详细

在.net 程序中使用Mustache模板字符串

时间:2019-11-23 09:20:18      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:git   tput   html   就是   family   output   text   www   htm   

今天弄了一个配置随着使用环境动态切换的功能,一个基本的思路是:

  1. 将配置配置为模板的形式,
  2. 根据不同的环境定义环境变量
  3. 根据环境变量渲染模板,生成具体的配置

这里面就涉及到了一个字符串模板的功能,关于模板语法,我选择的是最近比较流行的"Mustache"语法 ,基本格式就是基于双大括号的文本插值,

????<span>Message: {{ msg }}</span>

Mustache的特点是比较简单易读易用,就算运维人员也不难理解和使用。

至于到了实现,本身只是实现一个简单的花括号插值还是比较简单的,自己实现也没几行代码,但考虑到以后的扩展性,还是使用支持完整的Mustache语法的引擎吧,官方的C#解析库是stubble,一个基本示例如下:

????var stubble = new StubbleBuilder().Build();
????var output = stubble.Render("hi {{name}}", new {name = "world"});

也能接受Dictionary类型作为参数,非常方便。

????var output = stubble.Render("hi {{name}}",
????????new Dictionary<string, object>()
????????{
???? ???????? ["name"] = "world"
????????});

其他的例子这里就不介绍了,如果感兴趣可以查看其官方示例

另外一个比较流行的Mustache库是Nustache,体积要小些,接口也要简单点,

????var output = Render.StringToString("hi {{name}}", new {name = "world"});

不过它有两个问题。

  1. 不过它没有.net core的版本,只有一个移植版nustache.core,也是3年前的
  2. 它语法检查没有stubble严格,例如渲染""hi {{name} }""这样一个错误的模板不抛异常,并给出了错误的渲染结果。而stubble会报错,

基于以上两个原因,我觉得还是官方推荐的stubble更合适些。

除此之外,我在搜索字符串模板的时候,找到了另一个比较流行的模板liquid,语法用起来也非常类似

????Template template = Template.Parse("hi {{name}}"); // Parses and compiles the template
????template.Render(Hash.FromAnonymousObject(new { name = "tobi" })); // => "hi tobi"

感兴趣的朋友可以参考下如下文章:DotLiquid模板引擎简介

?

在.net 程序中使用Mustache模板字符串

标签:git   tput   html   就是   family   output   text   www   htm   

原文地址:https://www.cnblogs.com/TianFang/p/11915101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!