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 相关文章推荐
ubuntu下安装nodejs以及升级的办法
May 08 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
详解NODEJS的http实现
Jan 04 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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 的 __FILE__ 常量
2007/01/15 PHP
php中rename函数用法分析
2014/11/15 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
jQuery each()小议
2010/03/18 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
护士专业推荐信
2013/11/02 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
交通事故协议书范文
2014/04/16 职场文书
初中同学会活动方案
2014/08/22 职场文书
Python基础详解之邮件处理
2021/04/28 Python
Golang 对es的操作实例
2022/04/20 Golang
MySQL普通表如何转换成分区表
2022/05/30 MySQL