在.net 程序中使用Mustache模板字符串
今天弄了一个配置随着使用环境动态切换的功能,一个基本的思路是:
- 将配置配置为模板的形式,
- 根据不同的环境定义环境变量
- 根据环境变量渲染模板,生成具体的配置
这里面就涉及到了一个字符串模板的功能,关于模板语法,我选择的是最近比较流行的"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"});
不过它有两个问题。
- 不过它没有.net core的版本,只有一个移植版nustache.core,也是3年前的
- 它语法检查没有stubble严格,例如渲染""hi {{name} }""这样一个错误的模板不抛异常,并给出了错误的渲染结果。而stubble会报错,
基于以上两个原因,我觉得还是官方推荐的stubble更合适些。
除此之外,我在搜索字符串模板的时候,找到了另一个比较流行的模板liquid,语法用起来也非常类似
感兴趣的朋友可以参考下如下文章:DotLiquid模板引擎简介
在.net 程序中使用Mustache模板字符串的更多相关文章
- 在ASP.NET MVC应用程序中随机获取一个字符串
在开发ASP.NET MVC应用程序时,有可能需要一个随机字符串,作为密码或是验证码等. 如果你需要的是SQL版本,可以参考<密码需要带特殊字符(二)>http://www.cnblogs ...
- nodejs+Express中使用mustache模板引擎
由于公司一个seo项目,需要我协助.此项目他人已经开发大半,由于seo需要,使用了服务器端模板引擎.我项目的后端同事说项目是go语音写的,跑项目麻烦,只给了我template和css等静态文件. 为了 ...
- C# 中从程序中下载Excel模板
方法一: #region 下载模板 /// <summary> /// 下载模板 /// </summary> /// <param name="sender& ...
- ES6中的模板字符串和新XSS Payload
ES6中的模板字符串和新XSS Payload 众所周知,在XSS的实战对抗中,由于防守方经常会采用各种各样严格的过滤手段来过滤输入,所以我们使用的XSS Payload也会根据实际情况作出各种各样的 ...
- es6 中的 模板字符串
Template literals are string literals allowing embedded expressions. You can use multi-line strings ...
- 第十五篇:关于TCP通信程序中数据的传递格式
前言 在之前的回射程序中,实现了字符串的传递与回射.幸运的是,字符串的传递不用担心不同计算机类型的大小端匹配问题,然而,如果传递二进制数据,这就是一个要好好考虑的问题.在客户端和服务器使用不同的字节序 ...
- 关于TCP通信程序中数据的传递格式
前言 在之前的回射程序中,实现了字符串的传递与回射.幸运的是,字符串的传递不用担心不同计算机类型的大小端匹配问题,然而,如果传递二进制数据,这就是一个要好好考虑的问题.在客户端和服务器使用不同的字节序 ...
- javascript模板字符串(反引号)
模板字面量 是允许嵌入表达式的字符串字面量. 你可以使用多行字符串和字符串插值功能.它们在ES2015规范的先前版本中被称为“模板字符串”. 语法 `string text``string text ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...
随机推荐
- 批量群发,营销必备!Python代码实现自动发送邮件!
在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使用 Python 封装发送邮件代码的. 一般发邮件方法 SMTP是发送邮件的协议, ...
- (四十六)c#Winform自定义控件-水波进度条-HZHControls
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...
- (转)Python- sklearn之最小二乘法
最小二乘法:https://baike.baidu.com/item/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95/2522346?fr=aladdin ...
- WGS84、WebMercator、GCJ02和BD09坐标系简介与转换
WGS84(GPS): 地心坐标系,空间直角坐标系,原点与地球质心重合,为GPS采用的坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系. 通过GPS可以直接获取WGS84下的坐标(B,L, ...
- ArcGIS Server10.4 service发布步骤
准备内容 安装环境:win10*64位专业版 安装文件:ArcGIS_Server_Ent_Windows_1041_150998.iso 破解文件:Lic10.4.1.ecp #安装Server前, ...
- retrying failed action with response code: 403
0x00 Event [2019-09-24T19:22:31,655][INFO ][logstash.outputs.elasticsearch] retrying failed action w ...
- 渗透测试学习 二十九、kali安装,信息搜集,服务器扫描
kali安装,信息搜集,服务器扫描 kali介绍 Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统.由Offensive Security Ltd维护和资助.最先由 ...
- coredump配置、产生、分析以及分析示例
关键词:coredump.core_pattern.coredump_filter等等. 应用程序在运行过程中由于各种异常或者bug导致退出,在满足一定条件下产生一个core文件. 通常core文件包 ...
- 快速破解Goland
两种激活方式永久激活:推荐优先使用,永久有效有效期激活:如果你实在激活不了又着急使用,这是备选激活方案,简单快捷 一.永久激活 1.下载新版破解补丁 点击链接 https://pan.baidu.co ...
- 《Web Development with Go》中的html.template
模板应用,深入其它 main.go package main import ( //"encoding/json" "fmt" "log" ...