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 npm package.json中文文档
Sep 04 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
nodejs初步体验篇
Nov 23 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
nodejs入门教程六:express模块用法示例
Apr 24 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
详解NodeJS模块化
Jun 15 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中动态显示签名和ip原理
2007/03/28 PHP
PHP 批量更新网页内容实现代码
2010/01/05 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
PHP经典面试题集锦
2015/03/19 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
json 定义
2008/06/10 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
vue v-model的用法解析
2020/10/19 Javascript
python抓取网页图片并放到指定文件夹
2014/04/24 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
CLR与IL分别是什么含义
2016/08/23 面试题
2014道德模范事迹材料
2014/02/16 职场文书
后勤主管岗位职责
2014/03/01 职场文书
社团个人总结范文
2015/03/05 职场文书
python处理json数据文件
2022/04/11 Python
MySql数据库 查询时间序列间隔
2022/05/11 MySQL