cari
Rumahhujung hadapan webtutorial jsBerapa Banyak Sumber yang Digunakan oleh Klik? React vs. Vanila

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

How Many Resources Does a Click Consume? React vs. Vanilla

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:

How Many Resources Does a Click Consume? React vs. Vanilla

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:

How Many Resources Does a Click Consume? React vs. Vanilla

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

How Many Resources Does a Click Consume? React vs. Vanilla

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:

How Many Resources Does a Click Consume? React vs. Vanilla

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:

How Many Resources Does a Click Consume? React vs. Vanilla

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!

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
Python vs JavaScript: Keluk Pembelajaran dan Kemudahan PenggunaanPython vs JavaScript: Keluk Pembelajaran dan Kemudahan PenggunaanApr 16, 2025 am 12:12 AM

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 vs JavaScript: Komuniti, Perpustakaan, dan SumberPython vs JavaScript: Komuniti, Perpustakaan, dan SumberApr 15, 2025 am 12:16 AM

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.

Dari C/C ke JavaScript: Bagaimana semuanya berfungsiDari C/C ke JavaScript: Bagaimana semuanya berfungsiApr 14, 2025 am 12:05 AM

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: Membandingkan PelaksanaanEnjin JavaScript: Membandingkan PelaksanaanApr 13, 2025 am 12:05 AM

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.

Beyond the Browser: JavaScript di dunia nyataBeyond the Browser: JavaScript di dunia nyataApr 12, 2025 am 12:06 AM

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.

Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Apr 11, 2025 am 08:23 AM

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

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Apr 11, 2025 am 08:22 AM

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: meneroka serba boleh bahasa webJavaScript: meneroka serba boleh bahasa webApr 11, 2025 am 12:01 AM

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.

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

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

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

MantisBT

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.