目录
即将举行:Bill 的班卓琴之夜
已结束:Jill 的 70 年代经典音乐会
即将举行:{{event.title}}
已结束:{{event.title}}
{{event.title}}
首页 web前端 css教程 逻辑在jamstack网站上去哪里?

逻辑在jamstack网站上去哪里?

Apr 02, 2025 pm 03:23 PM

Jamstack 架构下逻辑代码的最佳位置选择

构建 Jamstack 网站时,一个关键问题是确定逻辑代码的最佳放置位置。本文通过一个音乐场馆网站的例子,探讨了四种不同的逻辑处理方式,并分析了各自的优缺点。

Where Does Logic Go on Jamstack Sites?

假设该网站的核心功能是展示音乐会列表,包含已结束和即将举行的活动,需要根据日期进行区分。

方案一:直接写入 HTML

最直接的方法是将所有活动信息直接写入 HTML 文件。这种方法简单易懂,但缺点是每次更新活动信息都需要手动修改 HTML 文件并重新部署,效率低下且容易出错。

1

2

<h1 id="即将举行-Bill-的班卓琴之夜">即将举行:Bill 的班卓琴之夜</h1>

<h1 id="已结束-Jill-的-年代经典音乐会">已结束:Jill 的 70 年代经典音乐会</h1>

登录后复制

方案二:构建时处理结构化数据

更有效率的方法是使用结构化数据(例如 Markdown 文件或 headless CMS)存储活动信息,然后使用静态网站生成器(例如 Eleventy)在构建过程中处理逻辑。此方法允许在构建时执行复杂的逻辑操作,例如日期比较、API 调用等。

例如,使用 Markdown 文件表示活动:

1

2

3

4

5

6

---

title: Bill 的班卓琴之夜

date: 2020-09-02

---

 

活动描述...

登录后复制

构建时使用模板进行日期判断:

1

2

3

4

5

{% if event.date > now %}

  <h1 id="即将举行-event-title">即将举行:{{event.title}}</h1>

{% else %}

  <h1 id="已结束-event-title">已结束:{{event.title}}</h1>

{% endif %}

登录后复制

然而,这种方法的日期比较只在构建时执行一次。这意味着活动结束后,需要重新构建网站才能更新信息。虽然可以自动化构建过程,但频繁构建可能会增加成本,并且仍然存在数据滞后的风险。

方案三:边缘计算处理逻辑

随着边缘计算技术的成熟,可以在 CDN 层运行代码处理逻辑。这能够确保每次请求都获取最新的数据,并提供极高的性能。然而,目前边缘计算技术尚不普及。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

// 此代码示例不完整,仅供参考

import eventsList from "./eventsList.json"

function onRequest(request) {

  const now = new Date();

  eventList.forEach(event => {

    if (event.date > now) {

      event.upcoming = true;

    }

  })

  const props = {

    events: events,

  }

  request.respondWith(200, render(props), {})

}

登录后复制

方案四:运行时处理逻辑

最后,可以将结构化数据直接传递到前端,然后使用 JavaScript 在用户设备上执行逻辑操作,动态更新 DOM。这种方法可以根据用户的语言和时区调整日期显示方式,并确保信息始终是最新的。

例如,使用数据属性存储日期信息:

1

<h1 id="event-title">{{event.title}}</h1>

登录后复制

然后使用 JavaScript 进行日期比较:

1

2

3

4

5

6

7

8

9

10

11

function processEvents(){

  const now = new Date()

  events.forEach(event => {

    const eventDate = new Date(event.getAttribute('data-date'))

    if (eventDate > now){

        event.classList.add('upcoming')

    } else {

        event.classList.add('past')

    }

  })

}

登录后复制

结论:逻辑位置选择取决于具体需求

选择哪种逻辑处理方式取决于具体需求。对于静态内容,直接写入 HTML 或构建时处理即可;对于经常变化的内容,建议使用 CMS 和构建时处理;对于实时性要求高的内容,则需要考虑边缘计算或运行时处理。 需要权衡效率、成本和数据实时性等因素,选择最合适的方案。

以上是逻辑在jamstack网站上去哪里?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1422
52
Laravel 教程
1316
25
PHP教程
1267
29
C# 教程
1239
24
Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

如何使用HTML,CSS和JavaScript创建动画倒计时计时器 如何使用HTML,CSS和JavaScript创建动画倒计时计时器 Apr 11, 2025 am 11:29 AM

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

HTML数据属性指南 HTML数据属性指南 Apr 11, 2025 am 11:50 AM

您想了解的有关HTML,CSS和JavaScript中数据属性的所有信息。

使Sass更快的概念证明 使Sass更快的概念证明 Apr 16, 2025 am 10:38 AM

在一个新项目开始时,Sass汇编发生在眼睛的眨眼中。感觉很棒,尤其是当它与browsersync配对时,它重新加载

我们如何创建一个在SVG中生成格子呢模式的静态站点 我们如何创建一个在SVG中生成格子呢模式的静态站点 Apr 09, 2025 am 11:29 AM

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tar​​tanify.com上,我们收集了5,000多个格子呢

如何在WordPress主题中构建VUE组件 如何在WordPress主题中构建VUE组件 Apr 11, 2025 am 11:03 AM

内联式模板指令使我们能够将丰富的VUE组件构建为对现有WordPress标记的逐步增强。

当您看上去时,CSS梯度变得更好 当您看上去时,CSS梯度变得更好 Apr 11, 2025 am 09:16 AM

我关注的一件事是Lea Verou&#039; s conic-Gradient()Polyfill的功能列表是最后一项:

静态表单提供商的比较 静态表单提供商的比较 Apr 16, 2025 am 11:20 AM

让我们尝试在这里造成一个术语:“静态表单提供商”。你带上html

See all articles