想要构建具有终极灵活性和适应性的交互式 Web 应用程序?
看看? mizu.js ??!
它提供了大约 30 个强大的指令来动态渲染 HTML、监听事件、创建自定义元素、绑定和模型属性、处理 HTTP 请求、渲染 markdown 和代码等等!
它可以在任何现代浏览器上在客户端运行......
...而且还可以在您最喜欢的运行时上运行服务器端,无论是 Node、Deno 还是 Bun!您甚至可以使用它来生成静态网站!
多年来,我对仅仅为了创建简单的交互式网页而建立整个生态系统的需求感到越来越沮丧。您通常需要一个专用的工具箱、大量的依赖项、转译步骤,以及学习一种新的语言超集。您甚至可能最终花在设置环境上的时间比实际处理项目的时间还要多! 这就是为什么我越来越喜欢 Alpine.js 和 htmx 等库,它们不需要设置且易于使用。然而,我觉得这些有一些局限性。由于它们主要是为客户端使用而设计的,因此实际上不可能在服务器端渲染上下文(包括静态生成)中使用它们。 与此同时,我开始编写越来越多的同构 JavaScript(即同时在客户端和服务器中工作),并发现 Deno 是它的完美运行时。 Deno 依赖于 Web 标准,而不是像 Node.js 那样实现自己的标准。因此,我遇到了一些不应该存在的兼容性问题,因为开发人员应该可以自由地使用最适合他们的任何东西,无论是 Node、Deno、Bun 还是浏览器。 考虑到所有这些要点,我开始研究“水”(mizu,日语中水的汉字),这是一个试图解决所有上述问题的新库。 今天,我很高兴向您介绍它!为什么还要另一个 JavaScript 模板库?
我明白你的担忧,但请听我说完!
mizu.js 直接与您的 HTML 集成,并使用普通 JavaScript 表达式作为其表达式。这意味着您无需学习新的语言或范例即可开始使用它。
<!-- Conditionally render elements --> <a>Heads!</a><a> <b>Tails!</b> <!-- Render list elements dynamically --> <ul> <li value of> <li> </ul> <!-- Bind attributes and handle events --> <form :class="{ 'user-form': true }" input:> <input type="text" ::value="input"> </form> <!-- Template text content --> <span is date></span> <span>Today is {{ new Date() }}</span> </a>
在 mizu.js 中,指令的第一个字符表示其用途:
- * 用于一般指令
- @ 用于基于事件的指令
-
:用于属性绑定指令
- :: 用于双向绑定指令(也称为建模)
您可能会注意到与其他框架和库的语法有一些相似之处,这是故意的。
mizu.js 是响应式的,只要您的数据发生变化(在客户端),就会自动更新 DOM。
渲染丰富的内容
mizu.js 还提供了一些简洁的指令来轻松渲染丰富的内容,例如 markdown 或代码语法突出显示。
<!-- Conditionally render elements --> <a>Heads!</a><a> <b>Tails!</b> <!-- Render list elements dynamically --> <ul> <li value of> <li> </ul> <!-- Bind attributes and handle events --> <form :class="{ 'user-form': true }" input:> <input type="text" ::value="input"> </form> <!-- Template text content --> <span is date></span> <span>Today is {{ new Date() }}</span> </a>
基于 HTTP 的指令
mizu.js 提供了一组受 htmx 启发的指令。
这些指令在用于导入内容的服务器渲染上下文中特别有用,但它们也可以在客户端上用于执行 HTTP 请求。
<!-- Automatically generate a table of contents from h1-h6 tags within the selected element --> <nav section></nav> <!-- Render markdown content --> <div>**hello world!**</div> <!-- Highlight syntax using TypeScript flavor --> <code>const foo = "bar"</code>
使用 HTML 自定义元素
虽然 HTML 本身支持自定义元素,但使用它们可能有点乏味。
mizu.js 使用更简洁的语法来在文档中定义和使用自定义元素,从而简化了此过程。
<!-- Fetch and display remote content --> <div></div> <div></div> <!-- Make an HTTP POST request on click and show the response --> <button custom header foo:></button>
奖励:您可以通过使用基于 HTTP 的指令导入自定义元素,轻松地在其他项目中重用它们!
<!-- Create a custom element --> <template> <div> There is {{ items.length }} items: <ul><slot name="items"></slot></ul> </div> </template> <!-- Use the custom element --> <my-element> <li>foo</li> <li>bar</li> </my-element>
杂项
我不会在这里介绍所有可用的指令,但还有更多可以探索!
以下是一些有趣的精选:
<template></template>
以编程方式使用 mizu.js
到目前为止,我已经展示了如何直接在 HTML 文档中使用 mizu.js,但您也可以以编程方式使用它来实现更高级的用例。
因为 mizu.js 指令只是普通的 HTML 属性,所以客户端和服务器端渲染的语法保持相同。这意味着您可以轻松地在渲染环境之间切换,而无需更改模板!
<!-- Automatically update the time every second --> <!-- Perfect for elements where reactivity can't be tracked --> <time>{{ new Date() }}</time> <!-- Execute raw code for special cases --> <div></div>
生成静态站点
您可以轻松生成静态站点
import Mizu from "@mizu/render/server" export default { async fetch() { const headers = new Headers({ "Content-Type": "text/html; charset=utf-8" }) const body = await Mizu.render(`<div></div>`, { context: { foo: "? Yaa, mizu!" } }) return new Response(body, { headers }) }, }
今天就开始使用 mizu.js!
想在不安装任何东西的情况下尝试 mizu.js 吗?
查看 mizu.sh/playground!
弱光者
/
水
? mizu.js 是一个轻量级的 html 模板引擎,适用于任何侧面渲染。没有构建步骤,没有配置,没有头痛。
访问 mizu.sh 了解全面概述!
额外奖励: mizu.js 与 matcha.css 完美搭配,让您的网站看起来棒极了!
以上是使用 mizu.js 增强您的 HTML!的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

本文系列在2017年中期进行了最新信息和新示例。 在此JSON示例中,我们将研究如何使用JSON格式将简单值存储在文件中。 使用键值对符号,我们可以存储任何类型的

增强您的代码演示:开发人员的10个语法荧光笔 在您的网站或博客上共享代码片段是开发人员的常见实践。 选择合适的语法荧光笔可以显着提高可读性和视觉吸引力。 t

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

利用轻松的网页布局:8个基本插件 jQuery大大简化了网页布局。 本文重点介绍了简化该过程的八个功能强大的JQuery插件,对于手动网站创建特别有用

核心要点 JavaScript 中的 this 通常指代“拥有”该方法的对象,但具体取决于函数的调用方式。 没有当前对象时,this 指代全局对象。在 Web 浏览器中,它由 window 表示。 调用函数时,this 保持全局对象;但调用对象构造函数或其任何方法时,this 指代对象的实例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。这些方法使用给定的 this 值和参数调用函数。 JavaScript 是一门优秀的编程语言。几年前,这句话可

本文介绍了关于JavaScript和JQuery模型视图控制器(MVC)框架的10多个教程的精选选择,非常适合在新的一年中提高您的网络开发技能。 这些教程涵盖了来自Foundatio的一系列主题


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!