Rumah hujung hadapan web tutorial js Meneroka Ciri Reaksi, Penamatan dan Perubahan Memecah

Meneroka Ciri Reaksi, Penamatan dan Perubahan Memecah

Dec 10, 2024 pm 08:22 PM

Exploring React  Features, Deprecations, and Breaking Changes

React 19 telah hadir, membawakan pelbagai ciri baharu, penambahbaikan dan perubahan besar. Keluaran ini mentakrifkan semula cara pembangun mengendalikan pengurusan negeri, borang dan pemaparan sebelah pelayan sambil menghentikan penggunaan API lama. Jika anda bercadang untuk menaik taraf, sandarkan diri untuk perjalanan yang transformatif. Panduan ini akan membimbing anda melalui sorotan React 19, dengan petua untuk memastikan peralihan yang lancar.


Sorotan React 19

Ciri Baharu

1. Tindakan dan gunakanActionState

startTransition API kini menyokong fungsi async, dirujuk sebagai "Tindakan." Tindakan boleh mengurus kemas kini keadaan, mengendalikan kesan sampingan seperti fetch(), dan termasuk pengendalian ralat. Mereka menyelaraskan peralihan dengan kemas kini keadaan yang diselaraskan dan pemaparan UI.

Kait useActionState baharu melengkapkan ini dengan menyediakan akses kepada keadaan Tindakan, termasuk keadaan belum selesai dan keadaan akhir. Ia menerima pengurang untuk kawalan berbutir, menjadikannya alat penting untuk interaksi bentuk dan aliran keadaan kompleks.

2. Kemas Kini Optimis dengan useOptimistic

useOptimistic membolehkan pembangun menetapkan perubahan keadaan sementara semasa peralihan sedang berjalan, memberikan pengalaman pengguna yang lebih lancar. Keadaan berbalik atau mengemas kini secara automatik sebaik sahaja operasi async selesai.

3. gunakan API

React 19 memperkenalkan use API, yang membenarkan janji atau konteks dibaca semasa pemaparan. Ini boleh memudahkan aliran kerja pengambilan data pelayan tetapi disertakan dengan sekatan yang digunakan hanya boleh dipanggil dalam fungsi pemaparan.

4. rujuk sebagai Prop

Anda kini boleh menghantar rujukan sebagai prop secara langsung, menghapuskan keperluan untuk forwardRef. Perubahan ini memudahkan komposisi komponen dan menjadikan kerja dengan rujukan lebih intuitif.

5. Suspensi yang Diperbaiki

Suspense kini menyokong prapemanasan adik beradik, yang melakukan komponen sandaran serta-merta apabila adik beradik digantung. Peningkatan ini meningkatkan prestasi dan pengalaman pengguna dalam aplikasi berat data.


Tindak Balas Penambahbaikan Pelanggan DOM

1. Tindakan Bentuk

Borang dalam React lebih pintar dengan

prop tindakan, membolehkan penyepaduan yang lebih baik dengan useFormStatus. Menghantar borang secara automatik menetapkan semula keadaannya untuk komponen yang tidak terkawal.

2. Metadata Dokumen dan Pengoptimuman Sumber

React 19 secara asli menyokong pemaparan metadata dokumen, seperti atau <meta> tag, dalam pokok komponen. Selain itu, API baharu seperti prainit, pramuat dan prasambung memperbaik penemuan sumber dan masa pemuatan.</p> <h4> 3. <strong>Skrip Async</strong> </h4> <p>Anda kini boleh memaparkan skrip async di mana-mana sahaja dalam pepohon komponen. React mengendalikan pesanan dan penyahduplikasian, memperkemas penyepaduan skrip pihak ketiga.</p> <hr> <h3> <strong>React DOM Server</strong> </h3> <h4> 1. <strong>API Prapaparan Baharu</strong> </h4> <p>API <strong>prapaparan</strong> dan <strong>prapaparanToNodeStream</strong> meningkatkan pemaparan sebelah pelayan (SSR) dengan menyokong persekitaran penstriman seperti Node.js. API ini menunggu pemuatan data sebelum menjana HTML, menjadikan SSR lebih mantap.</p> <h4> 2. <strong>Komponen Pelayan Tindak Balas Stabil (RSC)</strong> </h4> <p>Komponen Pelayan kini stabil, membolehkan perpustakaan menyasarkan React 19 sebagai pergantungan rakan sebaya. Ini sejajar dengan seni bina Timbunan Penuh React dan membolehkan penyepaduan lancar dengan rangka kerja seperti Next.js.</p> <hr> <h3> <strong>Pemberhentian dan Perubahan Pecah</strong> </h3> <h4> <strong>Pemberhentian</strong> </h4> <ul> <li> <strong>akses element.ref</strong>: Ditamatkan dan memihak kepada element.props.ref.</li> <li> <strong>react-test-renderer</strong>: Log amaran penamatan; pertimbangkan untuk berhijrah ke Pustaka Pengujian React.</li> <li> <strong>API Warisan</strong>: API seperti ContextTypes, Props lalai untuk fungsi dan rujukan rentetan tidak digunakan secara rasmi.</li> </ul> <h4> <strong>Memecahkan Perubahan</strong> </h4> <ol> <li><p><strong>Keperluan Transformasi JSX</strong><br> Transformasi JSX baharu adalah wajib dalam React 19. Ini membolehkan ciri seperti rujukan sebagai prop dan meningkatkan prestasi keseluruhan.</p></li> <li><p><strong>Ralat Mengendalikan Perubahan</strong><br> Ralat yang tidak ditangkap kini dilaporkan kepada window.reportError, manakala ralat yang ditangkap oleh sempadan dilog melalui console.error. Kaedah baharu seperti onUncaughtError dan onCaughtError membenarkan penyesuaian.</p></li> <li> <p><strong>API Dialih Keluar</strong></p> <ul> <li> <strong>ReactDOM.render dan ReactDOM.hydrate</strong>: Digantikan oleh ReactDOM.createRoot dan ReactDOM.hydrateRoot.</li> <li> <strong>defaultProps untuk fungsi</strong>: Gunakan parameter lalai ES6 sebaliknya.</li> <li> <strong>Konteks Warisan</strong>: Gunakan API ContextType moden.</li> <li> <strong>react-dom/test-utils</strong>: Digantikan dengan act daripada React core.</li> </ul> </li> <li><p><strong>Binaan UMD Dialih Keluar</strong><br> Binaan UMD tidak lagi disokong. Gunakan CDN berasaskan ESM untuk penggunaan teg skrip, seperti esm.sh.</p></li> </ol> <hr> <h2> <strong>Bersedia untuk Peningkatan</strong> </h2> <h3> 1. <strong>Naik taraf kepada React 18.3 Dahulu</strong> </h3> <p>React 18.3 memperkenalkan amaran penamatan untuk API yang dialih keluar dalam React 19. Langkah perantaraan ini membantu mengenal pasti isu yang berpotensi sebelum peningkatan penuh.</p> <h3> 2. <strong>Kodemod dan Alat Migrasi</strong> </h3> <p>Gunakan codemod React untuk mengautomasikan kemas kini berulang, seperti memfaktorkan semula API yang tidak digunakan dan melaraskan jenis TypeScript.</p> <h3> 3. <strong>Pelarasan TypeScript</strong> </h3> <p>React 19 termasuk penaipan TypeScript yang lebih ketat. Contohnya:</p> <ul> <li> ReactChild → React.ReactElement | nombor | rentetan </li> <li> VoidFunctionComponent → FunctionComponent </li> </ul> <p>Faktor semula kod anda untuk menyelaraskan dengan kemas kini ini.</p> <hr> <h2> <strong>Petua untuk Peralihan yang Lancar</strong> </h2> <ul> <li> <strong>Memanfaatkan Mod Tegas</strong>: React 19 memperkenalkan penguatkuasaan amalan terbaik yang lebih ketat. Menjalankan apl anda dalam Mod Ketat boleh mendedahkan pepijat tersembunyi.</li> <li> <strong>Uji Awal dan Selalunya</strong>: Memandangkan perubahan yang ketara, ujian menyeluruh adalah kritikal. Peralihan daripada react-test-renderer kepada React Testing Library memastikan keserasian dengan pemaparan serentak.</li> <li> <strong>Semak Perenderan Pelayan</strong>: Jika apl anda menggunakan SSR, uji terhadap API prapaparan baharu React 19 dan pastikan penyepaduan lancar bagi komponen pelayan.</li> </ul> <hr> <h2> <strong>Kenapa React 19 Penting</strong> </h2> <p>React 19 ialah lonjakan ketara ke hadapan, memperhalusi pengalaman pembangun sambil mendayakan keupayaan berkuasa untuk aplikasi moden. Sama ada anda teruja dengan Tindakan async, Suspense yang dipertingkatkan atau peningkatan pemaparan sebelah pelayan, keluaran ini padat dengan ciri untuk membantu pembangun membina apl yang lebih pantas dan berdaya tahan.</p> <p>Bersedia untuk menyelam? Mulakan dengan Panduan Naik Taraf React 19 dan terokai nota keluaran penuh.</p> <p>Selamat pengekodan! ?</p> <p>Atas ialah kandungan terperinci Meneroka Ciri Reaksi, Penamatan dan Perubahan Memecah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!</p> </div> </div> <div class="wzconShengming_sp"> <div class="bzsmdiv_sp">Kenyataan Laman Web ini</div> <div>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</div> </div> </div> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="2507867629"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <div class="AI_ToolDetails_main4sR"> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5902227090019525" data-ad-slot="3653428331" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <!-- <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Artikel Panas</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796793874.html" title="Bagaimana untuk memperbaiki KB5055523 gagal dipasang di Windows 11?" class="phpgenera_Details_mainR4_bottom_title">Bagaimana untuk memperbaiki KB5055523 gagal dipasang di Windows 11?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 minggu yang lalu</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796793871.html" title="Bagaimana untuk memperbaiki KB5055518 gagal dipasang di Windows 10?" class="phpgenera_Details_mainR4_bottom_title">Bagaimana untuk memperbaiki KB5055518 gagal dipasang di Windows 10?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 minggu yang lalu</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796791957.html" title="<🎜>: Rails Dead - Cara menjinakkan serigala" class="phpgenera_Details_mainR4_bottom_title"><🎜>: Rails Dead - Cara menjinakkan serigala</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 minggu yang lalu</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796792155.html" title="Tahap kekuatan untuk setiap musuh & raksasa di R.E.P.O." class="phpgenera_Details_mainR4_bottom_title">Tahap kekuatan untuk setiap musuh & raksasa di R.E.P.O.</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 minggu yang lalu</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796797907.html" title="<🎜>: Tumbuh Taman - Panduan Mutasi Lengkap" class="phpgenera_Details_mainR4_bottom_title"><🎜>: Tumbuh Taman - Panduan Mutasi Lengkap</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2 minggu yang lalu</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ms/article.html">Tunjukkan Lagi</a> </div> </div> </div> --> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>Alat AI Hot</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title"> <h3>Undresser.AI Undress</h3> </a> <p>Apl berkuasa AI untuk mencipta foto bogel yang realistik</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title"> <h3>AI Clothes Remover</h3> </a> <p>Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title"> <h3>Undress AI Tool</h3> </a> <p>Gambar buka pakaian secara percuma</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title"> <h3>Clothoff.io</h3> </a> <p>Penyingkiran pakaian AI</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173414504068133.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Video Face Swap" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_title"> <h3>Video Face Swap</h3> </a> <p>Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ms/ai">Tunjukkan Lagi</a> </div> </div> </div> <script src="https://sw.php.cn/hezuo/cac1399ab368127f9b113b14eb3316d0.js" type="text/javascript"></script> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Artikel Panas</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796793874.html" title="Bagaimana untuk memperbaiki KB5055523 gagal dipasang di Windows 11?" class="phpgenera_Details_mainR4_bottom_title">Bagaimana untuk memperbaiki KB5055523 gagal dipasang di Windows 11?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 minggu yang lalu</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796793871.html" title="Bagaimana untuk memperbaiki KB5055518 gagal dipasang di Windows 10?" class="phpgenera_Details_mainR4_bottom_title">Bagaimana untuk memperbaiki KB5055518 gagal dipasang di Windows 10?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 minggu yang lalu</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796791957.html" title="<🎜>: Rails Dead - Cara menjinakkan serigala" class="phpgenera_Details_mainR4_bottom_title"><🎜>: Rails Dead - Cara menjinakkan serigala</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 minggu yang lalu</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796792155.html" title="Tahap kekuatan untuk setiap musuh & raksasa di R.E.P.O." class="phpgenera_Details_mainR4_bottom_title">Tahap kekuatan untuk setiap musuh & raksasa di R.E.P.O.</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 minggu yang lalu</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/1796797907.html" title="<🎜>: Tumbuh Taman - Panduan Mutasi Lengkap" class="phpgenera_Details_mainR4_bottom_title"><🎜>: Tumbuh Taman - Panduan Mutasi Lengkap</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2 minggu yang lalu</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ms/article.html">Tunjukkan Lagi</a> </div> </div> </div> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>Alat panas</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/toolset/development-tools/92" title="Notepad++7.3.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Notepad++7.3.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/toolset/development-tools/92" title="Notepad++7.3.1" class="phpmain_tab2_mids_title"> <h3>Notepad++7.3.1</h3> </a> <p>Editor kod yang mudah digunakan dan percuma</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/toolset/development-tools/93" title="SublimeText3 versi Cina" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 versi Cina" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/toolset/development-tools/93" title="SublimeText3 versi Cina" class="phpmain_tab2_mids_title"> <h3>SublimeText3 versi Cina</h3> </a> <p>Versi Cina, sangat mudah digunakan</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/toolset/development-tools/121" title="Hantar Studio 13.0.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Hantar Studio 13.0.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/toolset/development-tools/121" title="Hantar Studio 13.0.1" class="phpmain_tab2_mids_title"> <h3>Hantar Studio 13.0.1</h3> </a> <p>Persekitaran pembangunan bersepadu PHP yang berkuasa</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Dreamweaver CS6" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_title"> <h3>Dreamweaver CS6</h3> </a> <p>Alat pembangunan web visual</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ms/toolset/development-tools/500" title="SublimeText3 versi Mac" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 versi Mac" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ms/toolset/development-tools/500" title="SublimeText3 versi Mac" class="phpmain_tab2_mids_title"> <h3>SublimeText3 versi Mac</h3> </a> <p>Perisian penyuntingan kod peringkat Tuhan (SublimeText3)</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ms/ai">Tunjukkan Lagi</a> </div> </div> </div> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Topik panas</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/java-tutorial" title="Tutorial Java" class="phpgenera_Details_mainR4_bottom_title">Tutorial Java</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1656</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>14</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/cakephp-tutor" title="Tutorial CakePHP" class="phpgenera_Details_mainR4_bottom_title">Tutorial CakePHP</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1415</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>52</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/laravel-tutori" title="Tutorial Laravel" class="phpgenera_Details_mainR4_bottom_title">Tutorial Laravel</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1308</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>25</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/php-tutorial" title="Tutorial PHP" class="phpgenera_Details_mainR4_bottom_title">Tutorial PHP</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1256</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>29</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ms/faq/c-tutorial" title="Tutorial C#" class="phpgenera_Details_mainR4_bottom_title">Tutorial C#</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1229</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>24</span> </div> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ms/faq/zt">Tunjukkan Lagi</a> </div> </div> </div> </div> </div> <div class="Article_Details_main2"> <div class="phpgenera_Details_mainL4"> <div class="phpmain1_2_top"> <a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img src="/static/imghw/index2_title2.png" alt="" /></a> </div> <div class="phpgenera_Details_mainL4_info"> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ms/faq/1796793115.html" title="Demystifying JavaScript: Apa yang berlaku dan mengapa penting" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174412846042688.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Demystifying JavaScript: Apa yang berlaku dan mengapa penting" /> </a> <a href="https://www.php.cn/ms/faq/1796793115.html" title="Demystifying JavaScript: Apa yang berlaku dan mengapa penting" class="phphistorical_Version2_mids_title">Demystifying JavaScript: Apa yang berlaku dan mengapa penting</a> <span class="Articlelist_txts_time">Apr 09, 2025 am 12:07 AM</span> <p class="Articlelist_txts_p">JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ms/faq/1796793650.html" title="Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174424878172869.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan" /> </a> <a href="https://www.php.cn/ms/faq/1796793650.html" title="Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan" class="phphistorical_Version2_mids_title">Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan</a> <span class="Articlelist_txts_time">Apr 10, 2025 am 09:33 AM</span> <p class="Articlelist_txts_p">Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ms/faq/1796795187.html" title="Enjin JavaScript: Membandingkan Pelaksanaan" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174447395115481.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Enjin JavaScript: Membandingkan Pelaksanaan" /> </a> <a href="https://www.php.cn/ms/faq/1796795187.html" title="Enjin JavaScript: Membandingkan Pelaksanaan" class="phphistorical_Version2_mids_title">Enjin JavaScript: Membandingkan Pelaksanaan</a> <span class="Articlelist_txts_time">Apr 13, 2025 am 12:05 AM</span> <p class="Articlelist_txts_p">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.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ms/faq/1796794156.html" title="JavaScript: meneroka serba boleh bahasa web" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174430086367978.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="JavaScript: meneroka serba boleh bahasa web" /> </a> <a href="https://www.php.cn/ms/faq/1796794156.html" title="JavaScript: meneroka serba boleh bahasa web" class="phphistorical_Version2_mids_title">JavaScript: meneroka serba boleh bahasa web</a> <span class="Articlelist_txts_time">Apr 11, 2025 am 12:01 AM</span> <p class="Articlelist_txts_p">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.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ms/faq/1796796853.html" title="Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174473354083140.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan" /> </a> <a href="https://www.php.cn/ms/faq/1796796853.html" title="Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan" class="phphistorical_Version2_mids_title">Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan</a> <span class="Articlelist_txts_time">Apr 16, 2025 am 12:12 AM</span> <p class="Articlelist_txts_p">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.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ms/faq/1796794257.html" title="Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/242/473/174433092927917.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)" /> </a> <a href="https://www.php.cn/ms/faq/1796794257.html" title="Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)" class="phphistorical_Version2_mids_title">Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)</a> <span class="Articlelist_txts_time">Apr 11, 2025 am 08:22 AM</span> <p class="Articlelist_txts_p">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</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ms/faq/1796795636.html" title="Dari C/C ke JavaScript: Bagaimana semuanya berfungsi" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174456030117549.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Dari C/C ke JavaScript: Bagaimana semuanya berfungsi" /> </a> <a href="https://www.php.cn/ms/faq/1796795636.html" title="Dari C/C ke JavaScript: Bagaimana semuanya berfungsi" class="phphistorical_Version2_mids_title">Dari C/C ke JavaScript: Bagaimana semuanya berfungsi</a> <span class="Articlelist_txts_time">Apr 14, 2025 am 12:05 AM</span> <p class="Articlelist_txts_p">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.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ms/faq/1796790437.html" title="Bagaimana saya memasang javascript?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174378339020620.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Bagaimana saya memasang javascript?" /> </a> <a href="https://www.php.cn/ms/faq/1796790437.html" title="Bagaimana saya memasang javascript?" class="phphistorical_Version2_mids_title">Bagaimana saya memasang javascript?</a> <span class="Articlelist_txts_time">Apr 05, 2025 am 12:16 AM</span> <p class="Articlelist_txts_p">JavaScript tidak memerlukan pemasangan kerana ia sudah dibina dalam pelayar moden. Anda hanya memerlukan editor teks dan penyemak imbas untuk memulakan. 1) Dalam persekitaran penyemak imbas, jalankan dengan memasukkan fail HTML melalui tag. 2) Dalam persekitaran Node.js, selepas memuat turun dan memasang node.js, jalankan fail JavaScript melalui baris arahan.</p> </div> </div> <a href="https://www.php.cn/ms/web-designer.html" class="phpgenera_Details_mainL4_botton"> <span>See all articles</span> <img src="/static/imghw/down_right.png" alt="" /> </a> </div> </div> </div> </main> <footer> <div class="footer"> <div class="footertop"> <img src="/static/imghw/logo.png" alt=""> <p>Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!</p> </div> <div class="footermid"> <a href="https://www.php.cn/ms/about/us.html">Tentang kita</a> <a href="https://www.php.cn/ms/about/disclaimer.html">Penafian</a> <a href="https://www.php.cn/ms/update/article_0_1.html">Sitemap</a> </div> <div class="footerbottom"> <p> © php.cn All rights reserved </p> </div> </div> </footer> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1746424379"></script> <script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' /> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = "https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '9']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); </script> <script> // top layui.use(function () { var util = layui.util; util.fixbar({ on: { mouseenter: function (type) { layer.tips(type, this, { tips: 4, fixed: true, }); }, mouseleave: function (type) { layer.closeAll("tips"); }, }, }); }); document.addEventListener("DOMContentLoaded", (event) => { // 定义一个函数来处理滚动链接的点击事件 function setupScrollLink(scrollLinkId, targetElementId) { const scrollLink = document.getElementById(scrollLinkId); const targetElement = document.getElementById(targetElementId); if (scrollLink && targetElement) { scrollLink.addEventListener("click", (e) => { e.preventDefault(); // 阻止默认链接行为 targetElement.scrollIntoView({ behavior: "smooth" }); // 平滑滚动到目标元素 }); } else { console.warn( `Either scroll link with ID '${scrollLinkId}' or target element with ID '${targetElementId}' not found.` ); } } // 使用该函数设置多个滚动链接 setupScrollLink("Article_Details_main1L2s_1", "article_main_title1"); setupScrollLink("Article_Details_main1L2s_2", "article_main_title2"); setupScrollLink("Article_Details_main1L2s_3", "article_main_title3"); setupScrollLink("Article_Details_main1L2s_4", "article_main_title4"); setupScrollLink("Article_Details_main1L2s_5", "article_main_title5"); setupScrollLink("Article_Details_main1L2s_6", "article_main_title6"); // 可以继续添加更多的滚动链接设置 }); window.addEventListener("scroll", function () { var fixedElement = document.getElementById("Article_Details_main1Lmain"); var scrollTop = window.scrollY || document.documentElement.scrollTop; // 兼容不同浏览器 var clientHeight = window.innerHeight || document.documentElement.clientHeight; // 视口高度 var scrollHeight = document.documentElement.scrollHeight; // 页面总高度 // 计算距离底部的距离 var distanceToBottom = scrollHeight - scrollTop - clientHeight; // 当距离底部小于或等于300px时,取消固定定位 if (distanceToBottom <= 980) { fixedElement.classList.remove("Article_Details_main1Lmain"); fixedElement.classList.add("Article_Details_main1Lmain_relative"); } else { // 否则,保持固定定位 fixedElement.classList.remove("Article_Details_main1Lmain_relative"); fixedElement.classList.add("Article_Details_main1Lmain"); } }); </script> <script> document.addEventListener('DOMContentLoaded', function() { const mainNav = document.querySelector('.Article_Details_main1Lmain'); const header = document.querySelector('header'); if (mainNav) { window.addEventListener('scroll', function() { const scrollPosition = window.scrollY; if (scrollPosition > 84) { mainNav.classList.add('fixed'); } else { mainNav.classList.remove('fixed'); } }); } }); </script> </body> </html>