介绍

cJinja 是一个使用cpp编写的轻量html模版解析库,依赖 ejson 来实现模版的数据替换(在jinja中称为context,上下文)。模版的语法基本与django jinja一致,功能还算丰富。源码仅有700行,适合学习,觉得不错的点个star吧。

(该程序为 https://github.com/HuangHongkai/tinyserver 中的一个模块)

编译

使用cmake来编译,windows和linux下均可编译。推荐使用clion作为IDE。

编译成功后在build目录下会有libcjinja.a和cjinja_test.exe这2个文件。libcjinja.a是静态库,cjinja_test.exe是一个简单的测试程序。

运行测试程序后会出现output.html(该文件是tmp.html解析后的结果。)

已经完成的功能

  • 变量,例如 {{ var }}
  • 变量索引访问,例如 {{ var.var2 }} {{ var[2] }} {{ var[2].key.value[2] }},其中**[]** 表示对数组(类似python的list)进行索引, . 表示对object进行索引(类似与python的dict)
  • 表达式计算(包括字符串拼接) ,例如{{ 1*1+2-3*var }} {{ 1+1*2-3/4 }} {{ "asdfsf"+var }}
  • for-endfor对列表进行迭代, 例如 {% for var in list %} {% endfor %}
  • for-endfor对对象进行迭代,例如 {% for key,value in object %} {% endfor %} 或者 {% for key in object %}{% endfor %} 或者 {% for ,value in object %} {% endfor %}
  • if-else-endif 语句, 其中if的条件支持四则运算,简单的比较(!= == )等,例如 {% if 1+1==2 %}aaa{% else %}bbb{%endif %}
  • 模版包含,嵌套其他的模版文件{% include 'other.html' %}
  • 模版语法错误提示

需要注意,表达式之间不能含有空格,例如{{ 1 + 1 }}是非法的,而{{ 1+1 }}是合法的。

使用方法

1. 变量和变量索引

简单的例子如下,

HtmlTemplate html("username:{{ username }}" "parm.list[1][2]: {{parm.list[1][2] }} " "parm.key: {{ parm.key }}

2 模版_轻量html模版渲染库 cJinja相关推荐

  1. html if语句_轻量html模版渲染库 cJinja

    介绍 cJinja 是一个使用cpp编写的轻量html模版解析库,依赖 ejson 来实现模版的数据替换(在jinja中称为context,上下文).模版的语法基本与django jinja一致,功能 ...

  2. 阿里云服务器租用费用_轻量和ECS价格表

    2023年阿里云服务器租用费用,阿里云轻量应用服务器2核2G3M带宽轻量服务器一年108元,2核4G4M带宽轻量服务器一年297.98元12个月,阿里云u1服务器2核4G.2核8G.4核8G.8核16 ...

  3. # 腾讯云轻量应用服务器(香港)最新测评

    腾讯云轻量应用服务器(香港)最新测评 腾讯云轻量云服务,昨天正式全面上线了,之前听说说是非常好.我看到了一下境外区域的服务器最低价只需24元/月,不假思索,果断上车,毕竟我们不能做云评测,还是要以实际 ...

  4. 建立ssr服务器_如何从零打造一款轻量且天然支持SSR的个人博客系统?

    2年前笔者开发了一款基于 nodejs 的全栈开源 cms 系统 XPCMS, 主要是为了解决技术开发者搭建自身内容平台的局限以及降低使用成本, 虽然1.0版本已经完成, 但是从整体部署和二次开发的便 ...

  5. 买个云服务器有啥用_如何用阿里云轻量应用服务器配置一个WordPress网站?

    轻量应用服务器是面向单机应用场景的新一代计算服务,提供精品应用一键部署,支持一站式的域名.网站.安全.运维.应用管理等服务,极大优化搭建简单应用的体验,降低了入门级用户使用云计算产品的门槛. 那么,我 ...

  6. 云服务器下行_腾讯云轻量应用服务器简单测评

    这台机器的配置是1核心1G内存3M带宽,一直在吃灰,到现在才想起来应该测评一下 腾讯云活动推荐​cloud.tencent.com 测评 机器概况 从图中可以看到这台机器CPU采用 AMD EPYC ...

  7. android 人脸识别_小模型,高精度!小视科技推出极致轻量型人脸识别SDK

    AI 落地为王时代的到来,使得人脸识别的精度和速度备受人们关注.近年来,随着模型压缩.量化技术的进步,模型运行速度也越来越快.对于一些特定的人脸检测任务,轻量型的人脸识别SDK即可满足需求. ▲图源网 ...

  8. jq+ajax前端上传多张图片_史上最轻量的前端框架-VanillaJS

    vanillaJS是史上最轻量跨平台前端框架 ,我们能够使用它构建强大的JS应用.从过去到以后他都是最轻量的框架 介绍 vanillaJS目前在国外备受推崇,Bootstrap5舍弃了Jquery,选 ...

  9. 阿里云轻量服务器 外网卡_阿里云服务器购买流程及注意事项

    在上篇文章阿里云服务器怎么选购?中我们介绍了阿里云的云服务器ECS和轻量应用服务器的区别和适用场景,下面我们来看一下这种服务器具体的购买流程以及购买过程中的一些注意事项.(PS:首先你要注册阿里云的账 ...

最新文章

  1. 网站建设初学者一定要清楚网站建设基本因素和流程
  2. 【科技】浅谈圆的反演
  3. Java 重入锁 ReentrantLock 原理分析
  4. easyui datagrid 后台分页,前端如何处理
  5. 四路由器的OSPF DR ,BDR
  6. c语言用数组实现栈的插入,用数组实现栈的功能的C语言代码?
  7. 排序:插入排序与希尔排序
  8. 网站运营过程中经常触碰的几大误区
  9. Python生态概览(二):网络爬虫、web信息提取、网站开发、网络应用开发
  10. 盘古分词工具学习笔记
  11. paip.java gui swt/jface 最佳实践
  12. 【爬虫】python爬取微信公众号
  13. 2.5数字传输系统2.6宽带接入技术
  14. [转] 海尔集团CEO张瑞敏演讲《人不成熟的几大特征》
  15. 爱加密加固病毒分析-脱壳篇
  16. 大学生必知到的外国典故
  17. Microsoft Visual Studio 2019介绍之使用入门
  18. java两张图片拼接
  19. 手机启动不了android,安卓手机开不了机,小编教你如何解决安卓智能手机开不了机问题...
  20. Application的Lock和UnLock

热门文章

  1. python安卓版下载安装-python手册中文版apk下载
  2. 0基础学python编程难吗-对于0基础的人,直接学 Python 编程合适吗?
  3. python3.7 6如何安装-深度linux安装Python3.7.6
  4. python处理excel大数据-Python实现大数据收集至excel的思路详解
  5. python文件读取输出-python分批定量读取文件内容,输出到不同文件中的方法
  6. python怎么读取文件-Python如何读取文件
  7. python软件是免费的吗-python语言是免费还是收费的?
  8. php cache缓存 购物车,Yii2使用Redis缓存购物车等数据
  9. spring中aop设计与实现
  10. 推荐一些C++经典书籍