RadeventListener: Kisah Rangka Kerja Sisi Pelanggan
Populariti React bukan tanpa pengkritiknya. Saiz kerangka yang besar (sekitar 120 kib minified) memberi kesan yang signifikan pada masa permulaan, terutamanya apabila hanya bergantung pada rendering sisi klien. Malah penyampaian pelayan dengan penghidratan sisi klien kekal intensif prestasi. Walaupun React cemerlang dalam pengurusan negeri yang kompleks, sumbernya menuntut lebih banyak manfaat dalam aplikasi yang lebih mudah. Ini dapat mengecualikan pengguna dengan perkakasan yang kurang kuat.
Walaupun tempahan saya mengenai overhead prestasi React, saya menghargai model komponennya dan sintaks JSX. Rendering sisi pelayan (atau menggunakan Preact, alternatif pilihan saya) kekal sebagai aset yang berharga. Walau bagaimanapun, menentukan penggunaan sisi pelanggan yang sesuai masih menjadi cabaran. Artikel ini memperincikan penemuan saya untuk mengoptimumkan prestasi bertindak balas untuk pengalaman pengguna yang lebih baik.
Konteks: aplikasi suapan RSS
Aplikasi suapan RSS saya, bylines.fyi
, menggunakan JavaScript pada kedua -dua pelayan dan klien. Walaupun saya tidak sememangnya tidak suka rangka kerja pelanggan, pengalaman saya menyoroti dua isu berulang:
- Rangka kerja boleh mengaburkan platform web yang mendasari, menghalang pemahaman yang mendalam apabila mereka benar -benar bermanfaat.
- Rangka kerja tidak selalu menjamin pengalaman pengguna yang optimum.
Penyelidikan httparchive Tim Kadlec mengenai prestasi rangka kerja web memperkuat kebimbangan ini, mendedahkan prestasi kurang dari reaksi. Matlamat saya adalah untuk memanfaatkan kelebihan pelayan React semasa mengurangkan kelemahan pelanggannya.
Eksperimen: Navigasi mudah alih bertukar -tukar
Aplikasi RSS saya memerlukan JavaScript sisi pelanggan untuk togol navigasi mudah alih mudah-contoh klasik "keadaan mudah." Saya sering melihat komponen React yang terlalu banyak digunakan untuk tugas -tugas yang mudah, yang membawa kepada overhead prestasi yang tidak perlu. Eksperimen ini, walaupun seolah -olah remeh, berfungsi sebagai penanda aras penting untuk memahami bagaimana skala pilihan kerangka. Adalah penting untuk diperhatikan bahawa kebanyakan pemaju tidak semata -mata bergantung kepada React untuk ciri -ciri kecil seperti itu, tetapi hasilnya menggambarkan implikasi seni bina untuk prestasi runtime.
Keadaan ujian
Eksperimen ini membandingkan tiga pelaksanaan NAV mudah alih di empat peranti:
- Komponen React Stateful: pelayan yang diberikan dan klien-terhidrasi.
- Komponen Preact Stateful: pelayan yang diberikan dan klien-terhidrat.
- Komponen preact tanpa statur: pelayan yang diberikan, tidak terhidrasi; Menggunakan pendengar acara standard.
Peranti termasuk:
- Nokia 2 Android Phone (Chrome 83)
- Laptop ASUS X550CC (Windows 10, Chrome 83)
- IPhone Generasi 1 (Safari 13)
- IPhone Generasi ke -2 (Safari 13)
Metrik
Metrik berikut diukur untuk setiap pelaksanaan dan peranti:
- Masa permulaan: termasuk rangka kerja dan penghidratan (React/preact), atau hanya kod pendengar acara (eventListener).
- Masa penghidratan: subset masa permulaan (React/preact sahaja).
- Waktu Terbuka NAV Mudah Alih: Rangka kerja mengukur overhead dalam pengendalian acara.
Metodologi
Ujian melibatkan debugging dan profil jauh, merakam masa CPU untuk setiap metrik merentasi sepuluh lelaran setiap senario dan peranti. Prestasi rangkaian bukan faktor.
Hasilnya
Oleh kerana kerumitan data, hasilnya dibentangkan dalam format tabular yang menunjukkan masa CPU minimum, maksimum, median, dan purata. (Jadual terperinci boleh didapati dalam spreadsheet yang disertakan). Penemuan utama termasuk:
- Kos permulaan dan penghidratan yang tinggi React: terutamanya ketara pada Nokia 2 yang rendah.
- Prestasi yang lebih baik Preact: jauh lebih cepat daripada bertindak balas, tetapi masih melebihi belanjawan bingkai yang ideal pada Nokia 2.
- Prestasi pendengar acara unggul: secara konsisten lebih cepat daripada kedua -dua reaksi dan praktik, terutamanya untuk interaksi mudah.
Perbincangan: Tumpukan panggilan cetek
Perbezaan prestasi berpunca dari overhead rangka kerja dan penghidratan. Walaupun sesetengah prestasi perdagangan tidak dapat dielakkan untuk kemudahan pemaju, keseimbangan sering kali terlalu banyak ke arah pengalaman pemaju dengan mengorbankan pengguna. Tumpukan panggilan untuk reaksi dan penghidratan yang telah berlaku menyerlahkan tuntutan pemprosesan yang signifikan, terutama untuk tugas -tugas yang mudah. Menggunakan pendengar acara asli menawarkan pendekatan yang lebih efisien untuk pengurusan negara yang mudah.
Kesimpulan dan Cadangan
Analisis ini tidak dimaksudkan sebagai kritikan yang bertindak balas, melainkan semangat untuk menilai secara kritis pilihan kerangka dan kesan prestasi mereka. Beberapa strategi dapat mengurangkan masalah prestasi:
- Komponen refactor yang berkesudahan ke komponen tanpa statur di mana mungkin.
- Elakkan JavaScript dan penghidratan pelanggan untuk komponen tanpa stat.
- Gunakan pendengar acara bebas kerangka untuk interaksi mudah.
- Komponen hidrat marlak menggunakan pemerhati persimpangan atau
requestIdleCallback
. - Pertimbangkan Preact sebagai alternatif yang lebih cepat untuk bertindak balas.
- Menyesuaikan pengalaman pengguna untuk peranti memori rendah menggunakan
navigator.deviceMemory
.
Mengutamakan ujian prestasi merentasi pelbagai peranti, memastikan keterangkuman bagi pengguna dengan keupayaan perkakasan yang berbeza -beza. Matlamatnya harus menjadi pengalaman web yang cepat dan boleh diakses untuk semua orang.
Terima kasih kepada Eric Bailey untuk maklum balas editorial dan kakitangan CSS-Tricks untuk menerbitkan artikel ini.
Atas ialah kandungan terperinci RadeventListener: Kisah Rangka Kerja Sisi Pelanggan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Sekiranya anda baru -baru ini mula bekerja dengan GraphQL, atau mengkaji semula kebaikan dan keburukannya, anda tidak akan ragu -ragu mendengar perkara seperti "Graphql tidak menyokong caching" atau

API Peralihan Svelte menyediakan cara untuk menghidupkan komponen apabila mereka memasuki atau meninggalkan dokumen, termasuk peralihan svelte adat.

Berapa banyak masa yang anda habiskan untuk merancang persembahan kandungan untuk laman web anda? Semasa anda menulis catatan blog baru atau membuat halaman baru, adakah anda memikirkan

Dengan pendakian harga bitcoin baru -baru ini lebih dari 20k $ USD, dan baru -baru ini melanggar 30k, saya fikir ia patut mengambil menyelam yang mendalam kembali ke dalam mewujudkan Ethereum

Perintah NPM menjalankan pelbagai tugas untuk anda, sama ada sebagai satu-satunya atau proses berjalan terus untuk perkara seperti memulakan pelayan atau menyusun kod.

Artikel ini membincangkan menggunakan CSS untuk kesan teks seperti bayang -bayang dan kecerunan, mengoptimumkannya untuk prestasi, dan meningkatkan pengalaman pengguna. Ia juga menyenaraikan sumber untuk pemula. (159 aksara)

Tidak kira tahap tahap anda sebagai pemaju, tugas yang kami selesaikan -sama ada besar atau kecil -membuat kesan besar dalam pertumbuhan peribadi dan profesional kami.

Saya hanya berbual dengan Eric Meyer pada hari yang lain dan saya teringat cerita Eric Meyer dari tahun -tahun pembentukan saya. Saya menulis catatan blog mengenai kekhususan CSS, dan
