Node模板引擎的使用

简介: Node模板引擎的使用

模板引擎

1.模板引擎的基础概念

1.2 art-template 模板引擎

在命令行工具中使用npm install art-template命令进行下载

使用const template = require('art-template')引入模板引擎

告诉模板引擎要拼接的数据和模板在哪里: const html = template('模板路径',数据);

基础示例代码如下:

// 导入模板引擎
const template = require('art-template');
const { Agent } = require('http');
const path = require('path');
// 拼接模板路径
const views = path.join(__dirname,'views','index.art')
// template方法是用来拼接字符串的
// 1.模板路径 使用绝对路径
// 2.要在模板中显示的数据 对象类型
// 返回拼接好的字符串
const html = template(views, {
    name: '张三',
    age:20
})
console.log(html);

2.模板引擎语法

2.1 模板语法

art-template同时支持两种模板语法: 标准语法和原始语法。

标准语法可以让模板更容易读写,原始语法具有强大的逻辑处理能力。

2.2 输出

将某项数据输出在模板中,标准语法和原始语法如下:


标准语法:{{数据}}


原始语法:<%=数据%>


2.3 原文输出

如果数据中携带HTML标签,默认模板引擎不会解析标签,会将其转义后输出。


标准语法:{{@数据}}

原始语法:<%-数据 %>

2.4 条件判断

在模板中可以根据条件来决定显示哪块HTML代码。

<!-- 标准语法进行条件判断 -->
{{if age > 18}}
    年龄大于18
{{else if age < 15}}
    年龄小于15
{{else}}
    年龄不符合要求
{{/if}}
<!-- 原始语法进行条件判断 -->
<% if (age > 18) { %>
    年龄大于18
<% } else if (age < 15) { %>
    年龄小于15
<% } else { %>
    年龄不符合要求    
<% } %>

2.5 循环

标准语法:{{each 数据}} {{/each}}

原创语法:<% for() { %> <% } %>

<ul>
    {{each users}}
        <li>
            {{$value.name}}
            {{$value.age}}
            {{$value.sex}}
        </li>
    {{/each}}
</ul>
<ul>
    <% for(var i = 0;i<users.length; i++) { %>
        <li>
            <%= users[i].name%>
            <%= users[i].age%>
            <%= users[i].sex%>
        </li>
    <% }%>
</ul>

2.6 子模板

使用字幕版可以将网站公共区块(头部、底部)抽离到单独的文件中。

标准语法:{{include ‘模板’}}

原始语法:<%include(’模板‘) %>

{{include './common/header.art'}}
<div> {{ msg }} </div>
{{include './common/footer.art'}}
<%include('./common/header.art') %>
<div> {{ msg }} </div>
<%include('./common/footer.art')%>

2.7 模板继承

使用模板继承可以将网站HTML骨架抽离到单独的文件中,其他页面模板可以继承骨架文件。

示例代码如下:

该部分是HTML骨架模板部分:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML骨架模板</title>
    {{block 'link'}} {{/block}}
</head>
<body>
    {{block 'content'}} {{/block}}
</body>
</html>

该部分是填坑部分:

{{extend './common/layout.art'}}
{{block 'content'}}
<p>{{ msg }}</p>
{{/block}}
{{block 'link'}}
<link rel="stylesheet" href="./main.css">
{{/block}}

2.8 模板配置

向模板中导入变量 template.defaults.imports.变量名= 变量值;

设置模板根目录template.defaults.root = 模板目录;

配置模板的默认后缀template.defaults.extname = 后缀名

示例代码如下:

// 导入模板引擎
const template = require('art-template');
const path = require('path');
const dateformat = require('dateformat')
// 设置模板的根目录
template.defaults.root = path.join(__dirname, 'views');
// 导入模板变量
template.defaults.imports.dateformat = dateformat;
// 配置模板的默认后缀
template.defaults.extname = '.html';
// 设置了模板的根目录后,只需要在此处填写要渲染的文件名即可:例如06
const html = template('06.art', {
    time : new Date()
});
// 渲染07.html文件,写入07自动查询文件名为07.html的文件
console.log(template('07', {}))
console.log(html);
目录
相关文章
|
前端开发 JavaScript 关系型数据库
Node框架 【Koa】之 【静态资源管理、模板引擎、连接数据库】
Node框架 【Koa】之 【静态资源管理、模板引擎、连接数据库】
203 0
|
安全 JavaScript
Nodejs Squirrelly 模板引擎 RCE(CVE-2021-32819)漏洞分析(二)
Nodejs Squirrelly 模板引擎 RCE(CVE-2021-32819)漏洞分析
313 0
Nodejs Squirrelly 模板引擎 RCE(CVE-2021-32819)漏洞分析(二)
|
安全 JavaScript 前端开发
Nodejs Squirrelly 模板引擎 RCE(CVE-2021-32819)漏洞分析(一)
Nodejs Squirrelly 模板引擎 RCE(CVE-2021-32819)漏洞分析
248 0
Nodejs Squirrelly 模板引擎 RCE(CVE-2021-32819)漏洞分析(一)
node笔记记录75模板引擎1
node笔记记录75模板引擎1
41 0
node笔记记录75模板引擎1
node笔记记录76模板引擎2
node笔记记录76模板引擎2
64 0
node笔记记录76模板引擎2
node笔记记录78模板引擎4
node笔记记录78模板引擎4
48 0
node笔记记录78模板引擎4
node笔记记录77模板引擎3
node笔记记录77模板引擎3
71 0
node笔记记录77模板引擎3
|
JavaScript 前端开发 API
node.js中使用模板引擎art-template
node.js中使用模板引擎art-template
414 0
node.js中使用模板引擎art-template
|
SQL 存储 前端开发
【NodeJS】归纳篇(三)Express | 链式操作 | cookie && session | 模板引擎 | Router | mysql
【NodeJS】归纳篇(三)Express | 链式操作 | cookie && session | 模板引擎 | Router | mysql
185 0
|
API
Node 03--在Node中使用模板引擎进行渲染
Node 03--在Node中使用模板引擎进行渲染
246 0
Node 03--在Node中使用模板引擎进行渲染