Rumah >hujung hadapan web >tutorial js >Pengenalan kepada HTMX, Perpustakaan UI Dinamik Berpusat HTML
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: Pemasangan htmx
<code class="language-html"></code>
<code class="language-html"><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></code>
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:
<code class="language-html"><button hx-get="/api/resource">Load Data</button></code>
<code class="language-html"></code>
<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 <input>
kami:
<code class="language-html"><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></code>
Dalam kes ini, kita seolah -olah memerlukan kelewatan: <code class="language-html"><button hx-get="/api/resource">Load Data</button></code>
Sekarang apabila anda menaip sesuatu di dalam kotak (cuba menggunakan perkataan yang lebih panjang, seperti "pemaju"), permintaan itu hanya akan dicetuskan jika anda menjeda atau menyelesaikan menaip.
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. <code class="language-html"></code>
<code class="language-html"><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></code>
<code class="language-html"><button hx-get="/api/resource">Load Data</button></code>
elemen sasaran dan pertukaran kandungan
<code class="language-html"><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></code>
Butang Pemilih CSS Extended
Exchange Content
peralihan CSS dalam htmx
<code class="language-html"></code>
Setelah membuat permintaan htmx ajax ke /kandungan baru, pelayan mengembalikan perkara berikut: <code class="language-html"><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></code>
Walaupun kandungan telah berubah, <div>
<pre class="brush:php;toolbar:false"><code class="language-html"><button hx-get="/api/resource">Load Data</button></code></pre> Apabila HTMX memuat kandungan baru, ia mencetuskan peralihan CSS, mewujudkan kemajuan visual yang lancar ke keadaan yang dikemas kini. <p>
</p> Gunakan Api Peralihan Lihat <h3>
</h3> 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. <p>
</p> API Peralihan Lihat adalah ciri eksperimen baru yang kini sedang dalam pembangunan aktif. Pada masa penulisan, API ini dilaksanakan di Chrome 111 dan lebih banyak pelayar dijangka menambah sokongan pada masa akan datang (anda boleh menyemak sokongan mereka di CANIUSE). HTMX menyediakan antara muka untuk menggunakan API Peralihan Lihat dan sandaran kepada mekanisme bukan peralihan dalam pelayar yang tidak menyokong API. <p>
</p> Di HTMX, terdapat dua cara untuk menggunakan API Peralihan Lihat: <p>
</p>
<ul> Tetapkan pembolehubah konfigurasi htmx.config.globalviewtransisi kepada benar. Ini akan menggunakan peralihan untuk semua pertukaran. <li>
</li> Gunakan peralihan: pilihan benar dalam harta swap HX. <li>
</li>
</ul> Lihat peralihan boleh ditakrifkan dan dikonfigurasi menggunakan CSS. Berikut adalah contoh peralihan "melantun" di mana kandungan lama melantun dan kandungan baru melantun dalam: <p>
</p>
<pre class="brush:php;toolbar:false"><code class="language-html"><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></code></pre> Dalam kod HTMX, kami menggunakan peralihan: pilihan benar dalam harta HX-SWAP dan memohon kelas Bounce-IT untuk apa yang kita mahu menghidupkannya: <p>
</p>
<pre class="brush:php;toolbar:false"><code class="language-html">...
hx-trigger="keyup"
...</code></pre> Dalam contoh ini, apabila kandungan <p> dikemas kini, kandungan lama akan melantun dan kandungan baru akan melantun, mewujudkan kesan visual yang menyenangkan dan menarik. <code><div>
ingat bahawa buat masa ini, demo ini hanya tersedia untuk pelayar berasaskan kromium. <p></p>
<h2> Pengesahan Borang </h2>
<p> HTMX mengintegrasikan dengan baik dengan API Pengesahan HTML5 dan akan menghalang permintaan borang daripada dihantar jika pengesahan input pengguna gagal. </p>
Contohnya, apabila pengguna mengklik, permintaan pos dihantar ke /hubungi hanya jika medan input mengandungi alamat e -mel yang sah: <p>
</p>
<pre class="brush:php;toolbar:false"><code class="language-html"></code></pre> Jika kita mahu melangkah lebih jauh, kita boleh menambah beberapa pengesahan sisi pelayan untuk memastikan bahawa hanya gmail.com diterima: <p>
</p>
<pre class="brush:php;toolbar:false"><code class="language-html"><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></code></pre> di sini, kami menambah elemen induk (pembungkus div#) yang mengisytiharkan dirinya sebagai penerima permintaan (menggunakan kata kunci ini) dan menggunakan dasar pertukaran oUterHTML. Ini bermakna bahawa keseluruhan <p> 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. <code><div>
di sebelah pelayan (dalam /kenalan /e -mel), kami boleh menggunakan PHP untuk mengesahkan: <p>
</p>
<pre class="brush:php;toolbar:false"><code class="language-html"><button hx-get="/api/resource">Load Data</button></code></pre> Seperti yang anda lihat, HTMX mengharapkan pelayan untuk mengembalikan HTML (<p> tidak <em> json) dan masukkannya ke lokasi yang ditentukan di halaman. </em>
</p> Jika kita menjalankan kod di atas, taipkan alamat bukan gmail.com ke dalam input, dan kemudian buat input kehilangan fokus, mesej ralat akan muncul di bawah medan yang menyatakan "hanya alamat gmail yang diterima!" <p>
</p> <p> 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. <em> </em>
</p> Ia juga perlu diperhatikan bahawa HTMX mencetuskan satu set peristiwa semasa proses pengesahan, yang boleh kita gunakan untuk menambah kaedah pengendalian logik dan ralat pengesahan kita sendiri. Sebagai contoh, jika kita mahu melaksanakan pemeriksaan e -mel dalam kod JavaScript, kita boleh melakukan ini: <p>
</p>
<pre class="brush:php;toolbar:false"><code class="language-html"><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></code></pre> di sini, kami menggunakan HTMX: Pengesahan: Mengesahkan peristiwa HTMX, yang dipanggil sebelum kaedah Checkvalidity () elemen dipanggil. <p>
</p> Sekarang, apabila kita cuba menghantar borang dengan alamat bukan gmail.com, kita akan melihat mesej ralat yang sama. <p>
</p> apa lagi yang boleh dilakukan htmx? <h2>
<shmx adalah alat yang serba boleh ringan dan mudah digunakan. ia berjaya menggabungkan kesederhanaan html dengan ciri dinamik sering dikaitkan perpustakaan javascript kompleks menyediakan alternatif menarik untuk mewujudkan aplikasi web interaktif.>
<st> Walau bagaimanapun, ia bukan penyelesaian sejagat. Untuk aplikasi yang lebih kompleks, anda masih memerlukan rangka kerja JavaScript. Tetapi jika matlamat anda adalah untuk membuat aplikasi web yang cepat, interaktif dan mesra pengguna tanpa menambah kerumitan terlalu banyak, HTMX pasti patut dipertimbangkan. <p></p>
<p> 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? </p>
<h2> Soalan Lazim Mengenai HTMX (FAQ) </h2>
<h3> Apa itu HTMX dan bagaimana ia berbeza dengan alat reka bentuk UI yang lain? </h3>
<p> 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. </p>
<h3> Bagaimana untuk memulakan dengan HTMX? </h3>
<p> 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. </p>
<h3> Bolehkah htmx digunakan dengan backend? </h3>
<p> 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. </p>
<h3> Apakah beberapa kes penggunaan biasa untuk HTMX? </h3>
<shmx boleh digunakan dalam pelbagai senario di mana anda ingin meningkatkan antara muka pengguna tanpa bergantung pada javascript. ini termasuk penyerahan borang carian masa nyata menatal had kemas kini dan banyak lagi. ia adalah alat yang berkuasa untuk membuat aplikasi web dinamik interaktif.>
Bagaimana htmx mengendalikan peralihan CSS? <h3>
</h3> HTMX mempunyai sokongan terbina dalam peralihan CSS. Anda boleh menggunakan atribut "HX-SWAP" untuk menentukan bagaimana elemen harus ditukar masuk dan keluar apabila permintaan dibuat. Ini membolehkan anda membuat peralihan yang lancar, visual yang menarik tanpa menulis mana -mana JavaScript. <p>
</p> Adakah HTMX serasi dengan semua penyemak imbas? <h3>
</h3> HTMX direka untuk bersesuaian dengan semua pelayar moden. Walau bagaimanapun, kerana ia menggunakan beberapa ciri penyemak imbas yang lebih baru, ia mungkin tidak berfungsi dengan sempurna pada pelayar yang lebih tua atau kurang biasa. Ia sentiasa disyorkan untuk menguji aplikasi anda dalam pelayar yang pengguna boleh gunakan. <p>
</p> Bagaimanakah HTMX meningkatkan prestasi aplikasi web? <h3>
<shmx boleh mengurangkan jumlah javascript yang anda perlukan untuk menulis dengan membolehkan mengakses ciri penyemak imbas moden secara langsung dari html. ini membawa kepada masa beban lebih cepat dan prestasi tinggi terutamanya pada peranti mudah alih di mana menjadi perlahan alih.>
<p> Bolehkah saya menggunakan HTML dan CSS dengan HTML dan CSS saya yang sedia ada? </p>
<h3> Ya, HTML direka untuk bekerja dengan HTML dan CSS anda yang sedia ada. Anda tidak perlu menulis semula kod anda atau belajar bahasa baru untuk memulakan dengan HTMX. Ini menjadikannya pilihan yang sangat baik untuk meningkatkan aplikasi sedia ada. </h3>
<h3> Apakah jenis sokongan yang disediakan oleh HTMX? </h3>
<p> 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. </p>
<h3> Bagaimana untuk menyumbang kepada projek HTMX? </h3>
<p> 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. </p></shmx>
</h3></shmx></st></shmx>
</h2>
</div>
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!