模板引擎artTemplate


1. 基础概念

1.1 模板引擎★★★

模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。

让开发者以更加友好的方式拼接字符串,使项目代码更加清晰、更加易于维护。

1.2 art-template模板引擎★★★

介绍

art-template 是一个简约、超快的模板引擎。它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。在线速度测试。

特性

  • 拥有接近 JavaScript 渲染极限的的性能
  • 调试友好:语法、运行时错误日志精确到模板所在行;支持在模板文件上打断点(Webpack Loader)
    支持 Express、Koa、Webpack
  • 支持模板继承与子模板
  • 浏览器版本仅 6KB 大小

2. 模板语法

2.1 输出★★★

标准语法:

{{value}}
{{data.key}}
{{data['key']}}
{{a ? b : c}}
{{a || b}}
{{a + b}}

原始语法:

<%= value %>
<%= data.key %>
<%= data['key'] %>
<%= a ? b : c %>
<%= a || b %>
<%= a + b %>

2.2 原文输出★★★

标准语法:

{{@ value }}

原始语法:

<%- value %>

2.3 条件判断★★★

标准语法:

{{if value}} ... {{/if}}
{{if v1}} ... {{else if v2}} ... {{/if}}

原始语法:

<% if (value) { %> ... <% } %>
<% if (v1) { %> ... <% } else if (v2) { %> ... <% } %>

2.4 循环★★★

标准语法:

{{each target}}
{{$index}} {{$value}}
{{/each}}

原始语法:

<% for(var i = 0; i < target.length; i++){ %>
<%= i %> <%= target[i] %>
<% } %>

2.5 子模板★★★

标准语法:

{{include './header.art'}}
{{include './header.art' data}}

原始语法:

<% include('./header.art') %>
<% include('./header.art', data) %>

2.6 模板继承★★★


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

标准语法:

{{extend './layout.art'}}
{{block 'head'}} ... {{/block}}

原始语法:

<% extend('./layout.art') %>
<% block('head', function(){ %> ... <% }) %>

模板继承允许你构建一个包含你站点共同元素的基本模板“骨架”。范例:

        <!--layout.art--><!doctype html><html><head><meta charset="utf-8"><title>{{block 'title'}}My Site{{/block}}</title>{{block 'head'}}<link rel="stylesheet" href="main.css">{{/block}}</head><body>{{block 'content'}}{{/block}}</body></html><!--index.art-->{{extend './layout.art'}}{{block 'title'}}{{title}}{{/block}}{{block 'head'}}<link rel="stylesheet" href="custom.css">{{/block}}{{block 'content'}}<p>This is just an awesome page.</p>{{/block}}

渲染 index.art 后,将自动应用布局骨架。

2.7 模板配置★★★

  1. 向模板中导入变量 template.defaults.imports.变量名 = 变量值;
  2. 设置模板根目录 template.defaults.root = 模板目录
  3. 设置模板默认后缀 template.defaults.extname = ‘.art’

3. 案例《学生档案管理》

3.1 学生档案创建★★★

  1. 建立项目文件夹并生成项目描述文件

  1. 创建网站服务器实现客户端和服务器端通信

    // 引入http模块
    const http = require('http');
    // 引入模板引擎
    const template = require('art-template');
    // 引入path模块
    const path = require('path');
    // 引入静态资源访问模块
    const serveStatic = require('serve-static');
    // 引入处理日期的第三方模块
    const dateformat = require('dateformat');const router = require('./route/index');
    // 实现静态资源访问服务
    const serve = serveStatic(path.join(__dirname, 'public'))// 配置模板的根目录
    template.defaults.root = path.join(__dirname, 'views');
    // 处理日期格式的方法
    template.defaults.imports.dateformat = dateformat;// 数据库连接
    require('./model/connect');// 创建网站服务器
    const app = http.createServer();
    // 当客户端访问服务器端的时候
    app.on('request', (req, res) => {// 启用路由功能router(req, res, () => {})// 启用静态资源访问服务功能serve(req, res, () => {})
    });
    // 端口监听
    app.listen(80);
    console.log('服务器启动成功');
    
  2. 连接数据库并根据需求设计学员信息表

    const mongoose = require('mongoose');
    // 连接数据库
    mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true }).then(() => console.log('数据库连接成功')).catch(() => console.log('数据库连接失败'))
    
  3. 创建路由并实现页面模板呈递

    // 引入router模块
    const getRouter = require('router');
    // 获取路由对象
    const router = getRouter();
    // 学生信息集合
    const Student = require('../model/user');
    // 引入模板引擎
    const template = require('art-template');
    // 引入querystring模块
    const querystring = require('querystring');// 呈递学生档案信息页面
    router.get('/add', (req, res) => {let html = template('index.art', {});res.end(html);
    })module.exports = router;
    
  4. 实现静态资源访问

    // 引入静态资源访问模块
    const serveStatic = require('serve-static');// 实现静态资源访问服务
    const serve = serveStatic(path.join(__dirname, 'public'))
    
  5. 实现学生信息添加功能

    // 实现学生信息添加功能路由
    router.post('/add', (req, res) => {// 接收post请求参数let formData = '';req.on('data', param => {formData += param;});req.on('end', async () => {await Student.create(querystring.parse(formData))res.writeHead(301, {Location: '/list'});res.end()})
    });
    
  6. 实现学生信息展示功能

    // 呈递学生档案信息列表页面
    router.get('/list', async (req, res) =>{// 查询学生信息let students = await Student.find();console.log(students);let html = template('list.art', {students: students})res.end(html)
    })
    

5.3.2 学生档案展示★★★

// 呈递学生档案信息列表页面
router.get('/list', async (req, res) =>{// 查询学生信息let students = await Student.find();console.log(students);let html = template('list.art', {students: students})res.end(html)
})
<table><caption>学员信息</caption><tr><th>姓名</th><th>年龄</th><th>性别</th><th>邮箱地址</th><th>爱好</th><th>所属学院</th><th>入学时间</th></tr>{{each students}}<tr><th>{{$value.name}}</th><th>{{$value.age}}</th><th>{{$value.sex == '0' ? '男' : '女'}}</th><th>{{$value.email}}</th><th>{{each $value.hobbies}}<span>{{$value}}</span>{{/each}}</th><th>{{$value.collage}}</th><th>{{dateformat($value.enterDate, 'yyyy-mm-dd')}}</th></tr>{{/each}}</table>

模板引擎artTemplate相关推荐

  1. 模板引擎ejs与html,后台模板引擎ejs与前台模板引擎artTemplate的简单介绍

    动态网页是指前端页面当中的数据内容来源于后台数据库,前端的html代码会随着后台数据的变化而变化,是动态生成的.制作动态网页有两种方式,一种方式是在后台拿到前端的html模板,利用后台模板引擎(如ej ...

  2. 前端模板引擎 artTemplate的 使用与进阶

    前端模板引擎 artTemplate的 使用与进阶 查看全文 http://www.taodudu.cc/news/show-3760040.html 相关文章: springboot 整合 free ...

  3. 腾讯的模板引擎---artTemplate

    主要方法如下5种,在此不详细说artTemplate的方法,主要记录三种使用artTemplate的方法. template(id, data) 根据 id 渲染模板.内部会根据document.ge ...

  4. node --- 在express中配置使用模板引擎(art-template)

    下载依赖: npm install --save art-template express-art-template 配置: // app.js const express = require(&qu ...

  5. 服务器端模板引擎art-template的下载和使用

    art-lemplate是新一代高性能JavaScript模板引擎,它可以将数据与HTML模板更加友好地结合起来,省去烦琐的字符串拼接,使代码更易于维护. art-template模板引擎既可以在服务 ...

  6. 模板引擎art-template的介绍

    一 简介 art-template: 下载地址:https://github.com/aui/art-template 通常所说的渲染分为: //1. 浏览器端渲染//对应 template-web. ...

  7. 模板引擎art-template应用 案例 ---- 学生档案管理

    1. 案例介绍 - 学生档案管理 目标:模板引擎应用,强化node.js 项目制作流程 涉及知识点: http请求响应,数据库,模板引擎,静态资源访问 2. 制作流程 建立项目文件夹并声称项目描述文件 ...

  8. 前端模板引擎 artTemplate

    artTemplate是新一代 javascript 模板引擎 特性:性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试) 支持运行时调试,可精确定位异常模板所在语句( ...

  9. 前端模板引擎 -- art-template

    art-template 是一个简约.超快的模板引擎. 它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器. 1.可以 ...

最新文章

  1. Git如何进行版本回退
  2. linux TUN 虚拟网卡设备
  3. 数据结构C语言实现系列——线性表(线性表链接存储(单链表))
  4. window safari 怎么进入响应式_Web前端新手怎么入门 如何用CSS做响应式布局
  5. 线程的五大状态及转换
  6. c语言如何扩大字体,C语言图形汉字及放大显示程序
  7. kettle 插入更新 数据增量_kettle基于时间戳增量更新
  8. python堆栈汉诺塔非递归_汉诺塔问题的递归解法和非递归解法(python语言实现)...
  9. linux service
  10. 使用SQL的全文搜索功能构建 Web 搜索应用程序
  11. 虚拟打印机安装后没了该怎么办
  12. python蒙特卡洛求定积分_蒙特卡洛定积分(一)
  13. 网络图怎么画?简单专业的网络图绘制方法
  14. 【AI简报20210716期】上海张江又一款AI芯发布、寒武纪切入自动驾驶芯片
  15. Ceph分布式存储实战:从0搭建一个存储集群,并把块设备镜像映射到CentOS 7系统上的步骤
  16. 2022年G2电站锅炉司炉考试题库及模拟考试
  17. 一种简单的色彩平衡算法的OPENCV实现
  18. STEM课程经典 | 美国小学标准教材1-5级套装,超过40州使用,让孩子在小学掌握科学思维...
  19. 国科大 - 高级人工智能(沈华伟等)- 期末复习 - 试卷
  20. 艰难的一年!2021年计算机考研年度总结!

热门文章

  1. 餐饮门店点餐系统源码(电脑手机通用)
  2. 如何用计算机管理员权限,window系统管理员权限怎么设置
  3. 费马小定理 素性判断 蒙哥马利算法
  4. 27.ORA - 17008
  5. 常用spaceclaim脚本(二)
  6. MATLAB编写遗传算法求解vrp问题
  7. 华科大计算机学院物联网中心,华中科技大学计算机学院新增物联网工程专业
  8. 请确定扫描仪是否正确连接--清华紫光扫描仪a688
  9. 2020.8.17红队威胁情报-日更
  10. VMware NSX 原理与实践----逻辑路由以及二层网络