一篇文章了解Liquid模版引擎

914 阅读2分钟

背景

平常比如开发个代码生成器一般是定一个模板,然后里面很多变量,根据数据生成文件。这时候模版引擎就派上了用场。

下面我们来介绍下Liquid。什么是Liquid 呢,就像java、c#等编程语言一样,Liquid也是一种独立的语言,没什么大差别,基本功能都有。动态生成文件,可以输出变量,操作数组等,这些都能达到。

官方的介绍

Liquid 是一门开源的模板语言,由 Shopify 创造并用 Ruby 实现。它是 Shopify 主题的骨骼,并且被用于加载店铺系统的动态内容。

Liquid 语法

Liquid 代码可分为 对象(object)、标记(tag) 和 过滤器(filter)。

对象

对象 告诉 Liquid 在页面的哪个位置展示内容。对象和变量名由双花括号标识:{{ 和 }}。

标记(tag)

标记(tag) 创造了模板的逻辑和控制流。他们由单括号加百分号标识:{% 和 %}。

过滤器

过滤器 改变 Liquid 对象的输出。他们被用在输出上,通过一个 | 符号分隔。

开原地址 :

github.com/Shopify/liq…

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();        }