国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 js教程 使用 mizu.js 增強(qiáng)您的 HTML!

使用 mizu.js 增強(qiáng)您的 HTML!

Dec 09, 2024 am 01:40 AM

想要建立具有終極靈活性和適應(yīng)性的互動(dòng)式 Web 應(yīng)用程式?

看看? mizu.js ???!

它提供了大約 30 個(gè)強(qiáng)大的指令來動(dòng)態(tài)渲染 HTML、監(jiān)聽事件、創(chuàng)建自訂元素、綁定和模型屬性、處理 HTTP 請求、渲染 markdown 和程式碼等等!

它可以在任何現(xiàn)代瀏覽器上在客戶端運(yùn)行......

Supercharge your HTML with mizu.js!

...而且還可以在您最喜歡的運(yùn)行時(shí)上運(yùn)行伺服器端,無論是 Node、Deno 還是 Bun!您甚至可以使用它來產(chǎn)生靜態(tài)網(wǎng)站!

Supercharge your HTML with mizu.js!

為什麼還要另一個(gè) JavaScript 範(fàn)本庫?
我明白你的擔(dān)憂,但請聽我說完!

多年來,我對僅僅為了創(chuàng)建簡單的互動(dòng)式網(wǎng)頁而建立整個(gè)生態(tài)系統(tǒng)的需求感到越來越沮喪。您通常需要一個(gè)專用的工具箱、大量的依賴項(xiàng)、轉(zhuǎn)譯步驟,以及學(xué)習(xí)新的語言超集。您甚至可能最終花在設(shè)定環(huán)境上的時(shí)間比實(shí)際處理專案的時(shí)間還要多!

這就是為什麼我越來越喜歡 Alpine.js 和 htmx 等函式庫,它們不需要設(shè)定且易於使用。然而,我覺得這些有些限制。由於它們主要是為客戶端使用而設(shè)計(jì)的,因此實(shí)際上不可能在伺服器端渲染上下文(包括靜態(tài)生成)中使用它們。

與此同時(shí),我開始編寫越來越多的同構(gòu) JavaScript(即同時(shí)在客戶端和伺服器中工作),並發(fā)現(xiàn) Deno 是它的完美運(yùn)行時(shí)。 Deno 依賴 Web 標(biāo)準(zhǔn),而不是像 Node.js 那樣實(shí)作自己的標(biāo)準(zhǔn)。因此,我遇到了一些不應(yīng)該存在的相容性問題,因?yàn)殚_發(fā)人員應(yīng)該可以自由地使用最適合他們的任何東西,無論是 Node、Deno、Bun 還是瀏覽器。

考慮到所有這些要點(diǎn),我開始研究「水」(mizu,日語中水的漢字),這是一個(gè)試圖解決所有上述問題的新庫。

今天,我很高興向您介紹它!


mizu.js 直接與您的 HTML 集成,並使用普通 JavaScript 表達(dá)式作為其表達(dá)式。這意味著您無需學(xué)習(xí)新的語言或範(fàn)例即可開始使用它。

<!-- Conditionally render elements -->
<a *if="Math.round(Math.random())">Heads!<a>
<b *else>Tails!</b>

<!-- Render list elements dynamically -->
<ul>
  <li *for="const value of ['foo', 'bar', 'baz']" *text="value"></li>
  <li *for="['qux', 'quux', 'corge']" *text="$value"></li>
</ul>

<!-- Bind attributes and handle events -->
<form @submit.prevent :class="{ 'user-form': true }" *set="{ input: '' }">
  <input type="text" ::value="input">
</form>

<!-- Template text content -->
<span *text="`Today is ${new Date()}`"></span>
<span *mustache>Today is {{ new Date() }}</span>

mizu.js 中,指令的第一個(gè)字元表示其用途:

  • * 用於一般指令
  • @ 用於基於事件的指令
  • :用於屬性綁定指令
    • :: 用於雙向綁定指令(也稱為建模)

您可能會(huì)注意到與其他框架和庫的語法有一些相似之處,這是故意的。

mizu.js 是響應(yīng)式的,只要您的資料發(fā)生變化(在客戶端),就會(huì)自動(dòng)更新 DOM。

渲染豐富的內(nèi)容

mizu.js 也提供了一些簡潔的指令來輕鬆渲染豐富的內(nèi)容,例如 markdown 或程式碼語法突出顯示。

<!-- Conditionally render elements -->
<a *if="Math.round(Math.random())">Heads!<a>
<b *else>Tails!</b>

<!-- Render list elements dynamically -->
<ul>
  <li *for="const value of ['foo', 'bar', 'baz']" *text="value"></li>
  <li *for="['qux', 'quux', 'corge']" *text="$value"></li>
</ul>

<!-- Bind attributes and handle events -->
<form @submit.prevent :class="{ 'user-form': true }" *set="{ input: '' }">
  <input type="text" ::value="input">
</form>

<!-- Template text content -->
<span *text="`Today is ${new Date()}`"></span>
<span *mustache>Today is {{ new Date() }}</span>

基於 HTTP 的指令

mizu.js 提供了一組受 htmx 啟發(fā)的指令。

這些指令在用於匯入內(nèi)容的伺服器渲染上下文中特別有用,但它們也可以在客戶端上用於執(zhí)行 HTTP 請求。

<!-- Automatically generate a table of contents from h1-h6 tags within the selected element -->
<nav *toc="'main section'"></nav>

<!-- Render markdown content -->
<div *markdown>**hello world!**</div>

<!-- Highlight syntax using TypeScript flavor -->
<code *code[ts]>const foo = "bar"</code>

使用 HTML 自訂元素

雖然 HTML 本身支援自訂元素,但使用它們可能有點(diǎn)乏味。

mizu.js 使用更簡潔的語法來在文件中定義和使用自訂元素,從而簡化了此過程。

<!-- Fetch and display remote content -->
<div %http="https://example.com" %response.html></div>
<div %http="https://example.com" %response.html="$content.querySelector('h1')"></div>

<!-- Make an HTTP POST request on click and show the response -->
<button 
  %http.post="https://example/api"
  %header[x-foo]="'my custom header'"
  %body.json="{ foo: 'bar' }"
  %@click="alert(await $response.text())"
></button>

獎(jiǎng)勵(lì):您可以透過使用基於 HTTP 的指令匯入自訂元素,輕鬆地在其他專案中重複使用它們!

<!-- Create a custom element -->
<template *custom-element="my-element">
  <div *mustache>
    There is {{ items.length }} items:
    <ul><slot name="items"></slot></ul>
  </div>
</template>

<!-- Use the custom element -->
<my-element>
  <li #items>foo</li>
  <li #items>bar</li>
</my-element>

雜項(xiàng)

我不會(huì)在這裡介紹所有可用的指令,但還有更多可以探索!
以下是一些有趣的精選:

<template 
  *custom-element="my-element" 
  %http="https://example.com/partial/my-element.html" 
  %response.html
></template>

以程式方式使用 mizu.js

到目前為止,我已經(jīng)展示瞭如何直接在 HTML 文件中使用 mizu.js,但您也可以以程式設(shè)計(jì)方式使用它來實(shí)現(xiàn)更高級的用例。

因?yàn)?mizu.js 指令只是普通的 HTML 屬性,所以客戶端和伺服器端渲染的語法保持相同。這意味著您可以輕鬆地在渲染環(huán)境之間切換,而無需更改模板!

<!-- Automatically update the time every second -->
<!-- Perfect for elements where reactivity can't be tracked -->
<time *refresh="1" *mustache>{{ new Date() }}</time>

<!-- Execute raw code for special cases -->
<div *eval="this.remove()"></div>

產(chǎn)生靜態(tài)站點(diǎn)

您可以輕鬆產(chǎn)生靜態(tài)網(wǎng)站

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 *text="foo"></div>`, { context: { foo: "? Yaa, mizu!" } })
    return new Response(body, { headers })
  },
}

今天就開始使用 mizu.js

想在不安裝任何東西的情況下嘗試 mizu.js 嗎?
看看 mizu.sh/playground!

Supercharge your HTML with mizu.js! 弱光者 / 水

? mizu.js 是一個(gè)輕量級的 html 模板引擎,適用於任何側(cè)面渲染。沒有建置步驟,沒有配置,沒有頭痛。

造訪 mizu.sh 了解全面概述!

額外獎(jiǎng)勵(lì): mizu.js 與 matcha.css 完美搭配,讓您的網(wǎng)站看起來棒極了!

以上是使用 mizu.js 增強(qiáng)您的 HTML!的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用於不同的應(yīng)用場景。 Java用於大型企業(yè)和移動(dòng)應(yīng)用開發(fā),而JavaScript主要用於網(wǎng)頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時(shí)間合作? 如何在JS中與日期和時(shí)間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時(shí)間處理需注意以下幾點(diǎn):1.創(chuàng)建Date對像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時(shí)間信息可用get和set方法,注意月份從0開始;3.手動(dòng)格式化日期需拼接字符串,也可使用第三方庫;4.處理時(shí)區(qū)問題建議使用支持時(shí)區(qū)的庫,如Luxon。掌握這些要點(diǎn)能有效避免常見錯(cuò)誤。

為什麼要將標(biāo)籤放在的底部? 為什麼要將標(biāo)籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

JavaScript:探索用於高效編碼的數(shù)據(jù)類型 JavaScript:探索用於高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

什麼是在DOM中冒泡和捕獲的事件? 什麼是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個(gè)階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。 1.事件捕獲通過addEventListener的useCapture參數(shù)設(shè)為true實(shí)現(xiàn);2.事件冒泡是默認(rèn)行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委託,提高動(dòng)態(tài)內(nèi)容處理效率;5.捕獲可用於提前攔截事件,如日誌記錄或錯(cuò)誤處理。了解這兩個(gè)階段有助於精確控制JavaScript響應(yīng)用戶操作的時(shí)機(jī)和方式。

Java和JavaScript有什麼區(qū)別? Java和JavaScript有什麼區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語言。 1.Java是靜態(tài)類型、編譯型語言,適用於企業(yè)應(yīng)用和大型系統(tǒng)。 2.JavaScript是動(dòng)態(tài)類型、解釋型語言,主要用於網(wǎng)頁交互和前端開發(fā)。

See all articles