了解Liquid模版引擎

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解Liquid模版引擎相关的知识,希望对你有一定的参考价值。

背景

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

下面我们来介绍下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();
        

以上是关于了解Liquid模版引擎的主要内容,如果未能解决你的问题,请参考以下文章

Underscore模版引擎的使用-template方法

ThinkPHP模版引擎之变量输出具体解释

js模版引擎开发实战以及对eval函数的改进

js模版引擎开发实战以及对eval函数的改进

基于模版引擎实现-淘宝搜索案例

FreeMarker 快速入门