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 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs+mongodb aggregate级联查询操作示例
Mar 17 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 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
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
Yii2如何批量添加数据
2016/05/17 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
python最长回文串算法
2018/06/04 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
学校司机岗位职责
2013/11/14 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
个人简历中自我评价
2014/02/11 职场文书
企业宣传策划方案
2014/05/29 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
怎样写辞职信
2015/02/27 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs