背景
平常比如开发个代码生成器一般是定一个模板,然后里面很多变量,根据数据生成文件。这时候模版引擎就派上了用场。
下面我们来介绍下Liquid。什么是Liquid 呢,就像java、c#等编程语言一样,Liquid也是一种独立的语言,没什么大差别,基本功能都有。动态生成文件,可以输出变量,操作数组等,这些都能达到。
官方的介绍
Liquid 是一门开源的模板语言,由 Shopify 创造并用 Ruby 实现。它是 Shopify 主题的骨骼,并且被用于加载店铺系统的动态内容。
Liquid 语法
Liquid 代码可分为 对象(object)、标记(tag) 和 过滤器(filter)。
对象
对象 告诉 Liquid 在页面的哪个位置展示内容。对象和变量名由双花括号标识:{{ 和 }}。
标记(tag)
标记(tag) 创造了模板的逻辑和控制流。他们由单括号加百分号标识:{% 和 %}。
过滤器
过滤器 改变 Liquid 对象的输出。他们被用在输出上,通过一个 | 符号分隔。
开原地址 :
https://github.com/Shopify/liquid
c#专用Dot Liquid
那么基于c#的有没有对应的liquid插件呢,还真有。Dot Liquid.
DotLiquid相比于Mvc默认模板引擎Razor的好处有:
因为不需要编译到程序集再载入
首次渲染速度很快
不会导致内存泄漏
使用方法
1、nuget安装 using DotLiquid;
2、定义实体,继承: Drop是关键
public class DotLiquidMdDrop : Drop{private readonly Questions questions;public List<Answer> answer{get { return questions.Answer; }}public DotLiquidMdDrop(Questions questionsPara){questions = questionsPara;}}
3、这里我们造一些测试数据,并且调用
[AcceptVerbs(HttpVerbs.Post)]public ActionResult DotLiquidDemo1(string template)
{string test = GetInterIDList(template);ViewData["template"] = Template.Parse(test).Render(Hash.FromAnonymousObject(new{questions = new List<DotLiquidMdDrop>() {Getmork(), Getmork(), Getmork()// , new DotLiquidMdDrop(new Questions() { Answer =new List<Answer> () { new Answer() { option = "Aa", optiontext = "选项内容1111" }, new Answer() { option = "Aa", optiontext = "选项内容1111" } } })}}));return View();}