node.js 模板引擎基础知识

186 阅读4分钟

(本文章主要内容包括 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应用

  1. 在终端使用npm install(i) express命令进行下载
  2. 使用const express = require("express")接收
  3. 使用模板引擎将要拼接的数据和模板进行绑定const hteml = template("模板路径",数据);(数据是对象类型)
  4. 使用模板语法告诉模板引擎,模板与数据应该如何进行拼接