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的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 04 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&amp;mysql(三)
2006/10/09 PHP
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python文本数据相似度的度量
2018/03/12 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python中提高pip install速度
2020/02/14 Python
python如何输出反斜杠
2020/06/18 Python
CSS3 实现图形下落动画效果
2020/11/13 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
母亲七十大寿答谢词
2014/01/18 职场文书
基层党员公开承诺书
2014/05/29 职场文书
授权委托书公证
2014/09/14 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
领导干部个人对照检查材料(群众路线)
2014/09/26 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
Spring中的@Transactional的工作原理
2022/06/05 Java/Android