【Javascript】用js写一个模板引擎

简介: 【Javascript】用js写一个模板引擎

优质文章分享: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, \'&amp;\').replace(/"/g, \'&quot;\').replace(/\'/g, \'&#39;\').replace(/</g, \'&lt;\').replace(/>/g, \'&gt;\'); };'],
            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


相关文章
|
6月前
|
XML 缓存 JavaScript
一篇文章讲明白JS模板引擎之JST模板
一篇文章讲明白JS模板引擎之JST模板
60 2
|
Web App开发 XML JavaScript
10个最好的 JavaScript 模板引擎
JavaScript随着各种神奇的实用功能库日渐丰富,而越来越受到Web开发者与设计师的追捧,例如:jQuery, MooTools, Prototype等。
2171 0
10个最好的 JavaScript 模板引擎
|
JavaScript 前端开发 API
node.js中使用模板引擎art-template
node.js中使用模板引擎art-template
414 0
node.js中使用模板引擎art-template
|
JavaScript
nunjucks:继承于jinja2的js模板引擎
nunjucks:继承于jinja2的js模板引擎
120 0
|
JavaScript 前端开发
doT.js:一个Node.js和浏览器环境下快速简洁的javascript模板引擎
doT.js:一个Node.js和浏览器环境下快速简洁的javascript模板引擎
208 0
|
JavaScript 前端开发
【Javascript】用js写一个模板引擎
【Javascript】用js写一个模板引擎
115 0
|
Web App开发 移动开发 缓存
Jade —— 源于 Node.js 的 HTML 模板引擎
Jade 是一个高性能的模板引擎,它深受 Haml 影响,它是用 JavaScript 实现的,并且可以供 Node 使用。
350 0
Jade —— 源于 Node.js 的 HTML 模板引擎
|
JavaScript
nunjucks:继承与jinja2的js模板引擎
nunjucks:继承与jinja2的js模板引擎
160 0
|
SQL 开发框架 移动开发
只有20行Javascript代码!手把手教你写一个页面模板引擎
AbsurdJS 作者写的一篇教程,一步步教你怎样用 Javascript 实现一个纯客户端的模板引擎。整个引擎实现只有不到 20 行代码。如果你能从头看到尾的话,还能有不少收获的。你甚至可以跟随大牛的脚步也自己动手写一个引擎。以下是全文。
191 0
下一篇
DataWorks