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之请求路由概述
Jul 05 NodeJs
14款NodeJS Web框架推荐
Jul 11 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
详解nodejs express下使用redis管理session
Apr 24 NodeJs
NodeJs模拟登陆正方教务
Apr 28 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 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的十大要点(上)
2009/02/04 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
php命令行写shell实例详解
2018/07/19 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
pandas中的series数据类型详解
2019/07/06 Python
Python如何实现的二分查找算法
2020/05/27 Python
Python如何重新加载模块
2020/07/29 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
小学安全教育材料
2014/02/17 职场文书
幼儿园家长寄语
2014/04/02 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
化学教育专业自荐信
2014/07/04 职场文书
农村文化活动总结
2014/08/28 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书