.net 开源模板引擎jntemplate 实战演习:基础篇之入门
一、简介
模板引擎是Web开发中非常重要的一环,它负责将页面上的动态内容呈现出最终的结果展现给前端用户,在asp.net mvc中,我们最熟悉的就是Razor了,作为官方的视图引擎(视图引擎不等同于模板引擎),它的受众十分广阔。但是在部分场景,比如BLOG,CMS甚至非asp.net mvc(此处asp.net mvc特指官方MVC框架)环境中,我们往往可能需要第三方的模板引擎来解析我们页面(或者视图),在这一块,JNTemplate,DotLiquid,Nustache,Razor,Saprk都是不错的选择,JNTemplate v2.0 做为使用il emit实现的编译型模板引擎,在众多模板引擎中表现优秀。
本系列文章将通过基础篇与进阶篇二部分,详细介绍 jntemplate的基本使用与进阶技巧。
二、准备开始
在开始之前,首先我们要准备本地的开发环境,jntemplate v2.0.0 所支持的环境为
- .net framework 4.0 +
- .net core 2.1 +
- .netstandard 2.1 +
- .net 5
建议安装使用.net 5 环境(下载地址:https://dotnet.microsoft.com/download/dotnet/5.0)
IDE建议使用Visual Studio 2019或者vscode,如果都没有,记事本也行。
三、 hello World
在下面我们通过一个简单的hello World来了解jntemplate的用法:
打开Visual Studio 2019,新建一个命令行项目sample!
点击菜单:项目=>管理Nuget程序包,搜索 jntemplate 并安装(jiniannet.jntemplate),如图一所示。

- 打开
Program.cs, 修改Main方法里面的代码如下:
var template = Engine.CreateTemplate("Hello $name!");
template.Set("name", "World");
template.Render(Console.Out);
如图二所示:

4.按F5运行程序,查看程序运行结果。

恭喜。我们的hello world项目完成了,程序正确解析了模板并输出了结果,我们来重点看一下这三句代码:
Engine.CreateTemplate("Hello $name!");表示从文本"Hello $name!" 创建一个模板对象,如果是从一个文件创建模板可以使用Engine.LoadTemplate("文件路径")template.Set("name","World");将一个名称为name的变量给递给模板。template.Render(Console.Out);解析呈现模板内容。
在这里,直接将模板解析结果呈现到了控制台,如果需要输出到文本,可以直接使用
string result = template.Render();
如果想保存到文件,可以参考下面的写法
using (var sw = File.CreateText(@"c:\wwwroot\index.html"))
{
template.Render(sw);
}
是不是很简单?
五、总结
jntemplate 语法简单,入门容易 ,轻量快速。而且不仅仅只能用来做模板引擎,原则上可以做任何纯文本内容的解析,比如做邮件发送,代码生成器等等。
下一节我们将详细讲解模板语法。
注:源代码可以在Gitee或者Github上获取。
.net 开源模板引擎jntemplate 实战演习:基础篇之入门的更多相关文章
- .net 开源模板引擎jntemplate 教程:基础篇之语法
一.基本概念 上一篇我们简单的介绍了jntemplate并写了一个hello world(如果没有看过的,点击查看),本文将继续介绍jntemplate的模板语法. 我们在讲解语法前,首先要了解一下标 ...
- .net 开源模板引擎jntemplate 教程:基础篇之在ASP.NET MVC中使用Jntemplate
在ASP.NET MVC 中使用Jntemplate 上一篇我们详细介绍了jntemplate的标签语法,本篇文章将继续介绍如何在ASP.NET MVC 中使用Jntemplate. 一.使用Jnte ...
- artTemplate模板引擎学习实战
在我的一篇关于智能搜索框异步加载数据的文章中,有博友给我留言,认为我手写字符串拼接效率过低,容易出错.在经过一段时间的摸索和学习之后,发现现在拼接字符串的方法都不在是自己去书写了,而是使用Javasc ...
- C#模板引擎NVelocity实战项目演练
一.背景需求 很多人在做邮件模板.短信模板的时候,都是使用特殊标识的字符串进行占位,然后在后台代码中进行Replace字符串,如果遇到表格形式的内容,则需要在后台进行遍历数据集合,进行字符串的拼接,继 ...
- java开源模板引擎
Velocity Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义 ...
- Docker虚拟化实战学习——基础篇(转)
Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...
- smarty模板引擎(一)基础知识
一.基本概念 1.什么是mvc? mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty? smarty是一个php的模板引擎.更明白的 ...
- [MySQL实战-Mysql基础篇]-mysql架构
1.基本组成 下面是mysql的基本架构示意图 图一 图二 我们可以从图上看出,mysql大体分为两个部分,一个是server层,另一个是引擎层. server层中包含了连接器.查询缓存.分析器.优 ...
- [MySQL实战-Mysql基础篇]-mysql的日志
参考文章: https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html https://dev.mysql.com/doc/ ...
随机推荐
- F - To Add Which?
Description There is an integer sequence with N integers. You can use 1 unit of cost to increase any ...
- 【uva 1471】Defense Lines(算法效率--使用数据结构+部分枚举+类贪心)
P.S.我完全一个字一个字敲出来的血泪史啊~~所以,没有附代码,也是可以理解的啦.OvO 题意:给一个长度为N(N≤200000)的序列,要删除一个连续子序列,使得剩下的序列中有一个长度最大的连续递增 ...
- hdu5371 Hotaru's problem
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission ...
- C# 通过Internet搜索网络资源
Internet 网络资源非常丰富,几乎涉及到日常生活和研究的各个方面.流行的搜索引擎像Google.百度.雅虎等都能完成快速搜索网络资源的功能.本节我们将学习用C#实现这些功能的基本思路. 在Sys ...
- Chrony时间同步
chrony 服务器 yum -y install chrony cp /etc/chrony.conf{,.bak} #备份默认配置 cat > /etc/chrony.conf <&l ...
- Hexo之更换背景及透明度
Hexo之更换背景及透明度 引入方式 首先,介绍一下引入方式,外部导入css文件,不影响内部配置. 1.创建css文件 创建一个css文件移动到\themes\butterfly\source\css ...
- c# App.xaml
随着wpf自动创建的,是项目的起始点..Net先再App里找,找到了window然后开启window,项目真正的起始点是在App里. 这两个 (App 的xaml和cs文件)和MainWindow 的 ...
- Chrome DevTools & performance & keywords
Chrome DevTools & performance & keywords performance / 优化性能 https://developers.google.com/we ...
- Graphviz - Graph Visualization Software 开源可视化绘图工具(visio 类)
http://www.graphviz.org/Download_windows.php Welcome to Graphviz Available translations: Romanian, ...
- Android四大组件简介:Android 基础知识,开发教程
Android 四大组件: Activity.Service.Broadcast Receiver.Content Provider. http://developer.android.com/int ...