(本文章主要内容包括 Node模板一些知识 如有Bug或者写错字体的话请指出来 谢谢 未经过本人允许禁止转载! 禁止转载! 禁止转载!)
模版引擎Art-template 官方文档地址:aui.github.io/art-templat…
简介:模版引擎是第三方模块,可以让开发者以更加友好的方式拼接字符串、根据开发人员定义的模版结构和数据,自动生成一个完整的HTML页面的模式,使项目代码更加清晰、更加容易维护
未使用模板引擎和使用模板引擎的对比:
// 未使用模板引擎的写法
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>
一.art-template模板引擎 art-template模版引擎 1.在终端中使用npm install(i) art-template 命令进行下载 2.使用const template = require("art-template")引入模板引擎 3.使用模板引擎将要拼接的数据和模板进行绑定 const html = template("模板路径",数据); //(数据要是对象类型) 4.使用模版引擎告诉模板引擎,模板与数据应该与如何进行拼接
// 导入模板引擎模块
const template = require('art-template');
// 将特定模板与特定数据进行拼接
const html = template('./views/index.art', {
data: {
name: '张三',
age: 20
}
})
art模板代码
<div>
<span>{{data.name}}</span>
<span>{{data.age}}</span>
</div>
二、模板引擎语法 art-template同时支持两种模板语法:标准语法和原始语法(标准语法可以让模板更容易读写,于是语法具有强大的逻辑处理能力)
标准语法:{{数据}}
原始语法:<%=数据%>
输出 将某项数据输出在模板中,标准语法和原始语法
js● 标准语法:{{ 数据 }}
<!-- 标准语法
使用两对{{}}包裹
输出变量的时候直接输出变量名或表达式
-->
<h2>{{value}}</h2>
<h2>{{a ? b : c}}</h2>
<h2>{{a + b}}</h2>
● 原始语法:<%=数据 %>
<!-- 原始语法
使用<% %>包裹
输出变量的时候需要使用=变量名或表达式 -->
<h2><%= value %></h2>
<h2><%= a ? b : c %></h2>
<h2><%= a + b %></h2>和原始语法
原文输出:
如果数据中携带HTML标签,more模板引擎不会解析标签,会将其转义后输出
● 标准语法:{{@ 数据 }}
<!--
如果想要将渲染的数据中的html标签进行解析
需要使用@ 变量名
-->
<h2>{{@ value }}</h2>
● 原始语法:<%-数据 %>
<!--
如果想要将渲染的数据中的html标签进行解析
需要使用- 变量名
-->
<h2><%- value %></h2>
条件判断:
● 标准语法:
{{if 条件}}…{{/if}}
<!--
使用条件判断的话,在if后面直接写判断条件
if语句结束时,使用/if
-->
{{if 1>1 }}
{{ name }}
{{ /if }}
{{if 条件}}…{{else}}…{{/if}}
{{if 1>1 }}
{{ name }}
{{else}}
{{ age }}
{{ /if }}
{{if条件1}}…{{else if条件2}}…{{/if}}
{{if 2>3 }}
{{ name }}
{{else if 2>1}}
{{ age }}
{{else}}
{{ sex }}
{{ /if }}
● 原始语法:
<% if(条件){ %>…<% } %>
<% if(条件) { %>…<% }else{ %>…<% } %>
<% if(条件1) { %>…<% }else if(条件2){ %>…<% } %>
循环:
● 标准语法:{{each 数据}} {{/each}}
<!--
使用循环语句的话,使用each后面写上要被循环输出的内容
$index表示下标 $value表示内容
for循环语句结束时,使用/each
-->
{{ each content }}
{{$index}} {{$value}}
{{ /each }}
● 原始语法:<% for() { %> <% } %>
<% for(let i=0; i < content.length; i++){%>
<%= i %> <%= content[i] %>
<% } %>
(1)模板继承可以将HTML骨架抽离到单独的文件里,其他页面模板可以继承这个骨架文件
(2)模版配置 art-tamplate中开放了一些配置,通过这些配置可以让其被我们更加灵活的使用,导入模板中,模版中就可以正常使用这些方法
(3)模版变量: 向模板中导入变量template.defaults.import.变量名 = 变量值,将要使用的方法作为变量导入模板中,模板中就可以正常使用这些方法 // 将moment库格式化日期的方法导入到模板中 template.defaults.imports.dateFormat = dateFormat
art模板文件中
<header>
<p>
{{ dateFormat(time).format("YYYY-MM-DD HH:mm:ss") }}
</p>
</header>
(4)模板根目录 设置模板所处的路径作为模板的根路径后,在进行数据与模板绑定时,无需书写大量获取模板路径的重复代码,只需对应的模板名
template.defaults.root=”模板根目录”
// 设置模板的根目录,可以帮助我们减少代码的冗余
template.defaults.root = path.join(__dirname, "views")
(5)模版文件默认扩展名 配置模板的默认扩展名后,在进行数据模板绑定时,无需再写模板的后缀名 // 设置模板的后缀名,可以帮助我们减少代码量
template.defaults.extname = ".art"
/*
template方法用来将模板与数据进行绑定,将数据渲染到模板中,从而显示到页面上
参数1 模板的路径
参数2 要被渲染到模板中的数据
返回的内容是拼接好的字符串
*/
const html = template("index", datas)
压缩页面
压到页面HTML、JS、CSS、,加快静态资源传输速度,因为是在编译阶段运行的,因此完全不影响渲染的速度
//开启静态资源页面压缩
template.defauls.minimize = true
三、Express 高度包容、极速而极简的Node.js Web框架 Express是一个基于Node平台的web应用开发框架,他提供了一系列的强大特性,帮助你创建各种Web应用
- 在终端使用npm install(i) express命令进行下载
- 使用const express = require("express")接收
- 使用模板引擎将要拼接的数据和模板进行绑定const hteml = template("模板路径",数据);(数据是对象类型)
- 使用模板语法告诉模板引擎,模板与数据应该如何进行拼接