Nodejs高扩展性的模板引擎 functmpl简介


Posted in NodeJs onFebruary 13, 2017

关于functmpl

functmpl 是一个基于JavaScript/Nodejs的高扩展性的模板引擎

模板格式

<#包含/>

如果想在一个模板中插入另一个模板,可以使用<#包含/>

比如插入模板 a.ftl :

<#"a.ftl"/>

<@功能/>

除了输出变量、包含模板外,也可以加入更多自定义的功能,比如:枚举、赋值

但额外的功能需要自定义。

自定功能的具体格式为

<@功能名称 参数名=参数值/>
<@功能名称 参数名=参数值>
    子节点
</>
其中,参数名/参数值可以没有或者含有多对。

参数值可以是变量名,或者是JSON

子节点内容可以是普通内容、<=输出/>、<#包含/>或者<@功能/>

<`表达式`>

如果只是执行表达式,可以使用<`表达式`>

<`=输出`>

如果想输出一个变量的值,可以使用<=输出/>

比如输出变量 val 的值

<\`=val\`>

如何使用

获得functmpl

使用npm 或者 git

npm install functmpl
git clone git@github.com:wangchenxunum/functmpl.git
git clone git@git.oschina.net:wangchenxunum/functmpl.git

引入到Nodejs

let functmpl = require('functmpl');

引入到浏览器

<script src="functmpl.js"></script>

模板解析器实例

//创建一个解析器
let ftl = functmpl();
//加入功能处理器
ftl.use(functmpl.func);
//模板解析
ftl.template = '<!DOCTYPE html>\n\
<html>\n\
<head>\n\
  <title><`=title`></title>\n\
</head>\n\
<body>\n\
  <@enum key="key" value="value" var=list>\n\
    <@scope>\n\
      <@set key="key" value="1" type="create"/>\n\
      <`=key`>:<`=value`><br>\n\
    </>\n\
    <`=key`>:<`=value`><br>\n\
  </>\n\
</body>\n\
</html>'
//设置模板位置如果使用<#包含/>,必须要有一个基本的相对位置
ftl.filename = 'template.ftl';
//也可以直接读取模板文件
ftl.loadFile('template.ftl',function(status){
  if (status) {
    //读取文件成功,并且已经解析
    //调用模板生成数据
    ftl.parse(function(text){
      //当生成完毕后调用回调函数
      console.log("生成完成:\n" + text);
    },JSON.parse(data.value));
  } else {
    //读取文件失败
  }
});
NodeJs 相关文章推荐
NodeJS和BootStrap分页效果的实现代码
Nov 07 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
初探nodeJS
Jan 24 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 #NodeJs
Nodejs实现短信验证码功能
Feb 09 #NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 #NodeJs
使用nodejs下载风景壁纸
Feb 05 #NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 #NodeJs
nodejs基础应用
Feb 03 #NodeJs
nodejs基础知识
Feb 03 #NodeJs
You might like
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
JS实现页面打印功能
2017/03/16 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
Python获取任意xml节点值的方法
2015/05/05 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
python多线程同步实例教程
2019/08/11 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
携程英文网站:Trip.com
2017/02/07 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
打架检讨书400字
2014/01/17 职场文书
大学课外活动总结
2014/07/09 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
婚庆司仪开场白
2015/05/29 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python