这是使用 Modulo 时编写脚本的核心技术:创建允许您使用 JavaScript 修改状态的函数。在这种情况下,它执行一个非常简单的操作:“保存这个怪物以供稍后使用”。更准确地说,它将状态变量“选定”分配给给定的有效负载。这样,状态变量“selected”就成为刚刚从 API 中选取的任何怪物的一种“存储”。

附加点击事件

现在,让我们添加另一块拼图:附加单击事件。见下文:

\\\"了解如何创建

这是通过事件附件语法完成的(@click:=,在此
case)和有效负载属性,让我们可以通过单击此图像来传递我们选择的怪物。如果您是 JavaScript 新手(即使您不是!),事件和脚本标签可能是一个令人困惑的主题,因此请仔细阅读本页上的示例,了解使用脚本组件部分和附加事件的更多示例。

附加点击事件

最后,让我们在选择怪物时有条件地渲染怪物信息:

{% if state.selected %}    

{{ state.selected.name|capfirst }}

\\\"了解如何创建

{{ state.selected.description }}

{% else %}

Welcome to Hyrule Monster Guide!

← Select a monster to learn more

{% endif %}

这最初将显示“欢迎”消息(因为 state.selected 开头为空)。然后,一旦有人点击怪物图像,state.selected 变量将不再为 null,并且
相反,内容将以 h1 和 p 标签的格式显示,并应用一些调整(|capfirst 使第一个字母大写)。

- 可嵌入片段

将所有内容结合起来,然后我们将所有内容包装在一个 display: grid 中以形成并排布局,并将一个 Overflow: auto 包装到滚动条的左侧 div 中。最后,我们可以向第二个 div 添加一些最终的 CSS 调整(填充、边距和线性渐变),我们得到可以嵌入到任何地方的以下结果:

我希望您喜欢本教程,如果喜欢,请关注更多类似内容!

","image":"http://www.luping.net/uploads/20241102/173050560767256b87e2a15.png","datePublished":"2024-11-08T21:33:11+08:00","dateModified":"2024-11-08T21:33:11+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 了解如何创建 API 支持的 Zelda BOTW 怪物画廊 Web 组件

了解如何创建 API 支持的 Zelda BOTW 怪物画廊 Web 组件

发布于2024-11-08
浏览:476

模数教程回来了!

大家好!暑假结束后,我带着 Modulo 教程回来了。我正在制作更多教程 - 请继续关注。也就是说,如果您对我的下一个主题有任何具体想法,请务必在评论中告诉我!

我的上一篇教程是关于 API 驱动的 Pokémon Dance Party 组件的超级快速且有趣的“仅 HTML,无 JS”教程,不到 30 行 HTML Web 组件代码。我之前的一些教程有点严肃,比如这个关于管理私有和公共状态的更高级的教程。如果这听起来有点枯燥,那么您很幸运,因为今天的教程是另一个有趣的教程,并且是关于另一个受人喜爱的视频游戏......塞尔达:荒野之息!

当然,一如既往,本教程中学到的技术适用于任何 API,因此请继续阅读以了解有关 API 驱动的图库的更多信息!

如何使用海拉尔纲要 API

本教程 100% 归功于精彩的 Aarav Borthakur 的免费、麻省理工学院许可且慷慨托管的 Hyrule Compendium API,这是一个有趣的、由粉丝维护的数据库和 API,用于检索《塞尔达传说:荒野之息》系列信息和媒体。我们将使用“Monsters”端点,此处可用:https://botw-compendium.herokuapp.com/api/v3/compendium/category/monsters

截屏

Learn how to create a API-backed Zelda BOTW monster gallery web component in <lines (Modulo.js)

立即尝试一下,不到 30 秒: ???想跳过吗?滚动到末尾并将 39 行 HTML 代码复制到任意本地 HTML 文件中,然后在浏览器中打开它。 Modulo 没有依赖关系,甚至可以嵌入本地 HTML 文件中运行,所以真的就是这么简单!


从数据开始

让我们从 6 行代码开始,用一个 StaticData 和一个 Template 来显示它:

模板> 静态数据>

在此片段中,我们有一个非常简单的单行

尝试运行该代码片段。看到结果数据了吗?我们需要使用 for 循环.

来循环它

创建图片库

现在我们可以看到属性 .data 包含 ObjectsArray,让我们循环遍历它并生成一个画廊:

这将生成许多 img 标签,每个标签都将 src= 分配给原始 JSON Array 中的 Objects 的“image”属性,以及 {% for %} template-tag 是为数组中的每个项目复制一些 HTML 的语法(更不用说每个 index,例如从 0 开始计数的数字)。为了进一步练习,Modulo.js 教程的第 4 部分中的 for 循环有很多交互式示例。

创建状态和脚本

接下来最重要的事情是创建一个新的 Script 标签,我们可以用它来编写一个简单的单行 JavaScript 函数:

这是使用 Modulo 时编写脚本的核心技术:创建允许您使用 JavaScript 修改状态的函数。在这种情况下,它执行一个非常简单的操作:“保存这个怪物以供稍后使用”。更准确地说,它将状态变量“选定”分配给给定的有效负载。这样,状态变量“selected”就成为刚刚从 API 中选取的任何怪物的一种“存储”。

附加点击事件

现在,让我们添加另一块拼图:附加单击事件。见下文:

了解如何创建 API 支持的 Zelda BOTW 怪物画廊 Web 组件

这是通过事件附件语法完成的(@click:=,在此
case)和有效负载属性,让我们可以通过单击此图像来传递我们选择的怪物。如果您是 JavaScript 新手(即使您不是!),事件和脚本标签可能是一个令人困惑的主题,因此请仔细阅读本页上的示例,了解使用脚本组件部分和附加事件的更多示例。

附加点击事件

最后,让我们在选择怪物时有条件地渲染怪物信息:

{% if state.selected %}
    

{{ state.selected.name|capfirst }}

了解如何创建 API 支持的 Zelda BOTW 怪物画廊 Web 组件

{{ state.selected.description }}

{% else %}

Welcome to Hyrule Monster Guide!

← Select a monster to learn more

{% endif %}

这最初将显示“欢迎”消息(因为 state.selected 开头为空)。然后,一旦有人点击怪物图像,state.selected 变量将不再为 null,并且
相反,内容将以 h1 和 p 标签的格式显示,并应用一些调整(|capfirst 使第一个字母大写)。

- 可嵌入片段

将所有内容结合起来,然后我们将所有内容包装在一个 display: grid 中以形成并排布局,并将一个 Overflow: auto 包装到滚动条的左侧 div 中。最后,我们可以向第二个 div 添加一些最终的 CSS 调整(填充、边距和线性渐变),我们得到可以嵌入到任何地方的以下结果:

我希望您喜欢本教程,如果喜欢,请关注更多类似内容!

版本声明 本文转载于:https://dev.to/michaelpb/learn-how-to-create-a-api-backed-zelda-botw-monster-gallery-web-component-in-40-lines-modulojs-10eb?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 使用 Quarkus 和 GraalVM 本机映像增强 Java 微服务
    使用 Quarkus 和 GraalVM 本机映像增强 Java 微服务
    在现代软件开发的动态格局中,微服务已成为最受欢迎的架构方法。虽然这种方法提供了许多优点,但它也并非没有挑战。传统的基于 JVM 的服务经常会出现内存占用过大、启动时间过长以及 CPU 使用率过高等问题。这些挑战不仅影响技术方面,还会产生财务影响,从而显着影响运行和维护软件解决方案的总体成本。 ...
    编程 发布于2024-11-08
  • 如何确定 C/C++ 编译器中的行号?
    如何确定 C/C++ 编译器中的行号?
    在 C/C 编译器中获取行号调试 C/C 代码时,确定某个行所在的行号非常有用发生错误。常见的解决方案是手动向代码添加行号,但更有效的方法是使用内置预处理器宏。行号的标准预处理器宏C/C 标准定义了两个预处理器宏:__LINE__:提供当前行号file.__FILE__: 给出当前文件名。用法示例打...
    编程 发布于2024-11-08
  • 如何用PHP和jQuery实现高效的多文件上传?
    如何用PHP和jQuery实现高效的多文件上传?
    使用 PHP 和 jQuery 有效上传多个文件在使用 PHP 时,您可能会遇到需要同时上传多个文件的情况。让我们探讨如何使用 PHP 和 jQuery 实现多个文件上传功能。PHP 和 HTML 配置在您的 HTML 表单中,您将有一个输入字段,其中包含多个属性设置允许多项选择。 JavaScri...
    编程 发布于2024-11-08
  • 如何在 JavaScript 中有效生成不重复随机数?
    如何在 JavaScript 中有效生成不重复随机数?
    在JS中生成不重复的随机数在JS中生成不重复的随机数可以使用多种技术来实现。最初,该方法是通过将新生成的数字添加到数组并与其进行比较来检查是否已创建新生成的数字。但是,由于过多的递归调用,这可能会导致“超出最大调用堆栈大小”错误。一个有效的解决方案是生成一次随机数字列表,然后按顺序处理它。这种方法消...
    编程 发布于2024-11-08
  • 了解 MySQL 中的十进制数据类型
    了解 MySQL 中的十进制数据类型
    MySQL 中的 Decimal 数据类型对于金融相关项目至关重要,其中数值的精度至关重要。最近,我在 Ruby on Rails 项目之一中使用此数据类型时遇到了问题。让我分享一下我的经验和学到的东西。 挑战:超出范围的值错误 在我的项目期间,我在迁移文件中定义了 Decimal ...
    编程 发布于2024-11-08
  • Filament 如何使用 Trait(创建、更新)后重定向到列表页面
    Filament 如何使用 Trait(创建、更新)后重定向到列表页面
    要在 Filament v3 中创建或更新资源后重定向到列表页面,您可以在资源类中使用自定义特征。 创建自定义特征 <?php namespace App\Traits; trait RedirectIndex { protected function getRedirectUrl(...
    编程 发布于2024-11-08
  • 在阅读本文之前,请勿使用 Prisma ORM!
    在阅读本文之前,请勿使用 Prisma ORM!
    想象一下混乱情况,您在 NeonDB 中创建一个具有 0.5GB 存储空间的免费数据库,然后想,“很好,我将使用免费套餐进行测试” 。然后,几个小时后,收到了致命的电子邮件:“您的存储空间已被消耗!”。哇,你什么意思?连椅子都没有热起来!答案是什么呢?我使用了辉煌的 Prisma ORM,为了改进,...
    编程 发布于2024-11-08
  • Net 包如何影响 Go 程序中的死锁检测?
    Net 包如何影响 Go 程序中的死锁检测?
    网络包导入和死锁检测的相互作用在 Go 程序中,如果程序运行时通道操作阻塞,则程序最终会收到“死锁”错误。但是,当导入 net 包时,行为会发生变化。有问题的代码片段:package main import ( "fmt" "net/http"...
    编程 发布于2024-11-08
  • 如何从 MySQL 列数据构造 PHP 数组?
    如何从 MySQL 列数据构造 PHP 数组?
    从 MySQL 列数据构造 PHP 数组使用 mysql_fetch_array 从 MySQL 列检索数据会产生一个表示单行的数组。要创建一个由特定列中所有行的值组成的数组,一种有效的方法是迭代该数组并组装一个新数组:$column = array(); while ($row = mysql_f...
    编程 发布于2024-11-08
  • Go中如何实现禁用语句的高效日志记录?
    Go中如何实现禁用语句的高效日志记录?
    Go 中禁用语句的高效日志记录在关键路径中,嵌入可以动态切换的调试/跟踪日志记录语句是有益的运行时。这种做法非常适合调试离线生产系统或测试镜像生产环境的系统。但是,这种类型的日志记录有一个关键要求:禁用的语句必须对性能影响最小。在 C/C 中,这是通过 LOG 宏实现的,该宏抑制参数求值,直到检查标...
    编程 发布于2024-11-08
  • 如何使用 JavaScript 正则表达式从 HTML 中提取多行文本?
    如何使用 JavaScript 正则表达式从 HTML 中提取多行文本?
    使用 JavaScript 正则表达式从 HTML 中提取多行文本当尝试使用 JavaScript 中的正则表达式从 HTML 检索字符串时,这一点至关重要考虑修饰符的兼容性。在您的场景中,您遇到了多行标志 (/m) 的问题。Dotall 修饰符和 JavaScript该问题源于 JavaScrip...
    编程 发布于2024-11-08
  • 在 MySQL 中以 BLOB 形式存储的图像周围回显文本时,如何避免显示问题?
    在 MySQL 中以 BLOB 形式存储的图像周围回显文本时,如何避免显示问题?
    了解 MySQL BLOB 的图像显示问题当尝试显示在 MySQL 数据库中以 BLOB 形式存储的图像时,开发人员经常会遇到任何文本回显的问题或者图片标题后导致图片显示不正确。问题原因问题出现是因为网络浏览器将图像数据流外部回显的任何文本解释为图像的一部分。这是因为标题和图像数据必须连续且不间断地...
    编程 发布于2024-11-08
  • 如何在Go中高效读写CSV文件?
    如何在Go中高效读写CSV文件?
    Go 中高效读写 CSV 文件数据处理中的一个常见任务是以高性能方式读写 CSV 文件。问题中提供的代码片段演示了一种读取 CSV 文件、处理数据并将其写回的缓慢方法。潜在的低效率在于在处理之前将整个文件加载到内存中的方法。为了优化代码,建议通过调用 .Read() 增量读取文件并一次处理一行。这可...
    编程 发布于2024-11-08
  • 如何使用 PHP 将 HTML 转换为 PDF?
    如何使用 PHP 将 HTML 转换为 PDF?
    使用 PHP 从 HTML 创建 PDF虽然 HTML 通常用于 Web 内容,但在某些情况下可能需要将 HTML 转换为 PDF 。本文探讨了使用 PHP 实现这种转换的可行性和方法。使用 PHP 将 HTML 转换为 PDF 可能吗?是的,使用 PHP 将 HTML 转换为 PDF 是可能的可能...
    编程 发布于2024-11-08
  • 在 C++ 中如何将整数向量转换为分隔字符串?
    在 C++ 中如何将整数向量转换为分隔字符串?
    将整数向量连接成分隔字符串在 C 中,将整数向量转换为由特定字符分隔的字符串可以是通过各种方法实现。使用Stringstream一种方法涉及使用 std::stringstream,如以下代码所示:#include <sstream> //... std::stringstream ss...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3