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的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
详解Nodejs之npm&amp;package.json
Jun 15 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
nodejs 如何手动实现服务器
Aug 20 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
NodeJS实现一个聊天室功能
Nov 25 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用反撇号执行外部命令
2015/04/14 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
Python断言assert的用法代码解析
2018/02/03 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
Python中Unittest框架的具体使用
2019/08/27 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
如何用Python 加密文件
2020/09/10 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
什么是java序列化,如何实现java序列化
2012/11/14 面试题
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
物业门卫岗位职责
2013/12/28 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
给学校建议书范文
2014/05/13 职场文书
行政管理专业求职信
2014/07/06 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
升学宴答谢词
2015/01/05 职场文书
主持稿开场白
2015/06/01 职场文书
律师催款函范文
2015/06/24 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书