React, seperti mana-mana rangka kerja JavaScript yang lain, mengendalikan banyak perkara di sebalik tabir yang sering kita tidak fikirkan.
Dan tidak mengapa—tugas kami sebagai pembangun ialah menyelesaikan masalah, dan lebih mudah pelaksanaannya, lebih baik. Anda tidak semestinya perlu memahami setiap butiran tentang fungsi rangka kerja untuk anda.
JavaScript ialah bahasa yang menarik; ia adalah raja penyemak imbas, dan penyemak imbas masih banyak digunakan, jadi saya tidak nampak ia hilang dalam masa terdekat.
Malah, banyak apl asli (iOS, Android, TV Pintar) menjalankan penyelesaian hibrid menggunakan kedua-dua teknologi asli dan web.
Dalam siaran ini, saya ingin menguji kaunter ringkas dalam React berbanding versi JavaScript Vanilanya.
Mengukur Prestasi dengan Chrome DevTools
Mula-mula, mari kita bincangkan tentang tab berguna yang Chrome tawarkan yang dipanggil Prestasi. Tab ini termasuk ciri rakaman yang mengukur prestasi aplikasi web.
Dalam siaran ini, saya akan menumpukan pada tiga metrik utama: JS Heap, Nod dan Listeners.
JS Heap: Heap ialah kawasan memori dalam JavaScript tempat objek, tatasusunan dan fungsi disimpan. Tidak seperti timbunan, yang memegang nilai primitif (nombor, rentetan, boolean) dan panggilan fungsi, timbunan mengurus peruntukan memori dinamik.
Nod DOM: Nod DOM ialah elemen individu, atribut atau teks dalam HTML halaman web, yang diwakili dalam Model Objek Dokumen (DOM).
Pendengar Acara: Dalam JavaScript, pendengar acara ialah fungsi yang menunggu acara tertentu (cth., klik, penekanan kekunci, pergerakan tetikus) pada elemen HTML. Apabila peristiwa itu berlaku, pendengar mencetus, melaksanakan kod sebagai tindak balas.
Demo: Membina Kaunter Reaksi Asas
Baiklah, UI ialah kaunter yang mudah. UI hanyalah butang dengan pengendali klik. Setiap kali butang diklik, pembilang bertambah.
- Demo React
Kod React kelihatan seperti ini:
"use client"; import { useState } from "react"; export default function Page() { const [counter, setCounter] = useState(0); const incrementClickHandler = (event: { preventDefault: () => void }) => { event.preventDefault(); setCounter((prevCounter) => prevCounter + 1); }; return ( <div style="{{" maxwidth: margin: auto> <a href="#" style="{{" display: padding: fontsize: border: solid black width: textalign: margintop: onclick="{incrementClickHandler}"> Increment {counter} </a> </div> ); }
Kod ini cukup jelas. Satu perkara yang perlu diambil perhatian ialah demo berjalan di atas Next.js, itulah sebabnya kami memerlukan "menggunakan klien". Selain daripada itu, ia hanyalah komponen React asas.
UI Kaunter Bertindak balas
20 Saat dan Hanya Satu Klik
Sekarang, saya akan membuka tab Prestasi dalam Chrome, klik ikon rekod dan biarkan ia berjalan selama 20 saat sambil mengklik butang sekali sahaja. Pada penghujung 20 saat, hasil prestasi kelihatan seperti ini:
Lihat cara hanya satu klik melonjakkan nombor kepada:
React | |
---|---|
JS Heap | 3.4MB |
Nodes | 47 |
Listeners | 287 |
?
20 Saat dengan Klik sesaat
Sekarang, saya akan membiarkannya berjalan selama 20 saat lagi, tetapi kali ini saya akan mengklik butang itu sekali sesaat. Mari lihat hasilnya:
React | |
---|---|
JS Heap | 4MB |
Nodes | 46 |
Listeners | 331 |
Dua perkara yang perlu diberi perhatian tentang React:
a) Apabila pembolehubah keadaan dikemas kini, komponen itu dipaparkan semula, bermakna dalam kes ini, komponen tersebut telah dipaparkan sebanyak 20 kali.
b) Terima kasih kepada DOM maya, React hanya mengemas kini nod yang perlu dikemas kini.
Sekarang, mari kita kembali ke carta dan lihat bagaimana garis biru (JS Heap) dan garis kuning (Pendengar) meningkat, manakala garis hijau (Nod) kekal malar.
Perlu juga dinyatakan bahawa nombor tidak banyak berubah berbanding dengan larian satu klik.
Demo: Membina Kaunter JavaScript Vanila
Kini, kami mempunyai UI yang sama, tetapi kali ini ia dibina dengan HTML vanila dan JavaScript—tiada rangka kerja yang terlibat.
- Demo Vanila.
"use client"; import { useState } from "react"; export default function Page() { const [counter, setCounter] = useState(0); const incrementClickHandler = (event: { preventDefault: () => void }) => { event.preventDefault(); setCounter((prevCounter) => prevCounter + 1); }; return ( <div style="{{" maxwidth: margin: auto> <a href="#" style="{{" display: padding: fontsize: border: solid black width: textalign: margintop: onclick="{incrementClickHandler}"> Increment {counter} </a> </div> ); }
Satu perkara yang perlu dinyatakan ialah keperluan elemen berikut:
<script> let increment = 0; window.onload = function () { document.querySelector("#counter").innerText = increment; document.querySelector("a").addEventListener("click", function (event) { event.preventDefault(); increment++; document.querySelector("#counter").innerText = increment; }); }; </script> <a href="#" style=" display: inline-block; padding: 20px 40px; font-size: 28px; border: 1px solid black; width: 100%; text-align: center; text-decoration: none; color: black; margin-top: 40; box-sizing: border-box; ">Increment <span id="counter"></span> </a>
yang dimanipulasi dengan JavaScript untuk mengemas kini kandungannya:
<span id="counter"></span>
UI Kaunter Vanila
20 Saat dan Hanya Satu Klik
Sekali lagi, saya akan mengklik ikon rekod dan biarkan ia berjalan selama 20 saat, mengklik butang sekali sahaja.
Lihat hasilnya:
Vanilla | |
---|---|
JS Heap | 1.7MB |
Nodes | 16 |
Listeners | 20 |
20 Saat dengan Klik sesaat
Sekali lagi, saya akan mengklik ikon rekod dan biarkan ia berjalan selama 20 saat lagi, tetapi kali ini, saya akan mengklik butang itu sekali sesaat. Lihat hasilnya:
Vanilla | |
---|---|
JS Heap | 2.3MB |
Nodes | 42 |
Listeners | 77 |
Sama seperti dalam contoh React, garis biru (JS Heap) dan garis kuning (Pendengar) meningkat dari semasa ke semasa. Walau bagaimanapun, garis hijau (Nod) tidak tetap; ia bertambah apabila butang diklik.
Sedikit Perkataan tentang Kutipan Sampah
Kutipan Sampah: Konsep utama yang menjadi sandaran algoritma kutipan sampah ialah konsep rujukan.
JavaScript mengendalikan kutipan sampah secara automatik untuk kami; kita tidak perlu mencetuskannya secara manual. Dalam contoh sebelum ini, kami melihat cara sumber digunakan, tetapi pada satu ketika, JavaScript menguruskan mengeluarkan beberapa sumber tersebut melalui pengumpul sampahnya.
Kesimpulan
Satu klik atau dua puluh klik tidak begitu berbeza dari segi penggunaan sumber. Sebaik sahaja klik berlaku, JavaScript memperuntukkan sumber dan klik seterusnya terus menggunakan sumber. Walau bagaimanapun, lonjakan itu tidak begitu ketara seperti peralihan daripada sifar kepada satu klik.
Mari kita lihat nilai akhir untuk 20 klik dalam kedua-dua versi:
Vanilla | React | |
---|---|---|
JS Heap | 2.3MB | 4.0MB |
Nodes | 42 | 46 |
Listeners | 77 | 331 |
Memang masuk akal bahawa React menggunakan lebih banyak sumber; itulah kos menggunakan rangka kerja.
Satu perbezaan utama ialah React melampirkan semua nod dari awal, manakala versi vanila menambah nod apabila klik berlaku. Walau bagaimanapun, pada akhirnya, kedua-dua versi berakhir dengan bilangan nod yang hampir sama.
Demo ini agak mudah, dan pada tahap ini, tiada perbezaan yang ketara dari segi prestasi. Seperti yang dinyatakan sebelum ini, terdapat harga yang perlu dibayar untuk menggunakan rangka kerja, tetapi ia berbaloi dengan mengambil kira semua ciri dan kemudahan yang disediakannya.
Atas ialah kandungan terperinci Berapa Banyak Sumber yang Digunakan oleh Klik? React vs. Vanila. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.


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

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

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

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Dreamweaver CS6
Alat pembangunan web visual

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.