一篇文章了解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模版引擎相关推荐
- UML科普文,一篇文章掌握14种UML图
前言 上一篇文章写了一篇建造者模式,其中有几个UML类图,有的读者反馈看不懂了,我们今天就来解决一哈. 什么是UML? UML是Unified Model Language的缩写,中文是统一建模语言, ...
- 了解mysql文章_一篇文章带你深入了解MySQL 索引相关
基础知识 一张数据表中具有百万级的数据时,如何精确且快速的拿出其中某一条或多条记录成为了人们思考的问题. InnoDB 存储引擎的出现让这个问题得到了很好的解决, InnoDB 存储引擎是以索引来进行 ...
- python 的库如何开发_一篇文章入门Python生态系统
译者按:原文写于2011年末,虽然文中关于Python 3的一些说法可以说已经不成立了,但是作为一篇面向从其他语言转型到Python的程序员来说,本文对Python的生态系统还是做了较为全面的介绍.文 ...
- 计算机机培训论文,一篇文章了解机器学习
原标题:一篇文章了解机器学习 最近正在做一个机器学习相关的项目,在这之前自己也没有接触过机器学习.可谓边做边学,在这里把自己的学习理解记录下来,同时也希望感兴趣的同学可以通过这篇文章对机器学习有一个大 ...
- 学完oracle 再学mysql_一篇文章让Oracle程序猿学会MySql【未完待续】
一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...
- 一篇文章了解JsBridge之IOS篇
之前发布在掘金Android栏目下的文章"一篇文章了解Js Bridge"受到了较多的反馈,本文在该文章的基础上,添加了一些针对IOS平台下的一些问题的讨论. 什么是JSBridg ...
- 图书馆的uml概念类图怎么画_UML科普文,一篇文章掌握14种UML图
前言 上一篇文章写了一篇建造者模式,其中有几个UML类图,有的读者反馈看不懂了,我们今天就来解决一哈. 什么是UML? UML是Unified Model Language的缩写,中文是统一建模语言, ...
- 集成Android免费语音合成功能(在线、离线、离在线融合),有这一篇文章就够了(离线)
原址 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(在线) 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合) ...
- 一篇文章入门Python生态系统
开发者从PHP.Ruby或其他语言转到Python时,最常碰到的第一个障碍,就是缺乏对Python生态系统的全面了解.开发者经常希望能有一个教程或是资源,向他们介绍如何以大致标准的方式完成大部分的任务 ...
最新文章
- 旷视首席科学家孙剑:深度学习变革视觉计算
- Android实现导航菜单左右滑动效果
- 勿谈大,且看Bloomberg的中数据处理平台
- tf.ConfigProto()详解
- DL之SoftmaxWithLoss:SoftmaxWithLoss算法(Softmax+交叉熵误差)简介、使用方法、应用案例之详细攻略
- raii_Java中的RAII
- apple quicktime怎么在ppt中用_PPT情感专题大赏No. 007:一份这就是街舞第三季主题PPT(上集)...
- 从JVM入手,聊聊Java的学习和复习!
- 数据库最最常用语句(10年工作笔记)
- [Web]Restful风格的适用场景
- SPH(光滑粒子流体动力学)流体模拟实现二:SPH算法(1)-数学原理
- 镜像资源的使用:100倍速度提升不是梦!
- Lamp的搭建以及应用
- 兰光bl2000_蓝光bl2000电梯主板.pdf
- pycharm创建的.py文件显示为.txt文件样式
- 初始化一个java空数组_Java 数组的两种初始化方式
- 【人工智能行业大师访谈2】吴恩达采访 Pieter Abbeel
- 像阿里一样充满使命愿景和价值观
- 【技术美术美术部分】AO贴图的烘焙及应用
- 稳定软件研发团队组织结构
热门文章
- 在Centos中yum安装和卸载软件的使用方法
- .net知识和学习方法系列(十四)TraceListener的应用
- found.000文件夹的问题
- python正则中如何匹配汉字以及encode(‘utf-8’)和decode(‘utf-8’)的互转
- linux里查看最耗CPU的线程
- Spread / Rest 操作符
- jQuery遍历not的用法
- [luoguP2601] [ZJOI2009]对称的正方形(二维Hash + 二分 || Manacher)
- 【.NET特供-第三季】ASP.NET MVC系列:传统WebForm站点和MVC站点执行机制对照
- 【转】android makefile文件分析