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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
nodejs npm install全局安装和本地安装的区别
Jun 05 NodeJs
Nodejs下用submit提交表单提示cannot post错误的解决方法
Nov 21 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
nodejs接入阿里大鱼短信验证码的方法
Jul 10 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
通过Nodejs搭建网站简单实现注册登录流程
Jun 14 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 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使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
详解如何设置Python环境变量?
2019/05/13 Python
python数值基础知识浅析
2019/11/19 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
电子商务毕业生求职信
2013/11/10 职场文书
个人实用的自我评价范文
2013/11/23 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
校园公益广告语
2014/03/13 职场文书
公司应聘自荐书
2014/06/14 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
辞职信的写法
2015/02/27 职场文书
用人单位聘用意向书
2015/05/11 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技