Panduan ini akan meneroka keupayaan HTMX, bagaimana ia memudahkan pembangunan web yang dinamik, dan bagaimana ia dapat memanfaatkan potensi untuk meningkatkan proses pembangunan web anda.
mata utama
Sebaliknya, aplikasi halaman tunggal (SPA) bergantung pada JavaScript yang berjalan di pelayar untuk menguruskan keadaan permohonan. Mereka berkomunikasi dengan pelayan menggunakan panggilan API, yang mengembalikan data, biasanya dalam format JSON. Spa kemudian menggunakan data ini untuk mengemas kini antara muka pengguna tanpa menyegarkan halaman, memberikan pengalaman pengguna yang lebih lancar, agak serupa dengan desktop asli atau aplikasi mudah alih. Walau bagaimanapun, pendekatan ini tidak sempurna sama ada. Overhead pengiraan biasanya lebih tinggi kerana pemprosesan pelanggan yang besar;
HTMX menyediakan kompromi untuk kedua -dua situasi yang melampau. Ia menyediakan kelebihan pengalaman pengguna SPA-tanpa memuat semula halaman penuh-sambil mengekalkan kesederhanaan pelayan MPA. Dalam model ini, pelayan tidak mengembalikan data yang diperlukan oleh klien untuk mentafsir dan membuat, tetapi
tetapi serpihan HTML. Kemudian, HTMX hanya menggantikan coretan ini untuk mengemas kini antara muka pengguna. Pendekatan ini memudahkan proses pembangunan dengan meminimumkan kerumitan klien dan sejumlah besar ketergantungan JavaScript yang biasa digunakan oleh SPA. Ia tidak memerlukan persediaan rumit dan menyediakan pengalaman pengguna yang lancar dan responsif. Terdapat pelbagai cara untuk memasukkan HTMX dalam projek anda. Anda boleh memuat turunnya terus dari halaman GitHub projek anda, atau jika anda menggunakan Node.js, anda boleh memasangnya melalui NPM menggunakan NPM Command Pasang HTMX.org. Walau bagaimanapun, cara paling mudah (yang akan digunakan dalam panduan ini) adalah untuk memasukkannya melalui rangkaian penghantaran kandungan (CDN). Ini membolehkan kami mula menggunakan HTMX tanpa sebarang proses persediaan atau pemasangan. Cukup masukkan tag skrip berikut dalam fail HTML anda: Tag skrip ini menunjukkan versi 1.9.4, tetapi jika versi yang lebih baru tersedia, anda boleh menggantikan "1.9.4" dengan versi terkini. HTMX sangat ringan, dengan versi minimum dan GZIP seberat ~ 14KB. Ia tidak mempunyai kebergantungan dan serasi dengan semua pelayar utama, termasuk IE11. Selepas menambah HTMX ke projek anda, anda mungkin ingin menyemak sama ada ia berfungsi dengan betul. Anda boleh mengujinya dengan contoh mudah berikut: Apabila mengklik butang, jika HTMX berfungsi dengan betul, ia akan menghantar permintaan GET ke API Joke dan menggantikannya dengan respons pelayan.
Kandungan
Pertimbangkan yang berikut:
Apa yang berlaku selepas pelayan mengembalikan data? Secara lalai, HTMX akan menyuntik tindak balas ini terus ke dalam elemen permulaan -dalam contoh kami, butang. Walau bagaimanapun, HTMX tidak terhad kepada tingkah laku ini dan memberikan keupayaan untuk menentukan data tindak balas sebagai elemen sasaran. Kami akan meneroka ciri ini lebih mendalam di bahagian seterusnya. permintaan pencetus dengan htmx mari kita tunjukkan ini dengan memperluaskan contoh jenaka di atas, yang membolehkan pengguna mencari lelucon yang mengandungi kata -kata tertentu: Untuk mencetuskan carian, kita perlu mencetuskan peristiwa perubahan. Untuk unsur -unsur Hasilnya kini akan dikemas kini dengan segera. Ini bagus, tetapi ia memperkenalkan masalah baru: kami kini menggunakan panggilan API dengan setiap akhbar utama. Untuk mengelakkan ini, kita boleh menggunakan pengubah untuk mengubah tingkah laku pencetus. HTMX menyediakan perkara berikut:
Apabila HTMX membuat permintaan AJAX, ia menggunakan kelas HTMX-Request ke elemen permulaan. Kelas HTMX-Request akan menyebabkan elemen (atau mana-mana elemen kanak-kanak dengan kelas penunjuk HTMX) untuk beralih ke kelegapan 1. Sebagai contoh, pertimbangkan elemen yang menggunakan pemutar beban sebagai penunjuk permintaannya: Apabila butang dengan atribut HX-GET diklik dan permintaan dimulakan, butang menerima kelas HTMX-Request. Ini menyebabkan imej dipaparkan sehingga permintaan selesai dan kelas dipadam. Anda juga boleh menggunakan harta penunjuk htmx untuk menunjukkan elemen mana yang harus menerima kelas HTMX-Request. mari kita tunjukkan ini dengan contoh API jenaka kami: NOTA: Kita boleh mendapatkan gaya CSS pemutar dari Loader CSS dan Spinner. Terdapat banyak yang boleh dipilih; Ini akan menyebabkan pemutar beban muncul apabila permintaan sedang berjalan. Jika rangkaian kami cepat, pemutar hanya akan berkedip secara ringkas apabila permintaan dibuat. Jika kami ingin memastikan ia wujud, kami boleh menggunakan alat pembangunan penyemak imbas untuk menghadkan kelajuan sambungan rangkaian kami. atau, hanya untuk bersenang -senang (iaitu, jangan lakukan ini dalam aplikasi sebenar), kita boleh mengkonfigurasi HTMX untuk mensimulasikan beberapa latency rangkaian: Ini mengambil kesempatan daripada sistem acara HTMX, yang boleh kita gunakan untuk mengubah suai dan meningkatkan tingkah lakunya. Di sini kita menggunakan acara HTMX: AfterOnload, yang kebakaran selepas Ajax Onload selesai. Saya juga menggunakan fungsi tidur dari artikel SitePoint mengenai topik yang sama. Ini adalah demo selesai. Taipkan sesuatu di dalam kotak (seperti "JavaScript") dan kemudian perhatikan penunjuk beban selepas memulakan permintaan. seperti yang anda lihat, ini membolehkan kami melaksanakan corak kotak carian aktif dengan hanya beberapa baris kod klien. Dalam beberapa kes, kita mungkin ingin mengemas kini elemen yang berbeza dari yang memulakan permintaan tersebut. HTMX membolehkan kami menggunakan atribut sasaran HX untuk mencari elemen tertentu untuk respons AJAX. Harta ini boleh mengambil pemilih CSS, yang HTMX akan digunakan untuk mencari unsur -unsur yang akan dikemas kini. Sebagai contoh, jika kita mempunyai borang yang menyiarkan komen baru ke blog kami, kami mungkin mahu melampirkan komen baru ke senarai komen dan bukannya mengemas kini borang itu sendiri. kita sebenarnya melihat ini dalam contoh pertama: tidak menggantikan kandungannya sendiri, tetapi harta sasaran HX mengisytiharkan bahawa respons harus menggantikan kandungan elemen dengan id "container jenaka". HTMX juga menyediakan beberapa kaedah yang lebih maju untuk memilih elemen yang mana kandungan harus dimuatkan. Ini termasuk ini, paling dekat, seterusnya, sebelumnya dan mencari. merujuk kepada contoh terdahulu kami, kami juga boleh menulis hx-target = "seterusnya p" untuk mengelakkan menentukan ID. Secara lalai, HTMX akan menggantikan kandungan elemen sasaran dengan respons AJAX. Tetapi bagaimana jika kita mahu melampirkan kandungan baru dan bukannya menggantikannya? Di sinilah atribut HX-SWAP masuk. Harta ini membolehkan kami menentukan bagaimana kandungan baru dimasukkan ke dalam elemen sasaran. Nilai yang mungkin adalah oUterHTML, innerHTML, sebelumBegin, Afterbegin, sebelum ini, dan Afterend. Sebagai contoh, menggunakan hx-swap = "sebelum ini" akan menambah kandungan baru ke akhir elemen sasaran, yang sesuai untuk senario komen baru kami. Peralihan CSS membolehkan gaya elemen ditukar dengan lancar dari satu negeri ke negeri yang lain tanpa menggunakan JavaScript. Peralihan ini boleh semudah perubahan warna atau kompleks sebagai transformasi 3D lengkap.
mengekalkan ID yang sama. Walau bagaimanapun, kelas Fadein telah ditambah kepada kandungan baru. Sekarang kita boleh membuat peralihan CSS yang lancar peralihan dari keadaan awal ke keadaan baru:
dikemas kini, kandungan lama akan melantun dan kandungan baru akan melantun, mewujudkan kesan visual yang menyenangkan dan menarik. HTMX mengintegrasikan dengan baik dengan API Pengesahan HTML5 dan akan menghalang permintaan borang daripada dihantar jika pengesahan input pengguna gagal.
akan digantikan dengan respons pelayan, walaupun ia bukan elemen yang sebenarnya mencetuskan permintaan. Kami juga menambah hx-post = "/hubungi/e-mel" ke medan input, yang bermaksud bahawa apabila medan ini kabur, ia menghantar permintaan pos ke titik akhir/kenalan/e-mel. Permintaan ini akan mengandungi nilai medan kami.
tidak json) dan masukkannya ke lokasi yang ditentukan di halaman.
NOTA: Apabila memasukkan kandungan secara dinamik ke dalam DOM, kita juga harus mempertimbangkan bagaimana pembaca skrin menafsirkan kandungan ini. Dalam contoh di atas, mesej ralat berada di dalam tag kami, jadi pembaca skrin akan membaca medan pada kali berikutnya ia mendapat tumpuan. Jika mesej ralat dimasukkan ke tempat lain, kita harus mengaitkannya dengan medan yang betul menggunakan harta Aria-DepribedBy.
Apabila pembangunan web terus berkembang, alat seperti HTMX menyediakan cara baru yang menarik untuk membina pengalaman pengguna yang lebih baik. Mengapa tidak mencubanya dalam projek masa depan dan lihat apa yang boleh dilakukan oleh HTMX untuk anda? HTMX adalah lanjutan HTML yang moden dan ringan untuk Ajax, peralihan CSS, WebSockets, dan acara penghantaran pelayan. Ia membolehkan anda mengakses ciri penyemak imbas moden secara langsung dari HTML tanpa JavaScript atau jQuery. Ini menjadikannya berbeza dari alat reka bentuk UI yang lain, yang sering bergantung pada JavaScript. HTMX mudah diintegrasikan dengan mana -mana backend dan tidak memerlukan anda menulis semula kod sedia ada. Ia adalah alat yang berkuasa untuk meningkatkan antara muka pengguna sambil mengekalkan kod mudah dan mudah dijaga. Sangat mudah untuk memulakan dengan HTMX. Anda hanya perlu memasukkan skrip HTML dalam fail HTML. Sebaik sahaja anda telah melakukan ini, anda boleh mula menggunakan sifat HTMX dalam tag HTML untuk membolehkan AJAX, WebSockets, dan ciri -ciri lain. Laman web HTMX menyediakan panduan dan contoh yang komprehensif untuk memulakan anda. Ya, salah satu kelebihan utama HTMX adalah ciri-ciri bebas backendnya. Ia boleh digunakan dengan mana-mana bahasa atau rangka kerja pelayan. Ini menjadikannya alat sejagat untuk pemaju yang bekerja di persekitaran yang berbeza. Pemasangan htmx
<🎜>
<button hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode&type=single"
hx-target="#joke-container">
Make me laugh!
</button>
<p id="joke-container">Click the button to load a joke...</p>
permintaan ajax: kaedah htmx
Salah satu titik jualan utama HTMX ialah ia membolehkan pemaju menghantar permintaan AJAX secara langsung dari elemen HTML dengan memanfaatkan satu set atribut yang berbeza. Setiap atribut mewakili kaedah permintaan HTTP yang berbeza:
<button hx-get="/api/resource">Load Data</button>
<🎜>
<input>
, ini berlaku apabila nilai elemen berubah dan kehilangan tumpuan. Oleh itu, taipkan sesuatu di dalam kotak (seperti "bar"), klik di tempat lain pada halaman, dan jenaka akan muncul dalam elemen <div>
. Ini bagus, tetapi biasanya pengguna ingin mengemas kini hasil carian mereka ketika mereka menaip. Untuk melakukan ini, kita boleh menambah atribut pencetus HTMX ke elemen <input>
kami: <button hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode&type=single"
hx-target="#joke-container">
Make me laugh!
</button>
<p id="joke-container">Click the button to load a joke...</p>
Dalam kes ini, kita seolah -olah memerlukan kelewatan: <button hx-get="/api/resource">Load Data</button>
Dalam pembangunan web, maklum balas pengguna adalah penting, terutamanya dalam operasi yang mungkin mengambil banyak masa untuk diselesaikan (seperti mengeluarkan permintaan rangkaian). Cara yang sama untuk memberikan maklum balas ini adalah melalui penunjuk permintaan -prompt visual yang menunjukkan bahawa operasi sedang berjalan. <🎜>
<button hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode&type=single"
hx-target="#joke-container">
Make me laugh!
</button>
<p id="joke-container">Click the button to load a joke...</p>
<button hx-get="/api/resource">Load Data</button>
elemen sasaran dan pertukaran kandungan
<label for="contains">Keyword:</label>
<input type="text"
placeholder="Enter a keyword..."
hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode"
hx-target="#joke-container"
name="contains" />
<p id="joke-container">Results will appear here</p>
Pemilih CSS Extended
Exchange Content
peralihan CSS dalam htmx
<🎜>
<button hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode&type=single"
hx-target="#joke-container">
Make me laugh!
</button>
<p id="joke-container">Click the button to load a joke...</p>
<div>
<button hx-get="/api/resource">Load Data</button>
API Peralihan Pandangan Baru menyediakan cara untuk menghidupkan antara keadaan yang berbeza dari elemen DOM. Tidak seperti peralihan CSS, yang melibatkan perubahan sifat CSS elemen, melihat peralihan adalah kira -kira menghidupkan kandungan elemen. Tetapkan pembolehubah konfigurasi htmx.config.globalviewtransisi kepada benar. Ini akan menggunakan peralihan untuk semua pertukaran.
Lihat peralihan boleh ditakrifkan dan dikonfigurasi menggunakan CSS. Berikut adalah contoh peralihan "melantun" di mana kandungan lama melantun dan kandungan baru melantun dalam: <label for="contains">Keyword:</label>
<input type="text"
placeholder="Enter a keyword..."
hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode"
hx-target="#joke-container"
name="contains" />
<p id="joke-container">Results will appear here</p>
...
hx-trigger="keyup"
...
<div>
Pengesahan Borang
<🎜>
<button hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode&type=single"
hx-target="#joke-container">
Make me laugh!
</button>
<p id="joke-container">Click the button to load a joke...</p>
<div>
<button hx-get="/api/resource">Load Data</button>
<label for="contains">Keyword:</label>
<input type="text"
placeholder="Enter a keyword..."
hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode"
hx-target="#joke-container"
name="contains" />
<p id="joke-container">Results will appear here</p>
Soalan Lazim Mengenai HTMX (FAQ)
Apa itu HTMX dan bagaimana ia berbeza dengan alat reka bentuk UI yang lain?
Bagaimana untuk memulakan dengan HTMX?
Bolehkah htmx digunakan dengan backend?
Apakah beberapa kes penggunaan biasa untuk HTMX?
Adakah HTMX serasi dengan semua penyemak imbas?
Bagaimanakah HTMX meningkatkan prestasi aplikasi web?
Bolehkah saya menggunakan HTML dan CSS dengan HTML dan CSS saya yang sedia ada?
HTMX adalah projek sumber terbuka dan mempunyai komuniti pemaju yang bersemangat untuk menggunakan dan menyumbang kepadanya. Anda boleh mendapatkan bantuan dan nasihat di laman web HTMX, GitHub, dan pelbagai forum dalam talian.
Sebagai projek sumber terbuka, HTMX mengalu -alukan sumbangan masyarakat. Anda boleh menyumbang dalam pelbagai cara, dari melaporkan pepijat dan mencadangkan ciri -ciri baru untuk menulis kod dan meningkatkan dokumentasi. Lihat halaman HTMX Github untuk mengetahui cara terlibat.
Atas ialah kandungan terperinci Pengenalan kepada HTMX, Perpustakaan UI Dinamik Berpusat HTML. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!