📅  最后修改于: 2023-12-03 15:12:52.785000             🧑  作者: Mango
顺风 - Html 是一个轻量级的 Html 模板引擎,用于创建动态 Html 页面。它支持模板继承、数据绑定、条件渲染、循环渲染等常用功能,同时提供了简单易用的模板语法,让开发者能够快速地创建符合要求的 Html 页面。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{{title}}</title>
</head>
<body>
<div id="header">
<h1>{{title}}</h1>
</div>
<div id="content">
{{#if articles.length}}
<ul>
{{#each articles as article}}
<li><a href="{{article.url}}">{{article.title}}</a></li>
{{/each}}
</ul>
{{else}}
<p>No articles found.</p>
{{/if}}
</div>
<div id="footer">
<p>© 2021. All rights reserved.</p>
</div>
</body>
</html>
{
"title": "My Blog",
"articles": [
{
"title": "Article 1",
"url": "https://blog.example.com/article1.html"
},
{
"title": "Article 2",
"url": "https://blog.example.com/article1.html"
},
{
"title": "Article 3",
"url": "https://blog.example.com/article1.html"
}
]
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>My Blog</title>
</head>
<body>
<div id="header">
<h1>My Blog</h1>
</div>
<div id="content">
<ul>
<li><a href="https://blog.example.com/article1.html">Article 1</a></li>
<li><a href="https://blog.example.com/article1.html">Article 2</a></li>
<li><a href="https://blog.example.com/article1.html">Article 3</a></li>
</ul>
</div>
<div id="footer">
<p>© 2021. All rights reserved.</p>
</div>
</body>
</html>
您可以通过 npm 包管理器安装顺风 - Html:
npm install shunfeng-html
const shunfeng = require('shunfeng-html');
const template = '<h1>{{title}}</h1>';
const data = { title: 'Hello, World!' };
const html = shunfeng.render(template, data);
console.log(html); // <h1>Hello, World!</h1>
顺风 - Html 使用双括号 {{}} 表示变量绑定,如:
<p>{{content}}</p>
变量 content 将会被替换为相应的值。
顺风 - Html 使用 {{#if condition}} ... {{/if}} 表示条件渲染,如:
{{#if isPublished}}
<p>Published</p>
{{/if}}
当 isPublished 为 true 时,该段内容将会被渲染,否则将被忽略。
顺风 - Html 使用 {{#each list as item}} ... {{/each}} 表示循环渲染,如:
<ul>
{{#each articles as article}}
<li><a href="{{article.url}}">{{article.title}}</a></li>
{{/each}}
</ul>
将会对 articles 数组中的每个元素进行渲染,渲染结果会添加到 ul 中。
顺风 - Html 使用 {{> partial}} 表示子模板引用,如:
{{> header}}
将会引用名为 header 的子模板。
顺风 - Html 支持多种模板继承方式,包括:extends、block、super 和 include 等。
extends 用于指定父模板,block 用于定义子模板定义的块元素。
父模板:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{{title}}</title>
{{#if description}}
<meta name="description" content="{{description}}">
{{/if}}
</head>
<body>
<div id="content">
{{#block "content"}}{{/block}}
</div>
</body>
</html>
子模板:
{{#extends "layout"}}
{{#block "content"}}
<ul>
{{#each articles as article}}
<li><a href="{{article.url}}">{{article.title}}</a></li>
{{/each}}
</ul>
{{/block}}
在子模板中,使用 extends 引用父模板,并使用 block 定义子模板中需要覆盖的块元素。
使用 super 可以在子模板中引用父模板中相同的块元素,如:
{{#block "content"}}
<ul>
{{#each articles as article}}
<li><a href="{{article.url}}">{{article.title}}</a></li>
{{/each}}
</ul>
{{#if articles.length}}
{{super}}
{{else}}
<p>No articles found.</p>
{{/if}}
{{/block}}
在子模板中,使用 super 引用父模板中相同名称的块元素,如此处的 content。
使用 include 可以在模板中引入子模板。
{{#include "header"}}
将会引入名为 header 的子模板。