Apakah penggunaan Netflix bereaksi?
Ringkasan
Di artikel ini, kami akan mengeksplorasi bagaimana Netflix meningkatkan kinerja front-end mereka dengan beralih ke Vanilla JS. Netflix memutuskan untuk menggunakan React sebagai mesin templating sisi server dan vanilla JS untuk interaksi dan manipulasi DOM di browser. Ini memungkinkan mereka untuk mengurangi ukuran bundel JavaScript mereka dan meningkatkan kinerja secara keseluruhan.
1. Bagaimana Netflix meningkatkan kinerja front-end mereka?
Netflix meningkatkan kinerja front-end mereka dengan beralih ke Vanilla JS untuk interaksi dan manipulasi DOM di browser. Mereka masih menggunakan React sebagai mesin templating sisi server.
2. Mengapa Netflix memutuskan untuk beralih ke Vanilla JS?
Netflix beralih ke Vanilla JS untuk mengurangi ukuran bundel JavaScript mereka dan meningkatkan kinerja keseluruhan. Keputusan ini memungkinkan mereka untuk menghilangkan overhead yang tidak perlu menggunakan React di browser.
3. Berapa banyak javascript yang awalnya berisi halaman Netflix?
Halaman Netflix awalnya berisi 300kb JavaScript, yang termasuk React dan kode sisi klien lainnya, serta data konteks yang diperlukan untuk menghidrasi keadaan React.
4. Mengapa mengurangi ukuran JavaScript penting untuk kinerja front-end?
Mengurangi ukuran JavaScript penting untuk kinerja front-end karena dapat mengurangi waktu yang dibutuhkan browser untuk mengunduh dan menguraikan kode. Bundel JavaScript yang lebih kecil mengarah pada waktu beban yang lebih cepat dan pengalaman pengguna yang lebih baik.
5. Apa manfaat menggunakan reaksi sebagai mesin templating sisi server?
Menggunakan React sebagai mesin templating sisi server memungkinkan rendering dinamis HTML di server, yang dapat meningkatkan kinerja dan SEO. Ini juga memungkinkan untuk menggunakan kembali kode antara server dan klien.
6. Bagaimana Switch Netflix ke Vanilla JS memengaruhi kinerja front-end mereka?
Switch Netflix ke Vanilla JS secara signifikan meningkatkan kinerja front-end mereka. Dengan menghapus overhead reaksi di browser, mereka dapat mengurangi ukuran bundel javascript dan meningkatkan waktu beban.
7. Pendekatan apa yang dilakukan Netflix untuk meningkatkan kinerja front-end mereka?
Netflix menggunakan React sebagai mesin templating sisi server dan vanilla js untuk interaksi dan manipulasi DOM di browser. Pendekatan ini memungkinkan mereka untuk menyeimbangkan kinerja dan pemeliharaan.
8. Bagaimana cara mengurangi ukuran pengguna bundel javascript?
Mengurangi ukuran bundel JavaScript dapat menguntungkan pengguna dengan meningkatkan waktu pemuatan halaman, mengurangi penggunaan data, dan memberikan pengalaman penelusuran yang lebih halus.
9. Apa pentingnya keputusan Netflix untuk beralih ke Vanilla JS?
Keputusan Netflix untuk beralih ke Vanilla JS menunjukkan pentingnya mengoptimalkan kinerja front-end, bahkan untuk perusahaan besar. Ini memberi contoh bagi pengembang dan organisasi lain yang ingin meningkatkan aplikasi web mereka sendiri.
10. Apa yang dapat dipelajari pengembang dari peningkatan kinerja front-end Netflix?
Pengembang dapat mempelajari pentingnya mengevaluasi dan mengoptimalkan kode JavaScript mereka untuk kinerja front-end yang lebih baik. Mereka juga dapat mempertimbangkan untuk menggunakan rendering sisi server dengan kerangka kerja seperti React untuk meningkatkan kinerja dan pengalaman pengguna.
11. Bagaimana menggunakan reaksi sebagai seo mesin templating sisi server?
Menggunakan React sebagai mesin templating sisi server memungkinkan untuk rendering dinamis HTML di server, yang dapat meningkatkan SEO dengan menyediakan mesin pencari dengan konten yang diseret sepenuhnya daripada mengandalkan eksekusi JavaScript.
12. Teknologi lain apa yang digunakan Netflix di tumpukan front-end mereka?
Artikel ini tidak menyebutkan teknologi spesifik, tetapi menyoroti sakelar ke vanilla JS untuk interaksi front-end dan manipulasi DOM. Mungkin saja Netflix menggunakan alat dan perpustakaan lain di tumpukan front-end mereka.
13. Bagaimana pengembang dapat mengukur kinerja front-end?
Pengembang dapat mengukur kinerja front-end menggunakan alat seperti Lighthouse, WebPagetest, dan Chrome DevTools. Alat -alat ini memberikan wawasan tentang metrik seperti waktu pemuatan halaman, ukuran aset, dan aktivitas jaringan.
14. Apa keuntungan menggunakan vanilla js untuk pengembangan front-end?
Menggunakan vanilla JS untuk pengembangan front-end dapat menyebabkan waktu beban yang lebih cepat, ukuran bundel yang dikurangi, peningkatan kinerja, dan kontrol yang lebih besar atas basis kode. Ini juga menghilangkan kebutuhan akan dependensi tambahan dan overhead yang diperkenalkan oleh kerangka kerja seperti React.
15. Bagaimana pengembang dapat mengoptimalkan kode javascript mereka untuk kinerja yang lebih baik?
Pengembang dapat mengoptimalkan kode javascript mereka dengan meminimalkan dan mengompresnya, mengurangi dependensi yang tidak perlu, kode pemuatan malas, dan menggunakan teknik seperti pemisahan kode dan caching. Mereka juga dapat memprioritaskan jalur rendering kritis dan meminimalkan sumber daya pemblokiran render.
Bagaimana Netflix secara dramatis meningkatkan kinerja ujung depan mereka dengan beralih ke Vanilla JS
Klon Netflix Sederhana Menggunakan React dan TMDB API untuk menarik film/acara TV
Netflix
Klon Netflix Tumpukan Lengkap dengan React, NextJS, Tailwindcss, Prisma dan MongoDB
Klon Netflix Tumpukan Lengkap dengan React, NextJS, Tailwindcss, Prisma dan MongoDB
03 Mei 2023
Netflix Landing Page Clone With React.JS
Netflix Landing Page Clone With React.JS
27 April 2023
Proyek klon FullStack Netflix dengan NextJS
Proyek klon FullStack Netflix dengan NextJS
06 April 2023
Klon FullStack Netflix dengan NextJS dan Tailwind CSS
Klon FullStack Netflix dengan NextJS dan Tailwind CSS
18 Maret 2023
Klon Netflix dibuat dalam reaksi dan menggunakan vite
Klon Netflix dibuat dalam reaksi dan menggunakan vite
01 November 2022
Klon Netflix Menggunakan ReactJs, TMDB API, Firebase
Klon Netflix Menggunakan ReactJs, TMDB API, Firebase
02 Oktober 2022
Netflix UI Clone Dibuat dengan ReactJs dan CSS murni
Netflix UI Clone Dibuat dengan ReactJs dan CSS murni
07 September 2022
Situs web Netflix Clone menggunakan React
Situs web Netflix Clone menggunakan React
29 Agustus 2022
Klon Netflix Menggunakan React18, TypeScript, Material UI, dan TMDB API
Klon Netflix Menggunakan React18, TypeScript, Material UI, dan TMDB API
22 Agustus 2022
Klon ujung depan yang disederhanakan dari Netflix dibuat dengan React dan CSS
Klon ujung depan yang disederhanakan dari Netflix dibuat dengan React dan CSS
01 Agustus 2022
Netflix Clone Menggunakan React JS
Netflix Clone Menggunakan React JS
12 Juli 2022
Klon Netflix dengan React JS dan Firebase
Klon Netflix dengan React JS dan Firebase
06 Juli 2022
Pemain video canggih dengan gaya Netflix berdasarkan plugin React-Player
Buat pemutar video Netflix dengan pemutar reaksi, naskah, dan komponen gaya.
30 Juni 2022
Netflix Clone Dibangun dengan Berikutnya.JS dan Tailwind CSS
Netflix Clone Dibangun dengan Berikutnya.JS dan Tailwind CSS
10 Juni 2022
Klon Netflix yang dibangun dengan reactjs
Klon Netflix yang dibangun dengan reactjs
03 Mei 2022
Netflix Clone Dibuat dengan React, HTML, CSS
Netflix Clone Dibuat dengan React, HTML, CSS
17 Maret 2022
Klon Netflix Dibuat Menggunakan Komponen React, Firebase, Firestore, dan Styled
Klon Netflix Dibuat Menggunakan Komponen React, Firebase, Firestore, dan Styled
26 Februari 2022
Klon Netflix sederhana menggunakan reactjs
Klon Netflix sederhana menggunakan reactjs
17 Februari 2022
Klon Netflix yang dibangun menggunakan React
Klon Netflix yang dibangun menggunakan React
03 Februari 2022
Netflix UI Klon dengan ReactJs untuk tujuan studi
Netflix UI Klon dengan ReactJs untuk tujuan studi
27 Januari 2022
Netflix Clone Dibuat Menggunakan React.JS
Netflix Clone Dibuat Menggunakan React.JS
21 Januari 2022
Cukup klon Netflix menggunakan reactjs. Itu mengambil data dari TMDB API
Cukup klon Netflix menggunakan reactjs. Itu mengambil data dari TMDB API
26 Desember 2021
Klon Beranda Netflix Netflix Sederhana Menggunakan Astra DB dan GraphQL
Klon Beranda Netflix Netflix Sederhana Menggunakan Astra DB dan GraphQL
21 Desember 2021
Aplikasi Klon Netflix yang dibuat dengan React+TypeScript
Aplikasi Klon Netflix yang dibuat dengan React+TypeScript
15 Desember 2021
Klon aplikasi netflix stack penuh menggunakan react native dan aws amplify
Klon aplikasi netflix stack penuh menggunakan react native dan aws amplify
28 November 2021
Proyek sampel Netflix yang dibangun dengan bereaksi
Proyek sampel Netflix yang dibangun dengan bereaksi
27 November 2021
Klon Netflix Sederhana Menggunakan React dan TMDB API untuk menarik film/acara TV
Klon Netflix Sederhana Menggunakan React dan TMDB API untuk menarik film/acara TV
17 November 2021
Netflix Homepage Clone Menggunakan React JS
Netflix Homepage Clone Menggunakan React JS
15 November 2021
Klon Netflix Sederhana Menggunakan React dan TMDB API untuk menarik film/acara TV
Klon Netflix Sederhana Menggunakan React dan TMDB API untuk menarik film/acara TV. Menggunakan material UI untuk frontend.
15 November 2021
Halaman utama klon Netflix yang dibangun menggunakan React
Halaman utama klon Netflix yang dibangun menggunakan React
08 November 2021
Klon Netflix Dibangun dengan React JS dan diautentikasi dengan Firebase
Klon Netflix Dibangun dengan React JS dan diautentikasi dengan Firebase
Bagaimana Netflix secara dramatis meningkatkan kinerja ujung depan mereka dengan beralih ke Vanilla JS
Netflix tidak’t parit benar -benar bereaksi. Mereka masih menggunakannya di server untuk membuat HTML awal mereka.
Tapi mereka memang menyingkirkannya di browser, jika itu adalah kinerja ujung depan yang melumpuhkan.
Saya pikir itu’s A HEBAT pendekatan. Bereaksi sebagai mesin templating sisi server. Vanilla JS untuk interaksi dan manipulasi DOM di browser.
Halaman ini awalnya berisi 300kb JavaScript, beberapa di antaranya bereaksi dan kode sisi klien lainnya (seperti perpustakaan utilitas seperti LoDash), dan beberapa di antaranya adalah data konteks yang diperlukan untuk menghidrasi bereaksi’status s.
300kb JS! Astaga!
Bagaimanapun, itu’Senang melihat perusahaan besar seperti Netflix membuat lompatan ke vanilla js. Untuk menggali seluk -beluk bagaimana mereka melakukannya, baca addy’artikel S.
�� Penjualan Flash! Minggu ini saja, dapatkan diskon 50% setiap kursus dan ebook JavaScript. Pelajari lebih lanjut di vanillejsguides.com.
Benci kompleksitas pengembangan web front -end modern? Saya mengirimkan email singkat setiap hari kerja tentang cara membangun web yang lebih sederhana dan lebih tangguh. Bergabunglah dengan lebih dari 14k lainnya.
Dibuat dengan ❤️ di Massachusetts. Kecuali dinyatakan lain, semua kode bebas digunakan di bawah lisensi MIT. Saya juga sangat tidak teratur berbagi pemikiran non-coding.
Membuat antarmuka pengguna TV berkinerja tinggi menggunakan React
Antarmuka TV Netflix terus berkembang saat kami berusaha untuk mencari tahu pengalaman terbaik bagi anggota kami. Misalnya, setelah pengujian A/B, penelitian pelacakan mata, dan umpan balik pelanggan kami baru-baru ini meluncurkan pratinjau video untuk membantu anggota membuat keputusan yang lebih baik tentang apa yang harus ditonton. Kami’ve ditulis sebelumnya tentang bagaimana aplikasi TV kami terdiri dari SDK yang diinstal secara asli pada perangkat, aplikasi JavaScript yang dapat diperbarui kapan saja, dan lapisan rendering yang dikenal sebagai Gibbon. Dalam posting ini kami’LL menyoroti beberapa strategi kami’VE dipekerjakan di sepanjang jalan untuk mengoptimalkan kinerja aplikasi JavaScript kami.
React-ungu
Pada 2015, kami memulai penulisan ulang grosir dan modernisasi arsitektur UI TV kami. Kami memutuskan untuk menggunakan React karena aliran data satu arah dan pendekatan deklaratif untuk pengembangan UI membuatnya lebih mudah untuk bernalar tentang aplikasi kami. Jelas, kami’D membutuhkan rasa bereaksi sendiri karena pada saat itu hanya menargetkan DOM. Kami dapat membuat prototipe yang menargetkan Gibbon dengan cukup cepat. Prototipe ini akhirnya berevolusi menjadi react-gibbon dan kami mulai berupaya membangun UI berbasis reaksi baru kami.
React-ungu’S API akan sangat akrab bagi siapa saja yang telah bekerja dengan react-dom. Perbedaan utama adalah bahwa alih -alih divs, rentang, input dll, kami memiliki satu “widget” menggambar primitif yang mendukung gaya inline.
Reaksi.createClass (render () return> />;
>
>); Kinerja adalah tantangan utama
Aplikasi kami berjalan pada ratusan perangkat yang berbeda, dari konsol game terbaru seperti PS4 Pro hingga perangkat elektronik konsumen anggaran dengan memori terbatas dan daya pemrosesan. Mesin low-end yang kami target seringkali dapat memiliki CPU inti tunggal sub-GHz, memori rendah dan akselerasi grafis terbatas. Untuk membuat segalanya menjadi lebih menantang, lingkungan JavaScript kami adalah versi non-JIT yang lebih lama dari JavaScriptCore. Pembatasan ini membuat pengalaman 60fps super responsif sangat rumit dan mendorong banyak perbedaan antara reaksi-gibbon dan react-dom.
Mengukur, mengukur, mengukur
Saat mendekati optimasi kinerja itu’penting untuk terlebih dahulu mengidentifikasi metrik yang akan Anda gunakan untuk mengukur keberhasilan upaya Anda. Kami menggunakan metrik berikut untuk mengukur kinerja aplikasi secara keseluruhan:
- Responsif input kunci – waktu yang dibutuhkan untuk memberikan perubahan sebagai respons terhadap tekan tombol
- Waktu untuk interaktivitas – waktu untuk memulai aplikasi
- Bingkai per detik – konsistensi dan kehalusan animasi kami
- Penggunaan memori
Strategi yang diuraikan di bawah ini terutama ditujukan untuk meningkatkan respons input kunci. Mereka semua diidentifikasi, diuji dan diukur pada perangkat kami dan tidak harus berlaku di lingkungan lain. Seperti semua “praktek terbaik” Saran Penting untuk skeptis dan memverifikasi bahwa mereka bekerja di lingkungan Anda, dan untuk kasus penggunaan Anda. Kami memulai dengan menggunakan alat profil untuk mengidentifikasi jalur kode apa yang dijalankan dan apa bagian mereka dari total waktu render; Ini membawa kita ke beberapa pengamatan yang menarik.
Pengamatan: Bereaksi.createelement memiliki biaya
Saat Babel mentranspransferensi jsx itu mengubahnya menjadi sejumlah reaksi.Panggilan fungsi createElement yang ketika dievaluasi menghasilkan deskripsi komponen berikutnya yang akan diterjemahkan. Jika kita dapat memprediksi apa yang akan dihasilkan oleh fungsi kreeelement, kita dapat menyambung panggilan dengan hasil yang diharapkan pada waktu pembangunan daripada saat runtime.
// jsx
render () kembali;
>// ditranspilasi
render () kembali bereaksi.createelement (myComponent, < key: 'mykey', prop1: 'foo', prop2: 'bar' >);
>// dengan inlining
render () Tipe pengembalian: myComponent,
Props: Prop1: 'Foo',
Prop2: 'Bar'
>,
Kunci: 'mykey'
>;
>
Seperti yang Anda lihat, kami telah menghapus biaya panggilan createelement sepenuhnya, kemenangan untuk “Bisakah kita tidak?” Sekolah Optimalisasi Perangkat Lunak.
Kami bertanya -tanya apakah mungkin untuk menerapkan teknik ini di seluruh aplikasi kami dan menghindari panggilan createelement sepenuhnya. Apa yang kami temukan adalah bahwa jika kami menggunakan wasit pada elemen kami, createelement perlu dipanggil untuk menghubungkan pemilik saat runtime. Ini juga berlaku jika Anda’menggunakan operator spread yang mungkin berisi nilai ref (kami’akan kembali ke sini nanti).
Kami menggunakan plugin Babel khusus untuk elemen inlining, tetapi ada plugin resmi yang dapat Anda gunakan sekarang. Alih -alih objek literal, plugin resmi akan memancarkan panggilan ke fungsi pembantu yang kemungkinan akan hilang berkat keajaiban fungsi V8 inlining. Setelah menerapkan plugin kami, masih ada beberapa komponen yang tidak’T sedang dilapisi, khususnya komponen tingkat tinggi yang merupakan bagian yang layak dari total komponen yang diterjemahkan dalam aplikasi kami.
Masalah: Komponen tingkat tinggi bisa’T gunakan inlining
Kami menyukai komponen tingkat tinggi (HOC) sebagai alternatif untuk mixins. HOC memudahkan untuk dilapisi perilaku sambil mempertahankan pemisahan kekhawatiran. Kami ingin memanfaatkan inlining di HOC kami, tetapi kami mengalami masalah: HOC biasanya bertindak sebagai pass-through untuk alat peraga mereka. Ini secara alami mengarah pada penggunaan operator penyebaran, yang mencegah plug-in Babel dari mampu menyatu.
Ketika kami memulai proses menulis ulang aplikasi kami, kami memutuskan bahwa semua interaksi dengan lapisan rendering akan melalui API deklaratif. Misalnya, alih -alih melakukan:
componentdidmount () ini.referensi.SOULDGET.fokus()
> Untuk memindahkan fokus aplikasi ke widget tertentu, kami malah menerapkan API fokus deklaratif yang memungkinkan kami untuk menggambarkan apa yang harus difokuskan selama render seperti itu:
render () return />;
> Ini memiliki efek samping yang beruntung memungkinkan kami untuk menghindari penggunaan referensi di seluruh aplikasi. Akibatnya kami dapat menerapkan inline terlepas dari apakah kode tersebut menggunakan spread atau tidak.
// sebelum inlining
render () return />;
>// setelah inlining
render () Tipe pengembalian: myComponent,
Alat peraga: Ini.Atribut
>;
>
Ini sangat mengurangi jumlah panggilan fungsi dan penggabungan properti yang sebelumnya harus kami lakukan tetapi tidak menghilangkannya sepenuhnya.
Masalah: Intersepsi properti masih membutuhkan penggabungan
Setelah kami berhasil menyambungkan komponen kami, aplikasi kami masih menghabiskan banyak waktu menggabungkan properti di dalam hocs kami. Ini tidak mengherankan, karena HOC sering mencegat alat peraga yang masuk untuk menambahkan sendiri atau mengubah nilai prop tertentu sebelum meneruskan ke komponen yang dibungkus.
Kami melakukan analisis tentang bagaimana tumpukan HOC diskalakan dengan jumlah prop dan kedalaman komponen pada salah satu perangkat kami dan hasilnya informatif.
Mereka menunjukkan bahwa ada hubungan yang kira -kira linier antara jumlah alat peraga yang bergerak melalui tumpukan dan waktu render untuk kedalaman komponen yang diberikan.
Kematian oleh seribu alat peraga
Berdasarkan temuan kami, kami menyadari bahwa kami dapat meningkatkan kinerja aplikasi kami secara substansial dengan membatasi jumlah alat peraga yang melewati tumpukan. Kami menemukan bahwa kelompok alat peraga sering terkait dan selalu berubah pada saat yang sama. Dalam kasus ini, masuk akal untuk mengelompokkan alat peraga terkait di bawah satu “namespace” menopang. Jika prop namespace dapat dimodelkan sebagai nilai yang tidak dapat diubah, panggilan selanjutnya untuk harus componentupdate panggilan dapat dioptimalkan lebih lanjut dengan memeriksa kesetaraan referensi daripada melakukan perbandingan yang mendalam. Ini memberi kami beberapa kemenangan bagus tetapi akhirnya kami menemukan bahwa kami telah mengurangi jumlah prop sebanyak mungkin. Sekarang saatnya untuk menggunakan langkah -langkah yang lebih ekstrem.
Menggabungkan alat peraga tanpa iterasi kunci
Peringatan, ini naga! Ini tidak dianjurkan dan kemungkinan besar akan merusak banyak hal dengan cara yang aneh dan tidak terduga.
Setelah mengurangi alat peraga yang bergerak melalui aplikasi kami, kami bereksperimen dengan cara lain untuk mengurangi waktu yang dihabiskan untuk menggabungkan alat peraga antara HOC. Kami menyadari bahwa kami dapat menggunakan rantai prototipe untuk mencapai tujuan yang sama sambil menghindari iterasi utama.
// sebelum proto gabungan
render () const newprops = objek.tetapkan (<>, ini.Atribut, < prop1: ‘foo’ >)
kembali />;
>// Setelah proto gabungan
render () const newprops = < prop1: ‘foo’ >;
NewProps.__proto__ = ini.Atribut;
Jenis pengembalian: myComponent,
Alat peraga: NewProps
>;
>
Dalam contoh di atas kami mengurangi 100 kedalaman 100 prop case dari waktu render ~ 500ms menjadi ~ 60ms. Disarankan agar menggunakan pendekatan ini memperkenalkan beberapa bug menarik, yaitu jika ini.Alat peraga adalah objek beku . Ketika ini terjadi, pendekatan rantai prototipe hanya berfungsi jika __proto__ ditetapkan setelah objek newprops dibuat. Tak perlu dikatakan, jika Anda bukan pemilik NewProps, tidak bijaksana untuk menetapkan prototipe sama sekali.
Masalah: “Berbeda” Gaya lambat
Setelah bereaksi tahu elemen yang perlu diterjemahkannya harus membedakannya dengan nilai -nilai sebelumnya untuk menentukan perubahan minimal yang harus diterapkan pada elemen DOM yang sebenarnya. Melalui profil kami menemukan bahwa proses ini mahal, terutama selama mount – sebagian karena kebutuhan untuk mengulangi sejumlah besar sifat gaya.
Pisahkan alat peraga gaya out berdasarkan apa’S kemungkinan akan berubah
Kami menemukan bahwa seringkali banyak nilai gaya yang kami atur tidak pernah benar -benar berubah. Misalnya, katakanlah kami memiliki widget yang digunakan untuk menampilkan beberapa nilai teks dinamis. Ini memiliki teks properti, ukuran teks, kelas teks dan warna teks. Properti teks akan berubah selama masa pakai widget ini tetapi kami ingin properti yang tersisa tetap sama. Biaya membedakan 4 alat peraga gaya widget dihabiskan untuk setiap dan setiap render. Kita dapat mengurangi ini dengan memisahkan hal -hal yang bisa berubah dari hal -hal yang don’T.
const MemoizedstylesObject = < textSize: 20, textWeight: ‘bold’, textColor: ‘blue’ >; style => />
Jika kita berhati-hati untuk memoize objek yang dimoizedstylesObject, React-Gibbon kemudian dapat memeriksa kesetaraan referensial dan hanya membedakan nilainya jika pemeriksaan itu terbukti salah. Ini tidak berpengaruh pada waktu yang diperlukan untuk memasang widget tetapi membuahkan hasil pada setiap render berikutnya.
Mengapa tidak menghindari iterasi bersama -sama?
Mengambil ide ini lebih lanjut, jika kita tahu alat peraga gaya apa yang ditetapkan pada widget tertentu, kita dapat menulis fungsi yang melakukan pekerjaan yang sama tanpa harus mengulangi kunci apa pun. Kami menulis plugin Babel khusus yang melakukan analisis statis pada metode render komponen. Ini menentukan gaya mana yang akan diterapkan dan membangun fungsi diff-and-apply khusus yang kemudian dilampirkan pada props widget.
// Fungsi ini ditulis oleh plugin analisis statis
fungsi __update __ (widget, nextprops, prevprops) var style = nextprops.gaya,
prev_style = prevprops & segera prevprops.gaya; if (prev_style) var text = style.teks;
if (teks !== prev_style.teks) widget.teks = teks;
>
> widget lain.Teks = Gaya.teks;
>
>Reaksi.createClass (render () return (
style => />
);
>
>);
React-gibbon internal mencari keberadaan “spesial” __update__ prop dan akan melewatkan iterasi biasa dari alat peraga gaya sebelumnya dan berikutnya, alih -alih menerapkan properti langsung ke widget jika mereka telah berubah. Ini berdampak besar pada waktu render kami dengan biaya meningkatkan ukuran yang dapat didistribusikan.
Kinerja adalah fitur
Lingkungan kami unik, tetapi teknik yang kami gunakan untuk mengidentifikasi peluang untuk peningkatan kinerja tidak. Kami mengukur, menguji dan memverifikasi semua perubahan kami pada perangkat nyata. Investigasi itu membuat kami menemukan tema umum: iterasi utama mahal. Akibatnya kami berangkat untuk mengidentifikasi penggabungan dalam aplikasi kami, dan menentukan apakah mereka dapat dioptimalkan. Di Sini’S daftar beberapa hal lain’telah dilakukan dalam pencarian kami untuk meningkatkan kinerja:
- Komponen Komposit Kustom – Hyper Dioptimalkan untuk Platform kami
- Layar pra-pemasangan untuk meningkatkan waktu transisi yang dirasakan
- Pooling komponen dalam daftar
- Memoisasi perhitungan mahal
Membangun pengalaman UI TV Netflix yang dapat berjalan di berbagai perangkat yang kami dukung adalah tantangan yang menyenangkan. Kami memelihara budaya yang berorientasi pada kinerja di tim dan terus-menerus berusaha meningkatkan pengalaman untuk semua orang, apakah mereka menggunakan Xbox One S, TV pintar atau tongkat streaming. Bergabunglah dengan kami jika itu terdengar seperti kemacetan Anda!
10 Aplikasi React Terkenal: Contoh (2023)
Anda kemungkinan besar menggunakan aplikasi React setiap hari, sambil menonton acara TV favorit Anda, menelusuri melalui media sosial dan memeriksa email Anda. Cari tahu perusahaan terkenal mana yang membangun aplikasi mereka dengan reactj dan mengapa.
16 Januari 2023
Tl; dr
Daftar isi
Contoh H2
Contoh H3
Contoh H4
Contoh H5
Contoh H6
Perkenalan
Membiarkan’S hadapi itu – dunia digital berubah saat kita berbicara. Dalam kenyataan seperti itu, pasti sulit untuk beradaptasi dengan tren. Namun, itulah yang dilakukan oleh nama -nama besar dalam industri ini.
Aplikasi utama seperti Facebook, Instagram, Netflix dan lainnya terus -menerus meningkatkan pengalaman mereka dan beradaptasi dengan kerangka kerja dan tren baru.
Sampai baru -baru ini, ada kata -kata besar dari mulut ke mulut Reaksi dan fitur -fiturnya yang mengesankan.
Jika Anda masih Haven’T mendengar tentang potensi reactjs, mereka banyak. Pada dasarnya, React telah menjadi sangat populer di kalangan pengembang dan ada banyak sumber daya yang membuat sebagian besar manfaat teknisnya – seperti halnya nodeJ dan banyak kerangka/alat JavaScript terkait lainnya.
Bukti untuk popularitasnya paling baik dijelaskan oleh aplikasi yang menggunakan reactjs – dan hari ini, kami menunjukkan kepada Anda daftar aplikasi yang paling mengesankan berdasarkan reactjs.
Apa itu bereaksi?
Singkat cerita, bereaksi adalah a Perpustakaan JavaScript untuk Membangun Antarmuka Pengguna. Sangat sering’S disalahtafsirkan sebagai alat, kerangka kerja, bahasa. Vendor yang bekerja dengan React dapat membuat aplikasi web besar yang menggunakan data yang dapat berubah dari waktu ke waktu, tanpa memuat ulang halaman. Tujuan utamanya adalah menjadi cepat, sederhana dan dapat diskalakan. Reaksi hanya memproses antarmuka pengguna dalam aplikasi.
Ini hanyalah runtime JavaScript. Ringan, cepat dan modern cara untuk menjalankan kode di komputer Anda.
Mengapa raksasa internet memilih aplikasi bereaksi?
#1 Facebook
Meskipun sebagian, Facebook memanfaatkan reactjs. Halaman web mereka dibangun dengan bereaksi, karena skrip yang dicampur dalam kode aplikasi. Aplikasi seluler juga dibangun dengan versi React yang disebut React Native yang serupa, meskipun bertanggung jawab untuk menampilkan komponen asli iOS dan Android alih -alih elemen DOM.
Menariknya, Facebook adalah tempat di mana Perpustakaan Reactjs awalnya dibuat, itulah sebabnya aplikasi jelas menggunakannya. Facebook saat ini membuka beta reactjs yang sepenuhnya ditulis ulang, yang disebut React Fiber.
#2 Instagram
Penggunaan reactj dalam Instagram sangat besar. Bukti untuk itu adalah banyak fitur termasuk geolokasi, Google Maps API, akurasi mesin pencari serta tag yang muncul tanpa tagar. Semuanya ada di API aplikasi – dan sangat mengesankan.
Instagram sepenuhnya didasarkan pada reactjs perpustakaan dan telah membiarkan penggemar beradaptasi sepenuhnya dengan fitur -fiturnya yang luar biasa.

#3 Netflix
Versi React juga berfungsi dengan Netflix-khususnya pada platform mereka yang disebut Gibbon yang digunakan untuk perangkat TV berkinerja rendah alih-alih DOM yang digunakan di browser web. Netflix bahkan telah menerbitkan posting blog resmi yang menjelaskan bagaimana perpustakaan ReactJS membantu kecepatan startup, kinerja runtime, modularitas, dan berbagai keuntungan lainnya.
Sebagai insinyur UI di Netflix State di posting blog:
Keputusan kami untuk mengadopsi React dipengaruhi oleh sejumlah faktor, terutama: 1) kecepatan startup, 2) kinerja runtime, dan 3) modularitas.
#4 New York Times
Beberapa bulan yang lalu, The New York Times telah merancang proyek baru yang hebat yang mensimulasikan tampilan bintang yang berbeda di karpet merah Oscar. Jelas, proyek ini’antarmuka S dibangun di React dan memungkinkan pengguna memfilter galeri foto yang berbeda dari 19 tahun dengan cara yang bagus. Render ulang pada proyek ini hanyalah salah satu fitur mengesankan yang dapat kami terima kasih untuk ReactJs.
Justin Heideman mendukung alasan ini dalam posting blognya di NYTimes Open, menyatakan itu:
Di dalam aplikasi kami, kami membuat toko tanggung jawab tunggal yang ringan dan ringan. Toko bertanggung jawab untuk mengelola permintaan data tertentu.

#5 Yahoo! Surat
Mengejutkan (atau tidak), Yahoo!’S klien Surat juga menggunakan React. Sejak Facebook memiliki Yahoo! Saat ini, gagasan arsitektur yang solid dan terpadu ada di sana, dan itulah sebabnya React dimasukkan dalam sebanyak mungkin potongan dan potongan. Arsitektur yang secara khusus dibangun dengan bereaksi sebagai bagian dari itu dapat dilihat di sini – dan Yahoo! Pengembang menjumlahkannya lebih mudah untuk bekerja dengan kode dan jauh lebih baik.
Para insinyur yang bekerja di platform Yahoo Mail membutuhkan banyak peningkatan. Seperti yang mereka katakan di posting blog di Tumblr:
- Aliran yang dapat diprediksi ~ debugging mudah
- Komponen yang dapat digunakan secara independen
- Kurva belajar yang lebih pendek
- Tidak ada ketergantungan pada perpustakaan platform besar
- Bereaksi mengimplementasikan aliran data reaktif satu arah
- DOM virtual memungkinkan rendering sisi klien dan server
- Kode dalam JavaScript
- Komunitas Tumbuh dan Aktif
#6 Khan Academy
Banyak bagian Khan Academy didasarkan pada React saat ini. Salah satu pengembang javascript mereka, Joel Burget, berbagi pengalaman pribadinya Perpustakaan ReactJS dan bagaimana ia membedakan dari tulang punggung tradisional skrip yang sebelumnya mereka gunakan.
Dia jelas mendefinisikannya sebagai peningkatan yang layak dan dengan hati-hati melewati sebagian besar fitur penting-termasuk elemen yang berubah dengan cara yang efisien dan penghapusan re-render yang tidak perlu.
#7 whatsapp
Meskipun ada beberapa beta sebelum diluncurkan secara resmi, WhatsApp menggunakan reactjs Untuk membangun antarmuka pengguna dari Facebook, sama seperti menggunakan garis bawah.JS dan kecepatan.JS sebagai beberapa mesinnya yang paling efisien.
Sampai baru-baru ini, aplikasi web WhatsApp yang semuanya baru juga telah menggunakan React, seperti pengalaman web Facebook yang disebutkan di atas
Browser Vivaldi #8
Salah satu teknologi di balik browser Vivaldi yang populer adalah Perpustakaan Reactjs. Mesin yang digunakan browser ini dinamai ‘Berkedip’ dan hampir sama dengan Google’s chrome, dibangun di atas html5, reactjs, js, css3 dan banyak mesin lainnya.
#9 Codecademy
Pada Agustus 2014, Codecademy telah memutuskan untuk sepenuhnya menggabungkan Facebook’Perpustakaan S. Reactjs jelas merupakan bagian darinya – dan masih merupakan salah satu skrip utama yang didasarkan pada aplikasi.
Dari header ke menu dan bahkan navigasi, penggunaan ReactJs ada di sana di Codeacademy, dibuat sebagai solusi logis yang mengemas semua komponen untuk berbagai bagian.
Menurut semua orang di Codeacademy, beberapa aspek reaksi yang mereka hargai termasuk fakta bahwa Script teruji pertempuran, mudah dipikirkan, membuat SEO mudah dan kompatibel dengan kode warisan dan cukup fleksibel untuk masa depan.
Juga, itu memprovokasi membangun komunitas dan memungkinkan Anda berhenti mengkhawatirkan boilerplate.
Seperti yang mereka katakan di posting blog mereka di InfoQ:
React adalah perpustakaan yang ringan, kuat, yang telah diuji pertempuran untuk membangun antarmuka pengguna dengan JavaScript. Dia’S bukan kerangka kerja penuh, melainkan alat yang kuat yang mungkin mengubah cara Anda mendekati pengembangan front-end. Kami’Ve menemukan itu menjadi alat yang sangat berguna untuk pengembangan frontend kami, dan kami’sangat senang dengan pilihan kami.
#10 Dropbox
Dropbox telah beralih ke reaksi lebih dari setahun yang lalu. Tepat pada saat React menjadi sangat populer di kalangan pengembang aplikasi.
Sumber daya yang sangat luas yang merupakan bagian dari kerangka kerja ini secara efisien juga digunakan oleh Dropbox-berkontribusi luas pada keberhasilan layanan penyimpanan berbasis cloud yang luar biasa ini dan solusi cadangan online ini.
Reaksi aplikasi = pengalaman pengguna yang sempurna
Pada akhirnya, pengurangan risiko, peningkatan efisiensi dan efektivitas yang ditingkatkan oleh pengembang reactjs, dan banyak manfaat organisasi semuanya menjadi alasan bagi nama -nama besar dalam aplikasi untuk ditingkatkan untuk bereaksi dan mengeksploitasi manfaat luar biasa yang ditawarkan oleh skrip ini.
Dan meskipun setiap peningkatan kerangka kerja mengambil korban mengenai waktu dan biaya, itu benar -benar layak ketika datang untuk menciptakan pengalaman pengguna yang sempurna – baik itu di web atau aplikasi seluler.
Sumber daya:
- https: // yahooeng.Tumblr.com/post/101682875656/evolving-yahoo-mail (gambar)
- https: // twitter.com/reacteurope/status/55809782330492416 (gambar)
