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下打包模块archiver详解
Dec 03 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
详解nodejs express下使用redis管理session
Apr 24 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 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结合curl实现多线程抓取
2015/07/09 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
JavaScript window.location对象
2014/11/14 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JavaScript错误处理
2015/02/03 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
pycharm修改界面主题颜色的方法
2019/01/17 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
如何客观的进行自我评价
2013/12/17 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
皇城相府导游词
2015/02/06 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
五一晚会主持词
2015/07/01 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
vue 给数组添加新对象并赋值
2022/04/20 Vue.js