切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
HTML
正则表达式
Json
包管理工具
vite
CSS
XPath
JavaScript
Jquery
less
ES6
Vue
React
vue 3
Layui
editor.md
sea.js
Zepto.js
mysql.js
mssql.js
NodeJs
Express
前端template
YAML
杂项
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
前端
前端模板 art-template 继承、子模板及过滤器介绍
[TOC] ## art-template母板继承和局部模板套用介绍 ### 1. 母板继承 #### 1.1 素材文件准备 ##### 1.1.1 母板文件 layout.art 母板定义使用block关键字,关键字后面是对应区域的名称,例如 `{{block 'title'}}`,一个母板文件中可以多处定义block,被定义的block包括住的内容都可以在继承的子模板中进行替换,block名称需在一个母板文件中唯一。 ```html <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0, maximun-scale=1.0, minimun-scale=1.0"> <title>{{block 'title'}} art-template 模板 {{/block}} </title> {{block 'head'}} <style> body { background-color: black; color: white; } </style> {{/block}} </head> <div id="app"> {{block 'content'}} {{/block}} </div> <script type="text/javascript"> </script> </html> ``` ##### 1.1.2 继承母模板的子模板 继承母模板需要使用extend关键字,后面是母板的位置,这个位置是相对与执行渲染功能的js文件,例如本案例指的就是下面的application.js文件 + 文件一 index.art + 访问路径:http://localhost:3000/index.html ```html {{extend '../00-tpl/layout.art'}} {{block 'title'}}{{title}}{{/block}} {{block 'content'}} <p>从我开始学习art-template吧.</p> {{/block}} ``` + 文件二 artListen1.art - 访问路径:http://localhost:3000/artListen1.html ```html {{extend '../00-tpl/layout.art'}} {{block 'title'}}{{title}}{{/block}} {{block 'head'}}{{@ styleAndscript}}{{/block}} {{block 'content'}} {{@ content}} {{/block}} ``` ##### 1.1.3 渲染处理业务的 application.js ```js const paths = require("path") const fs = require("fs") const http = require("http") const template = require("art-template") http.createServer((req, res) => { let url = paths.join(__dirname, "../00-tpl", req.url.replace("html", "art")) let dtype = "text/plain;charset=utf8" let stateCode = 200 if (req.url.startsWith("/index") && req.method == "GET") { dtype = "text/html;charset=utf8" //填充数据 let content = template(url, { title: "欢迎开启art-template学习之旅" }) res.writeHead(stateCode, { "content-type": dtype }) res.end(content); } else if (req.url.startsWith("/artListen1") && req.method == "GET") { dtype = "text/html;charset=utf8" let styleArray = []; styleArray.push("<style>") styleArray.push("body {") styleArray.push("background-color: black;") styleArray.push("color: white;}") styleArray.push("</style>") //填充数据 let content = template(url, { title: "art-template学习之旅第一课", styleAndscript: styleArray.join(""), content: "<h2>开始今天的学习吧第一个</h2>" }) res.writeHead(stateCode, { "content-type": dtype }) res.end(content); } else { res.writeHead(500, { "content-type": dtype }) res.end("server error"); } }).listen(3000, () => { console.log("服务已启动") }) ``` 以上文件的目录结果根据代码自行调整 ### 2. 局部模板套用 #### 2.1 素材文件准备 ##### 2.1.1 调整上面的文件 artListen1.art 在artListen1.art文件中引入子模板内容,使用关键字include,语法为{{include '文件路径' data}},data默认为实例化模板时传入的$data,template(url, data)传入的data,所以语法也可以简写为{{include '文件路径'}},如果在模板中引入子模板,主要引入需要放在block区块中。 ```html {{extend '../00-tpl/layout.art'}} {{block 'title'}}{{title}}{{/block}} {{block 'head'}}{{@ styleAndscript}}{{/block}} {{block 'content'}} {{@ content}} {{@ content}} <div>{{include '../00-tpl/foo.art'}}</div> {{/block}} ``` ##### 2.1.2 局部模板文件 foo.art ```html <div style="background-color:#fff;color:black;"> {{@ title}} {{@ content}} <div> ``` 执行文件仍然是上面的application.js ### 3. 过滤器 过滤器其实就是在模板文件中使用自定义的函数,自定义函数需要创建在template.defaults.imports中,例如:template.defaults.imports.date = function(date){} #### 3.1 素材文件准备 ##### 3.1.1 修改artListen1.art模板文件 在{{block 'content'}}模板块中添加过滤器(调用模板扩展的自定义函数) ```html <!-- …… 省略原代码 --> {{block 'content'}} <!-- …… 省略原代码 --> {{date('2023-01-10')}}<br/><br/> {{@ date('2022-01-10')}}<br/><br/> {{/block}} ``` ##### 3.1.2 调整application.js的文件 在文件中添加模板扩展函数 ```js //…… 省略原代码 template.defaults.imports.date = function(date){ if(new Date(date.replace(/-/g,'/')) > new Date()) { return '参数时间大于当前时间' }else{ return '<span style="color:red">参数时间小于当前时间</span>' } } ```
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号