一、简介

模板引擎是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的用法:

  1. 打开Visual Studio 2019,新建一个命令行项目sample!

  2. 点击菜单:项目=>管理Nuget程序包,搜索 jntemplate 并安装(jiniannet.jntemplate),如图一所示。

  1. 打开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 实战演习:基础篇之入门的更多相关文章

  1. .net 开源模板引擎jntemplate 教程:基础篇之语法

    一.基本概念 上一篇我们简单的介绍了jntemplate并写了一个hello world(如果没有看过的,点击查看),本文将继续介绍jntemplate的模板语法. 我们在讲解语法前,首先要了解一下标 ...

  2. .net 开源模板引擎jntemplate 教程:基础篇之在ASP.NET MVC中使用Jntemplate

    在ASP.NET MVC 中使用Jntemplate 上一篇我们详细介绍了jntemplate的标签语法,本篇文章将继续介绍如何在ASP.NET MVC 中使用Jntemplate. 一.使用Jnte ...

  3. artTemplate模板引擎学习实战

    在我的一篇关于智能搜索框异步加载数据的文章中,有博友给我留言,认为我手写字符串拼接效率过低,容易出错.在经过一段时间的摸索和学习之后,发现现在拼接字符串的方法都不在是自己去书写了,而是使用Javasc ...

  4. C#模板引擎NVelocity实战项目演练

    一.背景需求 很多人在做邮件模板.短信模板的时候,都是使用特殊标识的字符串进行占位,然后在后台代码中进行Replace字符串,如果遇到表格形式的内容,则需要在后台进行遍历数据集合,进行字符串的拼接,继 ...

  5. java开源模板引擎

      Velocity  Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义 ...

  6. Docker虚拟化实战学习——基础篇(转)

    Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker   Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...

  7. smarty模板引擎(一)基础知识

    一.基本概念 1.什么是mvc?     mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty?     smarty是一个php的模板引擎.更明白的 ...

  8. [MySQL实战-Mysql基础篇]-mysql架构

    1.基本组成 下面是mysql的基本架构示意图  图一 图二 我们可以从图上看出,mysql大体分为两个部分,一个是server层,另一个是引擎层. server层中包含了连接器.查询缓存.分析器.优 ...

  9. [MySQL实战-Mysql基础篇]-mysql的日志

    参考文章: https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html https://dev.mysql.com/doc/ ...

随机推荐

  1. 灯光照射,圆形探测类问题(解题报告)<分层差分><cmath取整>

    题目描述 一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到. 输入输出格式 输入格式: (1<=r<n<=5000) (1<=m ...

  2. Codeforces Round #481 (Div. 3) G. Petya's Exams (贪心,模拟)

    题意:你有\(n\)天的时间,这段时间中你有\(m\)长考试,\(s\)表示宣布考试的日期,\(d\)表示考试的时间,\(c\)表示需要准备时间,如果你不能准备好所有考试,输出\(-1\),否则输出你 ...

  3. 【论文笔记】AutoML for MCA on Mobile Devices——论文解读与代码解析

    理论部分 方法介绍 本节将详细介绍AMC的算法流程.AMC旨在自动地找出每层的冗余参数. AMC训练一个强化学习的策略,对每个卷积层会给出其action(即压缩率),然后根据压缩率进行裁枝.裁枝后,A ...

  4. python Crypto 加密解密

    本片文字记录使用python 的Crypto 工具对图片或者文本进行加密解密的方法: import numpy as np from PIL import Image from base64 impo ...

  5. Operating System:信号量

    pv原语操作(1)操作系统PV意思:PV操作与信号量的处理相关,P表示通过的意度思,V表示释放的意思.(2)p操作和v操作是不可中断问的程序段,称为原语.如果将信号量看作共享变量,则pv操作为其临界区 ...

  6. Zabbix 监控网站

    官网教学步骤 配置 Web 监控 创建 Web 场景 配置 Web 场景 配置 Web 监控步骤 一共划分为 5 个步骤: 监测访问登录页面 模拟登录功能 # sid 变量的值 regex:name= ...

  7. leetcode 12 整数转罗马数字 贪心

    额,连着两个贪心? 这是局部最优问题:能用大"罗马数表示"就不会用小的. 先构造出所有基础罗马数,然后从大到小比较 因为比较的只有1000,900,...有限并有些麻烦,构造tab ...

  8. 论文 公式 排版 编辑 工具 NoteExpress & MathType

    1 1 论文 公式 排版 编辑 工具: NoteExpress http://www.noteexpress.net/index2.html 1 MathType http://www.dessci. ...

  9. 海 鱼立 鲷 & 海䲞鲷

    海 鱼立 鲷 & 海䲞鲷 䲞 lì 鲷 diāo 二长棘鲷 二长棘鲷(学名:Parargyrops edita)为辐鳍鱼纲鲈形目鲷科二长棘鲷属的鱼类,俗名板鱼.䲞鱼.盘仔鱼.立花.赤鬃.长鳍. ...

  10. Mapbox 地图实验室

    Mapbox 地图实验室 Learn with Mapbox https://www.mapbox.com/community/education/ https://labs.mapbox.com/e ...