cari
Rumahhujung hadapan webtutorial js(Enjin Tidak Boleh Ubahsuai, React

(The Unmodifiable Engine, React

Terdapat banyak enjin permainan di dunia: Unreal Engine, Unity Engine, Godot Engine, Cry Engine dan banyak lagi.

Apakah persamaan enjin permainan ini? Kebolehubahsuaian. Permainan yang berbeza mempunyai keperluan yang berbeza dan memerlukan ciri khusus untuk mencapai matlamat mereka. Sukar untuk menyediakan setiap ciri yang mungkin dalam satu program, itulah sebabnya banyak enjin membenarkan pembangun mengubah suai kod sumber dan membina ciri tersuai mereka sendiri. Penyesuaian adalah bahagian penting dalam enjin ini.

Sekarang, mari beralih semula kepada pembangunan bahagian hadapan. React ialah salah satu rangka kerja paling popular di ruang ini. Tetapi, sama seperti mengubah suai enjin adalah perkara biasa dalam pembangunan permainan, adakah ia sama biasa untuk mengubah suai kod sumber dalaman React dalam pembangunan bahagian hadapan? Soalan ringkas ini mendedahkan banyak perkara tentang perkara yang sebenarnya kami kejar dan menyerlahkan perbezaan arah antara pembangunan bahagian hadapan moden dan bidang lain.

React ialah rangka kerja yang hampir mustahil untuk diubah suai. Anda digalakkan untuk menggunakan React sebagaimana adanya, dan ia tidak bertujuan untuk pembangun menyesuaikan seni bina dalaman atau saluran paip pemaparan. Oleh itu, menggunakan React bermakna anda mesti menyelesaikan semua keperluan anda dalam lingkungan struktur React. Tetapi dunia ini penuh dengan pelbagai keperluan, dan tidak semuanya boleh diselesaikan dalam rangka kerja React.

"Tiada perkara seperti makan tengah hari percuma."
"Tiada alat yang boleh melakukan segala-galanya."

React hanyalah satu alat pembangunan dan ia mempunyai hadnya.

Sebab utama pembangun menggunakan React ialah produktiviti. React telah dibuat dengan soalan, "Bagaimanakah kita boleh membangunkan komponen DOM dengan lebih cekap dalam pembangunan web?" Di tengah-tengah pendekatan React ialah DOM. Sama seperti bagaimana ciri automatik secara amnya bermaksud kekurangan penyesuaian, "produktiviti" yang mereka perkatakan selalunya bermaksud "anda tidak boleh mengubah suai gelung pemaparan yang digabungkan dengan penyemak imbas melalui DOM maya."

Isu utama pertama dengan React ialah DOM. Tidak semuanya berkisar pada DOM, dan bukan setiap program beroperasi di sekelilingnya semata-mata. Namun, React meletakkan DOM sebagai teras falsafahnya. Sintaks JSX, di mana setiap komponen mengembalikan sesuatu "Suka Elemen HTML," jelas menggambarkan pemikiran ini.

Isu kedua ialah DOM maya. Begini cara DOM maya berfungsi:

  • DOM sememangnya perlahan.
  • Untuk mengurangkan perkara ini, React memperkenalkan logik dalaman yang lebih pantas.
  • Logik ini mencipta objek yang menyalin bentuk pokok DOM sebenar, yang dikenali sebagai DOM maya. Setiap kali pemaparan berlaku, React mencari perubahan menggunakan DOM maya ini dan hanya mengemas kini bahagian tersebut.
  • Untuk melaksanakan sistem ini, kemas kini DOM mesti sentiasa melalui elemen DOM akar.
  • Maya DOM berfungsi dengan lancar dengan operasi dalaman React.

Persoalannya, mengapa HPSE akan menggunakan sistem sedemikian pada mulanya? Selain kebimbangan bahawa pendekatan pemaparan ini tidak dapat menangani pelbagai keperluan HPSE, kebimbangan yang lebih besar ialah kekurangan utiliti sebenar dalam konteks ini.

Dalam HPSE, komponen DOM boleh diurus di peringkat kelas. Apabila tika dibuat, rujukan DOM div peringkat atasnya disimpan sebagai pembolehubah ahli. Kaedah peribadi contoh boleh sama ada secara langsung memanipulasi rujukan DOM atau menggunakan querySelector() untuk mengaksesnya. Dalam kebanyakan kes, ini akan menjadi lebih pantas daripada membandingkan keseluruhan pepohon DOM.

Menggunakan DOM maya hanyalah satu cara untuk mengenal pasti perubahan, tetapi jika anda sudah mempunyai perubahan yang disimpan secara dalaman dalam contoh anda, mencarinya sekali lagi adalah berlebihan. Setelah elemen DOM dikemas kini, penyemak imbas masih akan mencetuskan ReFlow dan RePaint, jadi tiada perbezaan dalam prestasi selepas itu.

Isu utama terletak pada "operasi dalaman" React. Apakah sebenarnya operasi dalaman ini? Terdapat kekurangan dokumentasi atau maklumat terperinci, dan kebanyakan pembangun bahagian hadapan juga tidak memahaminya sepenuhnya. Pelanggan penyemak imbas sudah beroperasi dalam lapisan abstraksi penyemak imbas itu sendiri, menjadikannya terdedah kepada pelbagai cabaran. Proses dalaman React yang legap dan tidak boleh diubah suai hanya memburukkan lagi kelemahan ini.

Perubahan kepada komponen dalam React mesti melalui DOM maya dan DOM maya diuruskan oleh seni bina Fiber, yang mengikut peraturan keutamaan tertentu. Walau bagaimanapun, terdapat sedikit dokumentasi tentang cara menyesuaikan fungsi dalaman React untuk memenuhi prestasi masa nyata atau tuntutan masa ketepatan HPSE. Rasanya seperti membangunkan permainan AAA dengan enjin yang tidak boleh disesuaikan.

"Kenapa perlu bersusah payah?"

Ini soalan yang terus ditimbulkan.

React digandingkan dengan sangat rapat secara dalaman sehinggakan walaupun anda ingin mengubah suainya, anda tidak boleh. Ia tidak pernah direka dengan tujuan itu. Selain itu, gandingan kukuh pemaparan dan kemas kini keadaan menjadikan React tidak sesuai untuk projek HPSE, di mana komponen bukan visual seperti data atau elemen 3D mesti diurus bersama elemen DOM.

Dalam HPSE, masa panggilan acara dan nyahlekap memori mungkin tidak terikat pada komponen individu, tetapi React menguatkuasakan struktur berasaskan komponen ini, menjadikannya sukar untuk mengendalikan keperluan tersebut. Reka bentuk React, di mana perubahan keadaan dalam komponen boleh menjejaskan keseluruhan pepohon pemaparan, juga bercanggah dengan keperluan HPSE untuk meminimumkan atau mengawal kesan tersebut.

Pustaka seperti React Three Fiber (R3F) membolehkan anda membuat tika seperti Mesh atau Scene menggunakan sintaks "Suka Elemen HTML", tetapi itu hanyalah Three.js yang disesuaikan dengan struktur React. Tahap gandingan yang tinggi dalam React hanya memburukkan lagi isu dalaman yang tidak boleh diubah suai.

Pendekatan pengendalian acara React juga bermasalah. React menggunakan sistem acara sintetik untuk memastikan keserasian dan konsistensi penyemak imbas dalam pengendalian acara. Walau bagaimanapun, dengan menambahkan lapisan abstraksi pada pemprosesan acara, sistem ini mengehadkan kawalan terperinci ke atas gelung peristiwa dan pemasaan yang diperlukan dalam HPSE, menjadikannya sukar untuk melaksanakan pengoptimuman penting.

Isu ini timbul kerana falsafah reka bentuk React pada asasnya berbeza daripada matlamat HPSE. React tidak dibina dengan mengambil kira HPSE; ia direka untuk mengoptimumkan pembangunan pelanggan web standard. Jika React telah mengejar hala tuju yang serupa dengan HPSE, ciri-cirinya akan menjadi jauh berbeza, dan akan ada kes untuk mengguna pakainya dalam pembangunan HPSE. Tetapi kerana matlamat mereka sangat berbeza, mereka pasti berpisah.

Ini bukan untuk mengatakan bahawa segala-galanya tentang React, seperti penghalaan atau useEffect, adalah buruk. Malah, kebanyakan ciri ini boleh dilaksanakan menggunakan modul atau kod JavaScript kendiri. Tidak seperti React, modul JavaScript umum tidak menguatkuasakan saluran paip atau peraturan khusus pada projek. Selain itu, jika ia adalah sumber terbuka, anda boleh mengubah suai dalaman mereka untuk memenuhi keperluan anda.

Atas ialah kandungan terperinci (Enjin Tidak Boleh Ubahsuai, React. 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
JavaScript dan Web: Fungsi teras dan kes penggunaanJavaScript dan Web: Fungsi teras dan kes penggunaanApr 18, 2025 am 12:19 AM

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Memahami Enjin JavaScript: Butiran PelaksanaanMemahami Enjin JavaScript: Butiran PelaksanaanApr 17, 2025 am 12:05 AM

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

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

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)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

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 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)