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入门详解(多篇文章结合)
Mar 07 NodeJs
Nodejs进程管理模块forever详解
Jun 01 NodeJs
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
nodejs教程之异步I/O
Nov 21 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
详解nodejs与javascript中的aes加密
May 22 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 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下一个非常全面获取图象信息的函数
2008/11/20 PHP
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
PHP Stream_*系列函数
2010/08/01 PHP
基于header的一些常用指令详解
2013/06/06 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
python 装饰器的使用示例
2020/10/10 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
大学生大二自我鉴定
2013/10/28 职场文书
口腔医学技术应届生求职信
2013/11/09 职场文书
高一历史教学反思
2014/01/13 职场文书
临床护士自荐信
2014/01/31 职场文书
五年级科学教学反思
2014/02/05 职场文书
幼儿园招生广告
2014/03/19 职场文书
中秋节主持词
2014/04/02 职场文书
幼儿教师求职信
2014/05/24 职场文书
二手房购房协议书范本
2014/10/05 职场文书
给老婆道歉的话
2015/01/20 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书