EJS模板引擎
一、什么是模板引擎?
是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
常用的模板引擎有ejs 、jade、smarty等。
二、为什么需要模板引擎?
前端开发的时候,经常有根据后台返回的数据,然后根据此数据生成html,最后渲染到页面中。比如:
var data = [
    {name: "leaf1"},
    {name: "leaf2"},
    {name: "leaf3"}
];
function getNameList(data) {
    var html = "";
    html += "<ul>";
    for (var i = 0, len = data.length; i < len; i++) {
        html += "<li>";
        html += data.name;
        html += "</li>";
    }
    html += "</ul>";
    return html;
} 
上面当然只是简单的例子,如果返回的数据很复杂呢?有了ejs模板引擎,我们可以这样
<script id="test" type="text/html">
    <ul>
        <% for (var i = 0; i < list.length; i ++) { %>
        <li><%= list[i].name %></li>
        <% } %>
    </ul>
</script>
三、ejs特点
      快速编译和渲染
  简单的模板标签
  自定义标记分隔符
  支持文本包含
  支持浏览器端和服务器端
  模板静态缓存
  支持express视图系统
四、原理
原理很简单,其实就是拼接字符串,模板引擎就是利用正则表达式识别模板标识,并利用数据代替其中标识符。
//下面是简单的引擎逻辑,真正的模板引擎还要考虑内存、XSS漏洞等问题。
function tmp(str, obj) { if (typeof str === 'string') { return str.replace(/<%=\s*([^%>]+)\s*%>/g, function() { var key = arguments[1]; return obj[key]; }); } } var str = "<%= name%>"; var obj = {name: "leaf"};
五、ejs常用标签
<% %>    //流程控制标签
<%= %>  //输出标签(原文输出HTML标签)
<%- %>   //输出标签(HTML会被浏览器解析)
<%# %>  //注释标签
%             //对标记进行转义
-%>          //去掉没用的空格
六、利用Express+ejs制作简单页面的小demo
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号