cari
Rumahhujung hadapan webtutorial cssMembuat komponen web untuk konteks yang berbeza

Membuat komponen web untuk konteks yang berbeza

Artikel ini bukan tentang cara membina komponen web, Caleb Williams baru -baru ini menulis panduan terperinci. Mari kita bincangkan cara menggunakannya, faktor apa yang perlu dipertimbangkan ketika membina, dan bagaimana untuk memanfaatkannya dengan berkesan dalam projek anda.

Sekiranya anda baru dalam komponen web, panduan Caleb adalah baik dibaca, tetapi berikut adalah beberapa sumber yang dapat membantu anda memulakan dengan cepat:

  • Komponen Web - Pendekatan "Betul"
  • Shadow Dom v1: Komponen Web Sendiri
  • Komponen Web di MDN
  • Komponen Web Awesome
  • Komponen web terbuka yang disyorkan

Dengan komponen web kini disokong secara meluas (terima kasih kepada kerja keras banyak di belakang tabir) dan memandangkan kelebihan itu akan segera beralih ke platform kromium-orang sekarang melihat komponen web sebagai "asli" dan cara yang bersesuaian untuk membina komponen UI yang boleh diguna semula untuk mengekalkan konsistensi antara sistem reka bentuk dan projek web sambil memanfaatkan kuasa shadow.

Ini adalah betul dan salah. Tetapi pertama, mari kita lihat segitiga lapisan abstrak .

Segitiga lapisan abstrak

Secara teknikal, kita harus mempertimbangkan komponen web sebagai lanjutan dari bahasa markup kegemaran kami HTML (ya!). API Komponen Web membolehkan kami membuat elemen HTML tersuai yang tidak wujud di HTML (contohnya<foo-bar></foo-bar> ).

Ada yang mengatakan bahawa komponen web pada dasarnya adalah unsur -unsur HTML yang baru, jadi kita harus menganggapnya sebagai sebahagian daripada spesifikasi HTML, jadi kita harus mengikuti paradigma, konsep teras, dan penggunaannya. Jika kita menganggap semua perkara ini, kita akan mendapati bahawa komponen kita akan wujud di peringkat terendah timbunan platform web, bersebelahan dengan HTML, CSS, dan JavaScript. Rangka kerja dan perpustakaan (seperti React, Vue, Angular, Sveltejs) bekerja pada lapisan abstraksi mereka dan duduk di atas alat lain yang berada dalam beberapa jenis "tengah-bumi" seperti stensilj, hibrid, dan lit. Di bawah lapisan abstraksi ini, kita dapat mencari teknologi web asas kami ... dan komponen web asli. Kita boleh menggunakan gambarajah alt ( abstraksi la ayer t ) untuk mewakili konsep ini:

Mengapa ini penting? Ia membantu kita memvisualisasikan lapisan yang wujud di atas komponen asli dan memahami persekitaran penggunaannya supaya mereka dapat dibina terhadap persekitaran yang dimaksudkan. Apakah persekitarannya? Itulah matlamat kami.

Teknologi yang sama, persekitaran yang berbeza

Shadow Dom adalah faktor utama dalam API Komponen Web. Ia membolehkan kita membungkus JavaScript dan CSS ke dalam elemen tersuai untuk mengelakkan gangguan luaran dan operasi gaya melainkan kita secara eksplisit membenarkannya. Pemaju sememangnya boleh mengikuti beberapa cara untuk membolehkan CSS luaran bocor ke dalam akar dan komponen bayang-bayang, termasuk sifat tersuai serta :: bahagian dan :: tema pseudo-elemen, yang Monica Dinculescu mempunyai pengenalan yang baik.

Satu lagi perkara yang perlu dipertimbangkan: persekitaran yang kita gunakan. Tiga tahun selepas saya membina komponen web saya, saya dapat mengenal pasti dua persekitaran: persekitaran persendirian (seperti sistem reka bentuk) dan persekitaran standard (seperti HTML, CSS, dan JavaScript tanpa gaya tersuai).

Sebelum merancang komponen, kita perlu memahami bagaimana ia akan digunakan, jadi menentukan jenis persekitaran adalah kunci kepada semua ini. Cara paling mudah adalah untuk menargetkan hanya satu persekitaran, tetapi dengan helah CSS kecil, kita boleh membina komponen untuk kedua -duanya .

Sebelum kita menggali lebih mendalam, mari kita lihat perbezaan antara kedua -dua persekitaran.

Persekitaran persendirian

Persekitaran swasta adalah ekosistem tertutup yang menyediakan komponen dengan gaya mereka sendiri dan mesti digunakan seperti itu. Oleh itu, jika kita membina perpustakaan komponen dari panduan gaya atau sistem reka bentuk tertentu, setiap komponen akan mencerminkan gaya tersuai, jadi tidak perlu mengekodkannya setiap kali anda memerlukannya.

Begitu juga dengan logik JavaScript. Sebagai contoh, kita boleh melampirkan akar bayangan tertutup untuk mengelakkan orang lain dari tidak sengaja menusuk sempadan bayangan dengan QuerySelector. Oleh itu, kita hanya boleh memilih dan menggunakan mana -mana komponen untuk mengelakkan masalah seperti ketidakkonsistenan dalam gaya dan konflik CSS. Sebagai pengarang, anda juga boleh menentukan satu set ciri khas CSS (atau :: bahagian) yang boleh digunakan untuk komponen gaya untuk kes penggunaan tertentu, tetapi ini bukan tumpuan merancang sistem.

Ini adalah contoh menggunakan komponen web dalam persekitaran persendirian. Semua gaya dan logiknya terkandung dalam bayang-bayang-bayang-bayangnya dan hanya boleh ditambah ke mana-mana halaman.

Contoh -contoh ini dan seterusnya adalah untuk tujuan demonstrasi sahaja dan tidak dimaksudkan untuk persekitaran pengeluaran, kerana mereka tidak mengambil situasi kritikal seperti kebolehaksesan dan pengoptimuman lain.

Komponen dalam persekitaran swasta jarang digunakan di luar persekitaran itu. Sebagai contoh, jika kita cuba mendapatkan elemen dari sistem reka bentuk (dengan gaya terpaksa sendiri), kita tidak boleh menambahnya kepada projek dan mengharapkan untuk menyesuaikannya. Adakah anda tahu bagaimana Bootstrap boleh menyediakan dan menyesuaikan tema mengikut keutamaan anda? Inilah yang bertentangan. Komponen ini bertujuan untuk berjalan di persekitaran mereka dan hanya dalam persekitaran mereka.

Persekitaran standard

Persekitaran standard mungkin jenis komponen yang paling kompleks, bukan sahaja kerana persekitaran boleh berkisar dari kerangka matang seperti VUE dan bertindak balas kepada HTML asli biasa, tetapi kerana semua orang harus dapat menggunakan komponen itu seolah -olah ia adalah unsur lain.

Sebagai contoh, apabila komponen ditambah secara terbuka (seperti menambah NPM), mereka yang menggunakannya akan mengharapkan dapat menyesuaikannya, sekurang -kurangnya sedikit sebanyak.

Adakah anda tahu mana -mana elemen HTML dengan gaya demo mereka sendiri? Jawapannya hendaklah "tidak", kerana unsur -unsur mesti digayakan secara eksplisit menggunakan CSS. Begitu juga dengan komponen web yang dibuat dalam persekitaran standard. Komponen web tunggal harus disesuaikan dengan menambahkan kelas dan sifat atau kaedah lain.

Ini sama seperti yang kita lihat dalam contoh persekitaran tertutup<todo-list></todo-list> elemen, tetapi ia direka untuk persekitaran standard. Ia berfungsi seperti itu, tanpa gaya demo dalam akar bayangannya. Malah, ia hanya mengandungi logik yang diperlukan dan CSS asas untuk memastikan fungsinya. Jika tidak, ia boleh disesuaikan seperti mana -mana elemen HTML standard (seperti div).

Kedua -dua contoh yang kita lihat untuk setiap persekitaran dibuat menggunakan komponen yang sama. Perbezaannya ialah komponen dalam persekitaran standard boleh disesuaikan dan dipilih menggunakan CSS luaran.

Komponen dan komposisi web

OK, jadi menggunakan komponen web sebenarnya sama seperti menggunakan HTML biasa, walaupun seperti yang dapat kita lihat, sangat penting untuk mengikuti paradigma dan prinsip kandungan yang diberikan. Apa yang perlu kita perhatikan ialah gabungan komponen web.

Seperti yang dijelaskan oleh Fundamental Web Google:

Kombinasi adalah salah satu ciri yang paling tidak diketahui Shadow Dom, tetapi mereka boleh dikatakan yang paling penting.

Di dunia pembangunan web kami, komposisi adalah bagaimana kami membina aplikasi secara mendadak menggunakan HTML. Blok bangunan yang berbeza (<div> ,<code><s></s> ,<em></em> ,<strong></strong> ) disusun untuk membentuk permohonan. Sesetengah tag ini juga boleh digunakan dengan satu sama lain. Gabungan adalah mengapa<select></select> ,<details></details> ,<summary></summary> dan<video></video> Sebab mengapa unsur -unsur asli sedemikian sangat fleksibel. Setiap tag menerima HTML tertentu sebagai elemen kanak -kanak dan melakukan beberapa operasi khas pada mereka. Contohnya,<select></select> Tahu bagaimana untuk<option></option> dan<optgroup></optgroup> Diberikan sebagai senarai drop-down dan widget pelbagai pilihan.<details></details> Elemen akan<summary></summary> Dibentangkan sebagai anak panah yang diperkembangkan. walaupun<video></video> Juga tahu bagaimana menangani unsur -unsur kanak -kanak tertentu:<track></track> Unsur -unsur tidak diberikan, tetapi mereka mempengaruhi tingkah laku video. Betapa hebatnya! Komposisi adalah apa yang biasanya kita lakukan apabila menggunakan HTML. Oleh kerana komponen web hanyalah elemen HTML dengan rujukan DOM (bukan bekas logik), kita harus bergantung pada kombinasi untuk membina komponen kami dan mana -mana subkomponen. Sekiranya anda mempertimbangkan

    dan<select></select> , anda akan melihat bahawa anda menggabungkan unsur -unsur ini untuk mendapatkan output akhir, dan anda mempunyai sifat khusus yang boleh digunakan untuk komponen utama (mis. [readonly] ) atau komponen kanak -kanak (mis. [selected] ). Begitu juga dengan komponen web, jika anda membina senarai tersuai, pertimbangkan untuk membina komponen utama (<custom-list></custom-list> ) dan subkomponen (<custom-li></custom-li> ). gunakan<slot></slot> Unsur -unsur, anda boleh menentukan di mana unsur -unsur kanak -kanak akan diletakkan, dan kandungan pemegang tempat yang akan dipaparkan apabila elemen kanak -kanak tidak diluluskan.

    Komponen web dan kebolehcapaian

    Satu lagi perkara yang perlu dipertimbangkan ialah apa yang kita panggil tema "kecil" aksesibiliti . Oleh kerana kita mencipta elemen HTML yang baru, kita perlu mempertimbangkan kebolehcapaian elemen untuk menyediakan peranan semantik asas, mana -mana navigasi papan kekunci, dan keutamaan sistem operasi pengguna seperti gerakan yang dikurangkan dan tetapan kontras yang tinggi.

    Saya sangat mengesyorkan sumber -sumber berikut sebagai rujukan untuk membina komponen yang boleh diakses dan inklusif, bagaimana untuk menentukan tag semantik, dan bagaimana untuk melaksanakan navigasi papan kekunci asas.

    • Komponen inklusif
    • "Kesan untuk semua orang" di web.dev
    • Amalan Kreatif Wai-Aria
    • Senarai Semak WEBAim WCAG

    kesimpulannya

    Komponen Web adalah teknologi yang baru muncul dalam pembangunan web, jadi tidak ada amalan terbaik yang jelas untuk membimbing kita ketika membina mereka berdasarkan penggunaan yang dimaksudkan atau memaksimumkan penggunaannya. Apabila anda mendapati diri anda menggunakannya, satu -satunya perkara yang anda dapat dari jawatan ini adalah untuk mempertimbangkan sama ada mereka untuk persekitaran tertutup atau standard dan tanya diri anda :

    • W ho akan menggunakan komponen ini?
    • Adakah banyak fleksibiliti orang ini harus menyesuaikannya?
    • Adakah komponen ini sesuai untuk semua orang atau untuk khalayak tertentu?

Atas ialah kandungan terperinci Membuat komponen web untuk konteks yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Ini tidak sepatutnya berlaku: menyelesaikan masalah yang mustahilIni tidak sepatutnya berlaku: menyelesaikan masalah yang mustahilMay 15, 2025 am 10:32 AM

Apa yang kelihatan seperti menyelesaikan masalah salah satu daripada isu -isu yang mustahil yang ternyata menjadi sesuatu yang tidak pernah anda fikirkan.

@KeyFrames vs CSS Transitions: Apakah perbezaannya?@KeyFrames vs CSS Transitions: Apakah perbezaannya?May 14, 2025 am 12:01 AM

@keyframesandcsstransitionsdifferincomplexity:@keyframesallowsfordetailedanimationseSseSeSs, whileCstransitionShandlesImplestateShanges.usecsstransitionsforhovereffectsLikeButtonColorchanges, dan@keyframesforintricateanimation.

Menggunakan halaman CMS untuk pengurusan kandungan tapak statikMenggunakan halaman CMS untuk pengurusan kandungan tapak statikMay 13, 2025 am 09:24 AM

Saya tahu, saya tahu: terdapat satu tan pilihan sistem pengurusan kandungan yang tersedia, dan sementara saya telah menguji beberapa, tidak ada yang benar -benar menjadi satu, y ' tahu? Model harga pelik, penyesuaian yang sukar, sesetengahnya akhirnya menjadi keseluruhan &

Panduan Terbaik untuk Menghubungkan Fail CSS di HTMLPanduan Terbaik untuk Menghubungkan Fail CSS di HTMLMay 13, 2025 am 12:02 AM

Menghubungkan fail CSS ke HTML boleh dicapai dengan menggunakan unsur -unsur dalam sebahagian HTML. 1) Gunakan tag untuk menghubungkan fail CSS tempatan. 2) Pelbagai fail CSS boleh dilaksanakan dengan menambahkan beberapa tag. 3) Fail CSS luaran menggunakan pautan URL mutlak, seperti. 4) Pastikan penggunaan laluan fail yang betul dan pesanan pemuatan fail CSS, dan mengoptimumkan prestasi boleh menggunakan preprocessor CSS untuk menggabungkan fail.

CSS Flexbox vs Grid: Kajian KomprehensifCSS Flexbox vs Grid: Kajian KomprehensifMay 12, 2025 am 12:01 AM

Memilih Flexbox atau Grid bergantung kepada keperluan susun atur: 1) Flexbox sesuai untuk susun atur satu dimensi, seperti bar navigasi; 2) Grid sesuai untuk susun atur dua dimensi, seperti susun atur majalah. Kedua -duanya boleh digunakan dalam projek untuk meningkatkan kesan susun atur.

Cara memasukkan fail CSS: Kaedah dan amalan terbaikCara memasukkan fail CSS: Kaedah dan amalan terbaikMay 11, 2025 am 12:02 AM

Cara terbaik untuk memasukkan fail CSS adalah menggunakan tag untuk memperkenalkan fail CSS luaran di bahagian HTML. 1. Gunakan tag untuk memperkenalkan fail CSS luaran, seperti. 2. Untuk pelarasan kecil, css sebaris boleh digunakan, tetapi harus digunakan dengan berhati -hati. 3. Projek besar boleh menggunakan preprocessors CSS seperti SASS atau kurang untuk mengimport fail CSS lain melalui @import. 4. Untuk prestasi, fail CSS harus digabungkan dan CDN harus digunakan, dan dimampatkan menggunakan alat seperti CSSNANO.

Flexbox vs Grid: Sekiranya saya belajar kedua -duanya?Flexbox vs Grid: Sekiranya saya belajar kedua -duanya?May 10, 2025 am 12:01 AM

Ya, youdyhouldlearnbothflexboxandgrid.1) flexboxisidealforone-dimensi, flexiblelayoutslikenavigasiMenus.2)

Mekanik Orbital (atau bagaimana saya mengoptimumkan animasi kerangka utama CSS)Mekanik Orbital (atau bagaimana saya mengoptimumkan animasi kerangka utama CSS)May 09, 2025 am 09:57 AM

Apa yang kelihatan seperti refactor kod anda sendiri? John Rhea memisahkan animasi CSS lama yang dia tulis dan berjalan melalui proses pemikiran mengoptimumkannya.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual