1. 模板引擎的根底概念
1.1 模板引擎
模板引擎是第三方模块。
让开发者以更加敌对的形式拼接字符串,使我的项目代码更加清晰、更加易于保护。
// 未应用模板引擎的写法 var ary = [{ name: '张三', age: 20 }]; var str = '<ul>'; for (var i = 0; i < ary.length; i++) { str += '<li>\ <span>'+ ary[i].name +'</span>\ <span>'+ ary[i].age +'</span>\ </li>'; } str += '</ul>';
<!-- 应用模板引擎的写法 --> <ul> {{each ary}} <li>{{$value.name}}</li> <li>{{$value.age}}</li> {{/each}} </ul>
1.2 art-template模板引擎
- 在命令行工具中应用 npm install art-template 命令进行下载
- 应用const template = require('art-template')引入模板引擎
- 通知模板引擎要拼接的数据和模板在哪 const html = template(‘模板门路’, 数据);
- 应用模板语法通知模板引擎,模板与数据应该如何进行拼接
1.3 art-template代码示例
// 导入模板引擎模块 const template = require('art-template'); // 将特定模板与特定数据进行拼接 const html = template('./views/index.art',{ data: { name: '张三', age: 20 } });
<div> <span>{{data.name}}</span> <span>{{data.age}}</span> </div>
2. 模板引擎语法
2.1 模板语法
- art-template同时反对两种模板语法:规范语法和原始语法。
- 规范语法能够让模板更容易读写,原始语法具备弱小的逻辑解决能力。
规范语法: {{ 数据 }}原始语法:<%=数据 %>
2.2 输入
将某项数据输入在模板中,规范语法和原始语法如下:
规范语法:{{ 数据 }}原始语法:<%=数据 %>
<!-- 规范语法 --> <h2>{{value}}</h2> <h2>{{a ? b : c}}</h2> <h2>{{a + b}}</h2> <!-- 原始语法 --> <h2><%= value %></h2> <h2><%= a ? b : c %></h2> <h2><%= a + b %></h2>
2.3 原文输入
如果数据中携带HTML标签,默认模板引擎不会解析标签,会将其本义后输入。
规范语法:{{@ 数据 }}原始语法:<%-数据 %>
<!-- 规范语法 --> <h2>{{@ value }}</h2> <!-- 原始语法 --> <h2><%- value %></h2>
2.4 条件判断
<!-- 规范语法 --> {{if 条件}} ... {{/if}} {{if v1}} ... {{else if v2}} ... {{/if}} <!-- 原始语法 --> <% if (value) { %> ... <% } %> <% if (v1) { %> ... <% } else if (v2) { %> ... <% } %>
2.5 循环
规范语法:{{each 数据}} {{/each}}原始语法:<% for() { %> <% } %>
<!-- 规范语法 --> {{each target}} {{$index}} {{$value}} {{/each}} <!-- 原始语法 --> <% for(var i = 0; i < target.length; i++){ %> <%= i %> <%= target[i] %> <% } %>
2.6 子模版
应用子模板能够将网站公共区块(头部、底部)抽离到独自的文件中。
规范语法:{{include '模板'}}原始语法:<%include('模板') %>
<!-- 规范语法 --> {{include './header.art'}} <!-- 原始语法 --> <% include('./header.art') %>
2.7 模板继承
应用模板继承能够将网站HTML骨架抽离到独自的文件中,其余页面模板能够继承骨架文件。
2.8 模板继承示例
<!doctype html> <html> <head> <meta charset="utf-8"> <title>HTML骨架模板</title> {{block 'head'}}{{/block}} </head> <body> {{block 'content'}}{{/block}} </body> </html>
<!--index.art 首页模板--> {{extend './layout.art'}} {{block 'head'}} <link rel="stylesheet" href="custom.css"> {{/block}} {{block 'content'}} <p>This is just an awesome page.</p> {{/block}}
2.9 模板配置
- 向模板中导入变量 template.defaults.imports.变量名 = 变量值;
- 设置模板根目录 template.defaults.root = 模板目录
- 设置模板默认后缀 template.defaults.extname = '.art'