Perbandingan Kerangka Kerja JavaScript Utama: Sudut vs Bereaksi
Diterbitkan: 2018-07-07Sebuah pertanyaan yang saya tanyakan hampir setiap hari adalah apakah saya harus memulai dengan ReactJS atau Angular? Namun, sebelum saya melanjutkan lebih jauh, izinkan saya memberi Anda disclaimer.
Ini bukan blog di mana saya akan memukul satu atau yang lain atau mengatakan bahwa Anda harus selalu menggunakan satu di atas yang lain. Setiap pengembang dan setiap proyek benar-benar berbeda dan mereka memiliki serangkaian persyaratan yang berbeda sehingga mengatakan bahwa Anda harus selalu menggunakan ReactJS atau selalu menggunakan Angular sangatlah bodoh.
Argumen Logis
Anda mungkin berpendapat bahwa Angular adalah kerangka kerja dan React secara teknis adalah perpustakaan dengan sendirinya. Saya tidak menyangkal fakta ini, tetapi ini adalah argumen yang tidak ingin saya bahas sekarang. Ada paket yang dapat Anda tambahkan ke React yang akan mengubahnya menjadi kerangka kerja yang bersaing langsung dengan Angular. Kami membandingkan dua ekosistem, bukan kerangka kerja yang tepat versus perpustakaan yang tepat.
Kurva Pembelajaran
Mari kita mulai dengan Angular. Penafian lain: ketika saya mengatakan Angular, saya berbicara tentang Angular 4 bukan AngularJS.
Angular adalah kerangka kerja besar yang berarti kuat dan mencakup banyak hal. Ada banyak yang harus dipelajari. Anda akan mendengar banyak kosakata baru yang mengintimidasi seperti injeksi ketergantungan, dekorator arahan, pipa, dll. Kemudian Anda harus berurusan dengan TypeScript, yang merupakan JavaScript ditambah banyak fitur lain termasuk pengetikan statis.
Angular lebih berpendirian daripada React, yang merupakan salah satu keuntungan menurut saya karena dengan React Anda dapat melakukan hal yang sama dengan jutaan cara yang berbeda. Dengan Angular, umumnya ada satu atau dua cara untuk melakukan hal-hal tertentu, yang membuatnya lebih mudah untuk diikuti, memberi Anda instruksi yang jauh lebih jelas tentang apa yang seharusnya Anda lakukan.
Tapi sekali lagi, itu tergantung pada preferensi. Anda mungkin menyukai fleksibilitas untuk melakukan sesuatu dengan cara yang berbeda. Seperti yang saya sebutkan, ReactJS adalah perpustakaan jika kita berbicara tentang hanya perpustakaan inti, itu jauh lebih kecil dan lebih mudah dipelajari daripada kerangka kerja Angular. Anda dapat mengatakan bahwa Anda akan belajar React dalam waktu yang lebih singkat. React adalah pustaka tampilan yang bagus itu sendiri tetapi bahkan tidak sekuat untuk aplikasi besar. Jika Anda ingin perutean, validasi, permintaan HTTP di React, Anda harus menginstal paket lain dan itu menambah kurva pembelajaran.
Jika Anda melihat kode Bereaksi dari dua pengembang yang berbeda, mereka mungkin akan terlihat sangat berbeda apakah mereka membuat Permintaan HTTP atau menangani Status dan Properti. Semua hal itu dapat ditangani dengan sangat berbeda dan seringkali dengan cara yang salah.
Anda menemukan praktik terbaik dan semua masalah hilang tetapi itu menambah kurva belajar.
Tidak seperti Angular React tidak menggunakan template. Ini menggunakan sesuatu yang disebut ekstensi JSX atau JavaScript atau ekstensi sintaks JavaScript, yang memungkinkan kita untuk menyematkan HTML dalam JavaScript. Pada awalnya ini bisa tampak sedikit aneh. Terutama, ketika Anda mungkin diajarkan untuk memisahkan markup dan JavaScript Anda.
Anggap saja seperti meletakkan HTML di dalam JavaScript dengan beberapa perubahan berbeda: Anda tidak dapat menggunakan atribut kelas dan Anda harus menggunakan nama kelas.
Terakhir, kami memiliki Redux. React sering digunakan dengan Redux atau Flux yang merupakan manajer negara tingkat aplikasi. Menurut pendapat saya, Redux sangat sulit hanya mengaturnya dan mempelajari konsepnya saja sulit.
Saya pikir itu digunakan secara berlebihan. Saya pikir banyak pengembang menggunakan redux di tempat yang tidak diperlukan. Anda tidak memerlukannya untuk aplikasi yang lebih kecil tetapi banyak pengembang bersikeras untuk menggunakannya. Itu kembali lagi ke preferensi. Redux sangat kuat, saya tidak ingin mengambilnya. Ketika berbicara tentang kurva belajar, sangat sulit untuk dipahami.
Fitur | Reaksi | sudut |
Bahasa pemrograman | JavaScript | TypeScript |
Struktur Kode | Dogmatis | Fleksibel |
Perpustakaan Inti | Kecil | Sangat besar |
Pembuatan template | BEJ | HTML |
Kompetensi | Aplikasi Kecil | Aplikasi Skala Besar |
Pemenang: Ini seri
Pertunjukan
Tidak adil membandingkan langsung kinerja Angular dengan React. Angular adalah kerangka kerja depan-ke-belakang yang lengkap yang mencakup perutean, alat formulir, pustaka HTTP, ekstensi Reaktif, dll. Semua fitur ini mengasapi kerangka kerja dan membuatnya lebih lambat. Namun React dengan sendirinya hanyalah pustaka tampilan, yang jauh lebih kecil dan lebih cepat.
Setelah Anda mulai menambahkan paket seperti router, klien HTTP, atau apa pun yang akan Anda tambahkan ke aplikasi React Anda, maka itu mulai muncul sedikit lebih ke tempat Angular berada dan kemudian Anda dapat mulai membandingkannya secara adil tetapi bahkan setelah itu Bereaksi masih memenangkan departemen kinerja. Ini adalah teknologi yang sangat cepat pada umumnya.
Perubahan dari Angular 2 ke Angular 4 di bawah tenda mereka lakukan sedikit untuk meningkatkan kinerja. Angular 4 berkinerja lebih baik daripada Angular 2. Meskipun demikian, React masih menang di Departemen kinerja.
Sudut vs Bereaksi. Sumber: Academind.com
Pemenang: Bereaksi
Fitur
Kedua kerangka kerja tersebut memiliki banyak fitur dan keunggulan umum yang sama: mereka mengatur kode Anda, berbasis komponen, menawarkan markup dinamis, dll. Mereka terbiasa melakukan banyak hal yang sama, dan berbagi banyak fitur yang sama.
Fitur | AngularJS | Reaksi |
Tanggal peluncuran | 2009 | 2013 |
Bahasa | TypeScript, JavaScript | JavaScript |
Saham | 0,3% | <0,1% |
Model | Ya | Tidak |
Melihat | Ya | Ya |
Pengontrol | Ya | Tidak |
Kurva Pembelajaran | Kompleks | Mudah |
Pembuatan template | Ya | Tidak |
Kegagalan | Waktu tayang | Waktu kompilasi |
Penyajian sisi-rendering | Tidak | Ya |
DOM | Ya | Maya |
Dukungan Seluler | Ya | Ya |
Penyajian sisi-rendering | Tidak | Ya |
Kami akan melihat beberapa fitur individu. Angular jelas memiliki lebih banyak fitur daripada React pada intinya. Biarkan saya mengingatkan Anda, kita sedang berbicara tentang dua ekosistem dan paket umum yang digunakan dengan React.
Angular adalah kerangka kerja yang mencakup semua. Muncul dengan router komponen, ekstensi Reaktif untuk yang dapat diamati, klien HTTP, modul formulir untuk validasi dan daftarnya terus berlanjut. Selain itu, ia menawarkan pengikatan data dua arah dengan cara yang tidak dilakukan oleh kerangka kerja lain. Mengikat data dari tampilan ke model sangat mudah menggunakan direktif model ng.
Angular juga mendukung MVC (Model View controller) atau setidaknya aspek yang berbeda dari pola desain itu. itu juga dilengkapi dengan fitur yang memungkinkan Anda untuk dengan mudah menerapkan pengujian: baik pengujian unit dan pengujian ujung ke ujung. Angular dikemas dengan fitur untuk membangun aplikasi front-end tingkat perusahaan. React di sisi lain tidak mencakup banyak hal pada intinya. Namun, hal-hal dapat ditambahkan untuk memberikan fitur yang Angular sertakan out-of-the-box ditambah beberapa yang tambahan.
Bereaksi menggunakan DOM virtual yang sangat kuat. Itu menciptakan versi ringannya sendiri dari Dom yang sebenarnya dan hanya menyertakan dan memperbarui apa yang dibutuhkan daripada menyegarkan semuanya. Virtual DOM adalah alasan utama mengapa React sangat cepat.
React menggunakan JSX yang lebih kuat daripada template standar karena Anda dapat memasukkan semua jenis JavaScript yang Anda inginkan ke dalamnya. JSX tidak diperlukan untuk menggunakan React tetapi itu membuat segalanya jauh lebih mudah. Saya tidak dapat memikirkan alasan mengapa Anda tidak menggunakan JSX dengan Angular juga. Bereaksi juga melakukan pekerjaan yang sangat baik dalam mengelola status dan properti komponen. Itu membuat data sangat mudah untuk digunakan dan disebarkan di antara komponen. Melewati data antar komponen, Angular jauh lebih sulit daripada melakukannya di Bereaksi.
Core React sulit untuk mempertahankan status level aplikasi. Status Komponen mudah tetapi jika Anda menginginkan manajemen status tingkat aplikasi yang sebenarnya maka Anda memerlukan Redux atau Flux, yang saya katakan sebelumnya cukup membingungkan untuk dipelajari. Paket eksternal yang sering digunakan seperti router React versi 4 yang baru agak sulit untuk dipahami tetapi juga sangat kuat setelah belajar menjalankan dan mengaturnya. Ada banyak cara berbeda untuk menggunakannya juga. React tidak memiliki komponen inti HTTP seperti Angular, tetapi Anda dapat menggunakan Fetch atau Axios, yang merupakan klien HTTP eksternal dan kemudian Enzyme populer untuk membuktikan React. Ada beberapa paket berbeda yang biasa digunakan dengan React meskipun mereka bukan bagian dari library yang sebenarnya.
Sementara kedua teknologi berbagi sejumlah fitur yang baik, jika Anda hanya membandingkan teknologi inti, maka Angular adalah pemenangnya.
Pemenang: Sudut
Perkakas
Angular dan React memiliki beberapa antarmuka baris perintah yang cukup bagus. Angular CLI dan Create React App keduanya cukup hebat dan mereka benar-benar memungkinkan kami untuk merampingkan pengembangan. CLI Angular sedikit lebih kuat karena kita dapat dengan cepat menghasilkan hal-hal seperti komponen dan layanan. Buat Bereaksi tidak bisa melakukan itu. Anda harus membuat semuanya sendiri sejauh file dan struktur dasar. Kedua sistem menggunakan paket web, memiliki server pengembang pemuatan otomatis sendiri dan memiliki alat kompilasi dan pembuatan. Jelas, Angular memiliki tugas tambahan untuk menerjemahkan TypeScript. CLI memiliki skrip untuk itu ketika kami menjalankan ng serve. Semua itu terjadi di balik layar. Ia menggunakan sesuatu yang disebut TSC atau TypeScript Compiler untuk itu dan keduanya memiliki alat pengujian juga. Create React App menggunakan Jest untuk pengujian dan kemudian salah satu bagian dari alat ini adalah kemampuan untuk membangun aplikasi Anda ke dalam produksi menjadi aset statis yang dapat Anda unggah ke server atau Anda dapat menempatkannya ke folder klien back-end Anda.
Fitur | sudut | Reaksi |
Antarmuka baris perintah | CLI sudut | Buat Reaksi |
Tugas Tambahan | Transpiling TypeScript | Tidak ada |
Pengujian | Jasmine & Karma | Bersenda gurau |
Jika ini adalah aplikasi tumpukan penuh maka ini sangat penting. Anda tidak perlu menggunakannya. Anda dapat membangun aplikasi React dari awal dengan paket web. Ini membuatnya jauh lebih mudah untuk tidak hanya membangun aplikasi tetapi juga mengkompilasi dan membangunnya untuk produksi.
Mereka berdua cantik bahkan di departemen itu.
Pemenang: Sudut
Ekosistem
Seperti yang saya katakan, kedua teknologi ini memiliki ekosistemnya sendiri yang sekarang menyebar jauh melampaui browser web.
Ionic adalah kerangka kerja hybrid populer yang merupakan aplikasi Angular yang berjalan di dalam pembungkus asli untuk aplikasi seluler. Anda dapat membuat aplikasi seluler menggunakan Angular. Aplikasi hybrid bisa sedikit kikuk dibandingkan dengan aplikasi asli. Pengalaman pengguna terkadang tidak begitu bagus–tidak secepat dan responsif. Di antara berbagai kerangka kerja hybrid, Ionic 3 adalah yang terbaik. Ada juga NativeScript, yang memungkinkan kita untuk membangun aplikasi asli aplikasi iOS dan Android dengan Angular serta JavaScript.
Fitur | sudut | Reaksi |
Pengembangan Aplikasi Hibrida | ionik | *Tidak dibutuhkan |
Pengembangan Aplikasi Asli | Naskah Asli | Bereaksi Asli |
Rendering Sisi Server | Sudut Universal | tidak |
Perpustakaan Manajemen Negara | Toko NgRx | Reax Redux, MobX |
Pustaka UI Materi | Bahan Sudut | Bahan-UI |
Realitas maya | VR reaktif | tidak |
Meskipun demikian, NativeScript tampaknya tidak sebagus React Native Facebook setidaknya pada saat ini. Angular juga memiliki pustaka komponen desain material jika Anda adalah penggemar desain material. Angular Universal adalah proyek benih yang dapat digunakan untuk merender Angular di sisi server. Ada juga toko NgRx yang merupakan perpustakaan manajemen negara yang terinspirasi oleh Reax redux. Ini didasarkan pada status yang dimutasi oleh reduksi rekan. Ini juga memiliki integrasi dengan ekstensi Reaktif.
Anda akan menyadarinya. Suatu kali, salah satu dari mereka melakukan sesuatu yang lain menyalin dengan cara yang berbeda. React dan Angular telah menjadi kerangka kerja JavaScript Microsoft dan Apple.
React memiliki ekosistem yang cukup. Ini memiliki React native yang populer. Ini adalah cara terbaik untuk membangun aplikasi seluler dengan teknologi web. React Native cepat dan banyak aplikasi jika dibangun dengan benar, mereka ada di sana dengan aplikasi asli yang dibangun di Swift atau Java. React memiliki pustaka desain material yang disebut Material-UI yang sangat mirip dengan komponen desain material Angular tetapi lebih matang. JS adalah kerangka kerja untuk merender aplikasi React sisi server. Ini bertujuan untuk melakukan ini dengan cara sesederhana mungkin sehingga ini dapat dibandingkan dengan Angular Universal. MobX adalah cara lain untuk mengelola status. Ini bekerja sedikit berbeda dari redux. Ini menyediakan satu set dekorator untuk mendefinisikan yang dapat diamati dan pengamat dan memperkenalkan logika Reaktif ke Negara Anda.
Storybook adalah lingkungan pengembangan untuk React. Ini memungkinkan Anda untuk menelusuri pustaka komponen, melihat status yang berbeda dari setiap komponen dan secara interaktif mengembangkan dan menguji komponen. Reactive VR membuat React menjadi virtual reality. React desktop adalah library JavaScript yang dibangun di atas library Reacts yang seharusnya membawa pengalaman desktop asli ke web, menampilkan banyak komponen macOS dan Windows 10. Ekosistem React sangat besar dan kuat. React membuat jalannya ke setiap aspek teknologi dan itu adalah pemenang yang jelas.
Pemenang: Bereaksi
Orang-orang berjas dan berdasi menggunakan Angular dan para hipster dengan janggut lusuh menggunakan React.
AngularJS | Reaksi | |
Pengembang utama | Facebook+Instagram | |
Usia | 6 tahun | 2 tahun |
Kemungkinan diperpanjang | Ya | Ya |
Kecepatan* | 1,35 Detik | 310 milidetik |
DOM | Peramban | Maya; hanya merender data yang diubah dengan mekanisme tambalan |
Arsitektur | Kerangka kerja MVC penuh | Hanya komponen tampilan |
Kurva Pembelajaran | Sulit pada awalnya; membutuhkan pengetahuan tentang konsep tertentu seperti arahan DOM, filter & pabrik. | Lebih mudah untuk memulai; berisi API dan sintaks yang disederhanakan |
Struktur dan Komponen | HTML, JS dan CSS | Sama; tetapi dapat mengintegrasikan HTML dengan JS, menggunakan JSX |
Intinya: Ini dasi
Jika Anda memutuskan antara kerangka kerja ini, lihat kategori yang berbeda dan lihat apa yang menarik minat Anda. Cobalah keduanya dan lihat mana yang Anda ambil lebih cepat. Lakukan lebih banyak penelitian daripada blog ini. Anda tidak akan pernah mendapatkan semua info yang Anda butuhkan dari satu blog, jadi bacalah lagi.
Jika Anda melihat ekosistem yang lebih besar yang mencakup pengembangan aplikasi seluler asli, pilih Bereaksi tanpa berpikir dua kali. Jika Anda mencari fitur, Angular sangat besar. Ada lebih banyak fitur daripada yang Anda butuhkan.