【分享/转】用js写一个模板引擎
来源:互联网 发布:淘宝风云团队怎么联系 编辑:程序博客网 时间:2024/06/08 18:16
优质文章分享:http://lvtraveler.github.io/
模板引擎在前后端都能用到,但是通过作为前端,我们只需要一些简单的模板引擎。
先上代码:
<!DOCTYPE html><html><head> <title>模板引擎</title></head><body> <div id="tpl" type="text/plain"> <p>Today: { date }</p> <a href="/{ user.id|safe }">{ user.company }</a> </div> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script type="text/javascript"> var tpl = new Template($('#tpl').html()); var date= new Date(); var model = tpl.render({ date: date, user: { id: '0000', company: 'babybus' } }); $('#tpl').html(model); function Template(tpl) { var fn, match, code = ['var r=[];\nvar _html = function (str) { return str.replace(/&/g, \'&\').replace(/"/g, \'"\').replace(/\'/g, \''\').replace(/</g, \'<\').replace(/>/g, \'>\'); };'], re = /\{\s*([a-zA-Z\.\_0-9()]+)(\s*\|\s*safe)?\s*\}/m, addLine = function (text) { code.push('r.push(\'' + text.replace(/\'/g, '\\\'').replace(/\n/g, '\\n').replace(/\r/g, '\\r') + '\');'); }; while (match = re.exec(tpl)) { if (match.index > 0) { addLine(tpl.slice(0, match.index)); } if (match[2]) { code.push('r.push(String(this.' + match[1] + '));'); } else { code.push('r.push(_html(String(this.' + match[1] + ')));'); } tpl = tpl.substring(match.index + match[0].length); } addLine(tpl); code.push('return r.join(\'\');'); fn = new Function(code.join('\n')); this.render = function (model) { return fn.apply(model); }; } </script></body></html>
这个我们能用这个模板引擎创建一个我们前端需要的html片段了。
这里面我们使用正则表达式去匹配字符串中的变量,当然,你要对js正则表达式熟练应用。
原文地址:http://www.liaoxuefeng.com/article/001426512790239f83bfb47b1134b63b09a57548d06e5c5000
0 0
- 【分享/转】用js写一个模板引擎
- 用js写一个模板引擎
- 怎样写一个模板引擎
- 分享一个简单的python模板引擎
- 自己写的一个jquery模板引擎
- 一个自己写的PHP模板引擎
- 写了一个最简单的 js 模板引擎,直接贴代码
- 分享一个用DHTML写的一个js简易轮播图
- 【自写】node.js模板引擎的选择?
- Epii.js 一个极其简单的Js模板引擎
- 用C为LUA写一个超迷你的模板引擎.
- 写了一个简单实用的PHP模板引擎
- 自己动手写一个简单的php模板引擎
- 写一个属于自己的模板引擎【一】
- 自己写的一个Java渲染模板引擎:SimpleV
- 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好
- 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)
- “EasyTemplate” JS模板引擎
- python正则表达式
- ubuntu15.10 mpich3 setup
- HDU 1005 Number Sequence(循环周期是关键)
- 从底部弹出或滑出选择菜单或窗口
- java 实现操作windows共享文件
- 【分享/转】用js写一个模板引擎
- 设置Linux环境变量的方法和区别_Ubuntu
- php实习tips(如何生成简单摘要)
- Ubuntu搭建Openstack平台(kilo)(二.keystone)
- strstr_strchr.php
- 网络层协议之报文控制机协议ICMP
- 改变毕其功于一役的想法
- 【Cocos2d-x(1)】魔塔MagicTown第一章之游戏地图篇
- Anniversary party(树形dp第一步)