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服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 NodeJs
Nodejs下用submit提交表单提示cannot post错误的解决方法
Nov 21 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodejs基础之buffer缓冲区用法分析
Dec 26 NodeJs
nodejs使用async模块同步执行的方法
Mar 02 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 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与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
基于php 随机数的深入理解
2013/06/05 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
JS一个简单的注册页面实例
2017/09/05 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
浅析Git版本控制器使用
2017/12/10 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
幼儿园父亲节活动方案
2014/03/11 职场文书
卫生标语大全
2014/06/21 职场文书
环保建议书作文500字
2015/09/14 职场文书