制定网站推广方案,免费动漫软件app下载大全,金华商城网站制作,wordpress flv#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】#x1f91f; 前端学习课程#xff1a;#x1f449;【28个案例趣学前端】【400个JS面试题】#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴#xff0c;请点击【摸鱼学习交流群】 HTML 模板是一种允许我… 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】 前端学习课程【28个案例趣学前端】【400个JS面试题】 想寻找共同学习交流、摸鱼划水的小伙伴请点击【摸鱼学习交流群】 HTML 模板是一种允许我们创建基本 HTML 结构并使用占位符根据从 JSON 文件或数据库中检索到的数据动态生成内容的技术。
让我们考虑一个假设实例其中我们的网站包含许多产品卡每个卡都包含从 JSON 文件中检索到的特定产品详细信息。
现在如果我们要从 JSON 文件中添加或删除任何产品我们将如何在前端动态更新相应的卡片
考虑到我们基于内容的数据存储在 JSON 文件中我们可以继续从现有的 HTML 代码创建可重用的模板。
第 1 步构建模板
作为开发人员您可能熟悉提供动态 Web 内容的概念。实现这一目标的一种方法是使用模板。
我们将创建两个 HTML 模板一个用于产品概览页面一个用于单个产品卡片。
第一个模板template-card.html用作单个产品卡片的蓝图第二个模板template-overview.html用作概览页面的蓝图。这些模板包含占位符当用户请求页面时这些占位符将被替换为实际内容。
确保您的占位符不包含任何属于 HTML 代码的符号。占位符的常用语法是{%PLACEHOLDER_NAME%}.
这是template-card.html我们的第一个模板用作根据需要动态创建尽可能多的卡片的蓝图。
figure classcarddiv classcard__emoji{%IMAGE%}{%IMAGE%}/divdiv classcard__title-boxh2 classcard__title{%PRODUCTNAME%}/h2/divdiv classcard__detailsdiv classcard__detail-boxh6 classcard__detail card__detail {%NOT_ORGANIC%} Organic!/h6/divdiv classcard__detail-boxh6 classcard__detail{%QUANTITY%} per /h6/divdiv classcard__detail-boxh6 classcard__detail card__detail--price {%PRICE%}€/h6/div/diva classcard__link href/product?id{%ID%}spanDetail i classemoji-right/i/span/a/figure由于此卡片将用作模板因此其中包含的信息也应替换为占位符。添加占位符后卡片将类似于以下内容
figure classcarddiv classcard__emoji/divdiv classcard__title-boxh2 classcard__titleApollo Broccoli/h2/divdiv classcard__detailsdiv classcard__detail-boxh6 classcard__detail card__detail--organicOrganic!/h6/divdiv classcard__detail-boxh6 classcard__detail3 per /h6/divdiv classcard__detail-boxh6 classcard__detail card__detail- price5.50€/h6/div/diva classcard__link href/product?idspanDetail i classemoji-right/i/span/a/figure锚标记包含一个 href 链接其中包含一个 ID 的占位符。这表明我们的 JSON 文件中的每张卡或产品都有一个不同的 ID。这些 ID 是唯一的将用于在路由过程中识别每个产品。
此外当我们需要根据元素的类别设置元素样式时CSS 类和 ID 可以用占位符代替就像在图像示例中所做的那样。这种方法在这种情况下特别有用。
bodydiv classcontainerh1 Node Farm /h1div classcards-container{%PRODUCT_CARDS%}/div/div
/body在此示例中我们已将模板卡片替换为占位符。请务必记住我们将使用这个单一模板卡片动态生成多张卡片。
注意这是我们的第二张模板卡template-overview.html
第 2 步填充模板
有趣的部分来了通过用实际内容替换我们的占位符来填充我们的模板。
当用户请求 URL 时代码会同步读取相关模板文件或者template-overview.html或template-card.html用 JSON 文件中的内容动态填充它并将相关内容作为响应发回给用户。
这是通过使用函数实现的replaceTemplate该函数用实际内容替换模板中的占位符。
// SECOND STEP:
const replaceTemplate (temp, product) {let output temp.replace(/{%PRODUCTNAME%}/g, product.productName);output output.replace(/{%IMAGE%}/g, product.image);output output.replace(/{%PRICE%}/g, product.price);output output.replace(/{%ID%}/g, product.id); // /g is a regex global flagreturn output;
}// FIRST STEP:
const tempOverview fs.readFileSync(${__dirname}/templates/template-overview.html, utf-8);
const tempCard fs.readFileSync(${__dirname}/templates/template-card.html, utf-8);
const data fs.readFileSync(${__dirname}/dev-data/data.json, utf-8);
const dataObj JSON.parse(data);// THIRD STEP:
const server http.createServer((req, res) {const pathName req.url;//FOURTH STEP://Here is the Overviewif(pathName / || pathName /overview) {res.writeHead(200, {Content-type: text/html});const cardsHtml dataObj.map(el replaceTemplate(tempCard, el)).join();const output tempOverview.replace({%PRODUCT_CARDS%, cardsHtml);res.end(output);//API} else if(pathName /api) {res.writeHead(200, {Content-type: application/json});res.end(data);// Not Found} else {res.writeHead(404, {Content-type: text/html, //standard headermy-header: hello-world});res.end(h1This page cannot be found./h1);}
});server.listen(8000, 127.0.0.1, () {console.log(Listening to requests on port 8000);
});res.writeHead(404, {Content-type: text/html, //standard headermy-header: hello-world});res.end(h1This page cannot be found./h1);}
});server.listen(8000, 127.0.0.1, () {console.log(Listening to requests on port 8000);
});别担心我们将仔细研究上面的大块代码并用更简单的术语弄清楚它的作用。
首先读取两个 HTML 模板文件和存储在 JSON 文件中的产品数据其次定义一个函数用特定于产品的数据替换模板中的占位符。在这里我们的函数被命名为replaceTemplate第三、监听传入的 HTTP 请求并检查请求 URL 的路径名第四如果路径名为/或/overview则使用replaceTemplatefunction和JSON文件中的产品数据替换tempCard模板中的占位符为每个产品卡生成HTML代码。然后连接每张卡片的结果 HTML 以创建字符串cardsHtml。然后修改模板tempOverview以包含 cardsHtml 字符串并将生成的 HTML 代码作为响应发回。此外如果路径名是/api它会以 JSON 格式发回产品数据作为响应最后如果路径名是其他任何内容则发回 404 错误消息。
哇那段代码看起来确实很多但如果我们仔细看一步一步来它并没有那么复杂。
它所做的只是用真实信息替换一些特殊词并将其发送回网站以便人们可以看到它
HTML 模板的好处
HTML 模板提供了几个好处使其成为 Web 开发人员的热门选择
通过使用 HTML 模板我们将内容与表示分离允许开发人员生成可重复使用的模板这些模板可以处理来自多个来源的不同数量的数据并维护类似代码的多个副本。HTML 模板为呈现数据、改善用户体验和轻松导航站点提供了标准结构。模板的灵活性使得修改底层数据变得更加容易。这节省了时间和精力因为开发人员不需要手动更改 HTML 代码。由于 HTML 模板可重复使用因此更易于维护和更新。可以在不修改模板代码的情况下对基础数据进行更改从而降低出错的可能性。HTML 模板可以在不影响性能的情况下处理大量数据。这使其成为具有大量动态内容的网站的理想选择。
总之HTML 模板是一种高效、一致、灵活且可扩展的技术可简化动态 Web 内容的开发和维护。
通过将内容与表示分离HTML 模板使开发人员能够创建可重用的模板这些模板可以处理不同数量的数据而无需将内容硬编码到每个页面中。
拓展部分
Node.js 中还有其他几个可用的模板引擎例如 EJS、Pug以前称为 Jade、Handlebars 和 Mustache 等。
要在 Node.js 中使用模板引擎您需要通过 npm 安装它然后在您的代码中需要它。这些引擎提供了一种通过将数据插入模板内的占位符来生成 HTML 的方法。
⭐️ 好书推荐
《特效师手册影视剪辑与特效制作从入门到精通剪映版》 【内容简介】 本书根据作者多年的特效制作经验结合目前年轻人喜爱的短视频特效设计、讲解了 11 章内容包括影视剪辑与特效基础、画面特效与人物特效、使用蒙版合成画面、混合模式合成效果、用关键帧制作特效、掌握剪映抠图特效、剪辑影视解说视频、制作影视字幕特效以及制作热门的武侠类特效、仙侠类特效和科幻类特效等帮助读者在较短的时间内从新手成为剪映影视剪辑和特效制作高手。本书既讲解了如何在剪映电脑版中进行影视剪辑与特效制作也讲解了剪映手机版的案例制作步骤让读者买一本书精通剪映的两个版本轻松玩转剪映电脑版 手机版随时随地制作出精彩的影视混剪与特效视频。 京东自营购买链接《特效师手册影视剪辑与特效制作从入门到精通剪映版》