Apa perbedaan utama antara ReactNative dan NativeScript?


Jawaban 1:
Penafian: Jawaban ini tidak bertujuan untuk membuktikan bahwa yang satu lebih baik daripada yang lain, saya tidak ingin mengkritik karya-karya luar biasa dari kedua tim, tetapi untuk membuat daftar perbedaan antara NativeScript dan React Native.

Kedua kerangka kerja ini merupakan bagian dari kerangka kerja lintas platform generasi baru yang TIDAK menggunakan browser untuk mengemasnya ke dalam aplikasi asli. Mereka _actualy_ menggunakan komponen UI asli dari OS asli. Ini memiliki efek yang sangat positif pada UX aplikasi. Ini juga memungkinkan untuk penerapan aplikasi yang lebih cepat karena pemolesan akhir yang diperlukan untuk aplikasi ini lebih kecil daripada pekerjaan yang diperlukan untuk hal yang sama dengan aplikasi PhoneGap, berbasis browser apa pun.

Sekarang untuk pertanyaan Anda. Ada banyak perbedaan - teknis dan non-teknis.

Di sisi non-teknis

NativeScript disampaikan oleh Telerik (perusahaan Kemajuan) - perusahaan pengembang yang sangat terkenal dan kerangka kerja NativeScript adalah bagian dari bisnis inti mereka. ReactNative dibangun dari Facebook, yang seperti kita ketahui bukanlah perusahaan alat pengembang. Kenapa ini penting? Ketika Anda mengandalkan Telerik, Anda memiliki opsi untuk mendapatkan dukungan (pengembang atau produksi) yang merupakan persyaratan bagi sebagian besar toko perangkat lunak yang serius di luar sana. Juga jika Anda bekerja di perusahaan, Anda mengharapkan setumpuk alat, layanan, dan solusi. Enkripsi kode dan keamanan misalnya. Anda mendapatkan semua ini dengan Telerik / NativeScript, tetapi ini bukan prioritas untuk Facebook / Bereaksi.

Perlu dicatat juga bahwa NativeScript sudah versi 2.0, sementara ReactNative masih dalam masa awal kematangan. Ini juga harus dihitung ketika mengevaluasi risiko ketika memilih kerangka kerja yang tepat. Dengan NativeScript, Anda memiliki seluruh tumpukan yang tersedia untuk iOS dan Android. Untuk RN, seperti saat ini masih ada banyak celah dalam cerita lintas platform. Kesenjangan ini sedang diisi setiap hari dan menurut tim FB ini adalah salah satu prioritas utama bagi tim RN dalam satu tahun ke depan. Ada juga banyak alat produktivitas berbayar, layanan, dan komponen yang sudah tersedia untuk NativeScript. Ini memainkan peran utama ketika memutuskan kerangka mana yang akan digunakan ketika membangun perangkat lunak komersial apa pun.

Hal non-teknis terakhir adalah ukuran komunitas. Kedua kerangka kerja bersifat open source dan gratis. ReactNative adalah perpanjangan dari React.js sehingga Anda dapat mengasumsikan bahwa seluruh komunitas react.js akan bertaruh. Di sisi lain NativeScript didukung oleh Google dan menargetkan komunitas AngularJS. Kedua komunitas sangat besar (jutaan pengembang) dan dua kerangka kerja ini berada di tangan yang baik. Ini juga memainkan peran utama dalam evaluasi risiko.

Sekarang di sisi teknis

Banyak perbedaan. Pendekatan yang diambil oleh ReactNative dan NativeScript berbeda secara dramatis yang mempengaruhi pengalaman pengembang dan juga kemampuan untuk menggunakan dan menggunakan kembali hasil pustaka asli. Keduanya memberikan kinerja yang sangat baik pada iOs dan Android. 60fps sebagian besar waktu. Masih ada skenario yang perlu dipoles dalam kedua kerangka kerja, tetapi bahkan hari ini mereka berperilaku sebagai aplikasi asli.

Arsitektur ReactNative

Berbicara tentang arsitektur - ReactNative seperti yang saya sebutkan di atas adalah ekstensi untuk React.JS sehingga mereka mengikuti prinsip yang sama untuk memperbarui UI seperti pada ReactJS. Misalnya. menggunakan DOM virtual. Singkatnya - mereka menghitung perubahan yang perlu terjadi pada UI pada _background thread_ dan menerapkan perubahan-perubahan tersebut dalam batch. Fakta bahwa mereka melakukan ini pada utas latar belakang memiliki pro dan kontra. Di sisi positif tentu saja adalah bahwa utas UI tidak disentuh (yang mengarah ke UI sangat responsif), tetapi di sisi negatif ini membatasi kemampuan mereka untuk berkomunikasi _fast_ dengan OS asli yang mendasarinya. Ini berarti bahwa jika Anda memiliki komponen yang membuat banyak panggilan ke OS asli aplikasi akan sangat lambat, sangat lambat. Hal yang baik adalah bahwa ini tidak diperlukan untuk sebagian besar kasus.

Yang buruk adalah bahwa jika Anda perlu menggunakan komponen asli khusus atau API asli Anda harus tahu ObjC untuk iOS dan Java untuk Android untuk mengakses komponen dan API ini. Ini bisa menjadi pemecah kesepakatan bagi banyak pengembang JS. Anda tidak perlu tahu ObjC / Java untuk mencapai ini dalam NativeScript, baca di bawah ini.

 Ada artikel yang sangat bagus di situs web ReactNative yang menjelaskan ini secara terperinci dan mereka menyebutkan di sana bahwa mereka berencana untuk mengubah arsitektur ini sehingga lebih banyak hal yang dilakukan pada utas UI karena alasan ini. Berikut ini kutipan dari artikel tersebut:

Saya rasa kami tidak perlu atau ingin mengubah model threading kami secara drastis, mis. dengan memindahkan semuanya ke utas utama, tetapi kita perlu melakukan beberapa perubahan inti yang cantik.

Saya sarankan untuk membaca artikel di sini.

Arsitektur NativeScript

Pengembang tim inti NativeScript mengambil pendekatan yang lebih klasik di sini. Mereka menggunakan utas UI untuk menjalankan UI yang merupakan model yang sama dengan yang digunakan pada sebagian besar kerangka kerja populer - Android, Windows, dll. Ini memungkinkan cara yang lebih sederhana untuk mengembangkan aplikasi - Anda sebagai pengembang selalu memiliki akses ke UI pohon aplikasi Anda. Perlu dicatat bahwa jika Anda perlu menjalankan sesuatu pada utas latar belakang ini juga mungkin. Beberapa komponen inti seperti http, image, sql lite database sebenarnya melakukan banyak operasi mereka pada utas latar untuk mengurangi beban pada utas UI. Pendekatan ini memiliki manfaat luar biasa yang memungkinkan Anda mengakses _any_ API asli langsung dari JavaScript.

Silakan baca artikel ini yang menjelaskan arsitektur threading NativeScript secara mendalam - http: //developer.telerik.com/fea ....

Pada dasarnya Anda mengakses seluruh API asli yang tidak tersentuh yang memiliki banyak manfaat terutama ketika Anda harus mendukung aplikasi dalam jangka panjang. Tidak ada pembungkus untuk API asli dan ini membuat keseluruhan pengalaman lebih sederhana dan lebih sedikit kesalahan. Anda dapat menulis hal-hal seperti - com.android.button.init (). Ini juga memiliki manfaat menggunakan kembali seluruh tumpukan perpustakaan asli pihak ke-3 secara langsung tanpa perlu modifikasi apa pun. Ini memungkinkan konsumsi yang lebih mudah dan pembuatan ekstensi. Saat ini ada lebih dari 220 ekstensi yang tersedia dari komunitas. Manfaat lain dari pendekatan ini adalah bahwa animasi dalam NativeScript yang dibuat dengan menggunakan CSS dan JavaScript akan berjalan jauh lebih lancar karena dijalankan di utas UI.

Seperti yang saya sebutkan di atas, NativeScript didukung oleh Google, jadi jika Anda seorang pengembang Angular, Anda akan merasa betah jika menggunakan NativeScript - seluruh API Angular 2 didukung dan Anda dapat menggunakan kembali kode Anda antara NativeScript dan aplikasi web.

Arsitektur di atas memungkinkan NativeScript untuk menawarkan dukungan 0 hari untuk rilis OS baru. Saat ini NativeScript memiliki dukungan untuk Android N yang masih dalam tahap rilis.

Mesin JS digunakan untuk mengeksekusi kode aplikasi

Perlu disebutkan bahwa kedua kerangka kerja memanfaatkan mesin JavaScript yang ada untuk mengeksekusi kode JavaScript saat runtime. ReactNative menggunakan JavaScriptCore di iOS dan Android. NativeScript menggunakan V8 di Android dan JavaScriptCore di iOS. Baru-baru ini Microsoft menambahkan dukungan untuk Windows Universal di ReactNative dan menggunakan mesin Chakra JS mereka sendiri. Saya tidak yakin bagaimana ini akan digabungkan dengan sisa kode ReactNative karena (saya curiga) akan menyiratkan banyak perubahan pada tooling - debugger yang berbeda, profiler, untuk beberapa nama.

Penggunaan Standar

Perangkat lunak banyak berubah, jadi penting untuk mengandalkan standar untuk mengurangi risiko saat memilih kerangka kerja yang tepat untuk skenario Anda.

Kedua kerangka kerja menggunakan kode ECMAScript yang memenuhi standar yang memungkinkan untuk digunakan kembali kode antara aplikasi web dan seluler, yang menghasilkan ROI yang sangat baik saat menggunakannya.

Kelebihan untuk NativeScript adalah bahwa ia juga menggunakan deklarasi CSS yang memenuhi standar. Hal ini memungkinkan untuk keterampilan yang lebih besar menggunakan kembali kisah / kode antara aplikasi seluler dan web. Itu bahkan mendukung menggambarkan animasi menggunakan keyframes CSS. Semua ini turun ke kode asli sehingga deklarasi CSS diterjemahkan ke pengalaman asli. Lihat cara menggunakan CSS untuk menulis animasi asli.

Deklarasi UI

Dalam kedua kerangka kerja Anda dapat memiliki sintaks deklaratif untuk menggambarkan UI aplikasi. ReactNative sebagai menggunakan notasi yang ditemukan di Bereaksi untuk menguraikan deklarasi UI dalam satu file. NativeScript lagi menggunakan pendekatan yang lebih klasik dengan memungkinkan Anda berdua membangun UI dengan kode atau melalui file terpisah untuk implementasi UI yang memungkinkan Anda untuk menggunakan pola MVC / MVVM klasik. Saya tidak akan mengatakan yang mana yang lebih baik - ini adalah masalah selera pribadi. Bagi saya pemisahan antara UI dan kode lebih baik dengan MVVM, tapi ini yang saya gunakan untuk menulis jadi saya bias.

Jika Anda tahu CSS dalam NativeScript akan jauh lebih mudah bagi Anda untuk menata aplikasi menggunakan stylesheet eksternal atau gaya inline. ReactNative menggunakan notasi mereka sendiri untuk penataan berdasarkan deklarasi JSON. Sekali lagi mirip dengan CSS, tetapi berbeda.

Dukungan bahasa

Baik ReactNative dan NativeScript menggunakan JavaScript modern. Mereka berdua mendukung Babel untuk menggunakan JS terbaru dan terhebat.

Karena NativeScript lebih matang, ia juga memiliki lebih banyak opsi di sini. NativeScript memiliki integrasi yang erat (tooling, IDE, dll) dengan TypeScript. Ini memberikan integrasi tambahan dengan Angular 2 dan meningkatkan produktivitas dan membuat dukungan jangka panjang dari aplikasi ini jauh lebih mudah.

Pengalaman pengembang, Debugging

Kedua kerangka kerja menawarkan kemampuan untuk mengembangkan aplikasi secara cepat - keduanya menawarkan fungsionalitas pemuatan ulang panas - ini adalah kemampuan untuk melihat perubahan kode dengan segera pada perangkat tanpa perlu memuat ulang aplikasi (dalam sebagian besar kasus).

Dalam hal pengalaman pengembang dan IDE karena seluruh tumpukan aplikasi adalah JavaScript, Anda dapat menggunakan IDE apa pun yang tersedia. Facebook sedang mengerjakan IDE mereka sendiri yang masih belum dirilis pada saat penulisan ini, NativeScript mempromosikan Visual Studio Code sebagai editor yang direkomendasikan. Microsoft memiliki implementasi untuk NativeScript dan ReactNative untuk debugger VS Code mereka.

Pengujian

Karena ini semua JavaScript yang memenuhi standar, Anda dapat menggunakan alat apa pun yang tersedia untuk menulis tes unit. Kedua kerangka mendukung tes kerangka kerja paling populer seperti Karma, Jasmine, Mocha.

Untuk pengujian fungsional, karena UI sepenuhnya asli, Anda dapat menggunakan alat pengujian apa pun yang berfungsi dengan kerangka kerja asli seperti Appium.

Lihat cara menulis tes dalam NativeScript. Dalam ReactNative.

Performa

Seperti yang saya sebutkan beberapa kali di atas pada sisi kinerja Anda akan puas dengan kedua kerangka kerja. Ini adalah peningkatan besar atas aplikasi PhoneGap yang terkenal. Aplikasi final tidak berbeda dengan aplikasi asli asli. Penggunaan komponen UI asli asli adalah manfaat besar untuk kedua kerangka kerja.

Kedua kerangka kerja memiliki kinerja yang luar biasa di iOS - baik dalam hal waktu pemuatan (kurang dari satu detik untuk keduanya) dan dalam hal FPS (60fps dalam kebanyakan kasus) saat runtime.

Di Android kinerjanya masih bagus tetapi karena arsitektur OS asli yang mendasari kinerja keseluruhan tidak sebagus di iOS. Waktu pemuatan dan perilaku runtime tidak semulus di iOS. Tapi ini juga berlaku untuk aplikasi asli, jadi jangan terlalu pilih-pilih NativeScript dan ReactNative. ReactNative memiliki waktu pemuatan yang sedikit lebih baik (lebih cepat) di Android dibandingkan dengan NativeScript (1.4s vs 2.2s). Tim NativeScript sedang mengatasinya dengan pengenalan snapshot tumpukan memori, tetapi fitur ini masih eksperimental.

Aplikasi Nyata

Untuk beberapa aplikasi nyata, Anda dapat melihat mengikuti tautan ini untuk aplikasi NativeScript kitchen sink:

Di Android -> https: //play.google.com/store/ap ...

Di iOS -> https: //itunes.apple.com/bg/app / ...

Atau Anda dapat memeriksa aplikasi dari galeri showcase NativeScript.

Untuk ReactNative saya tidak mengetahui adanya aplikasi kitchen sink, tetapi Anda dapat memeriksa salah satu aplikasi showcase. Pastikan untuk memeriksa aplikasi yang dilakukan oleh Facebook untuk implementasi terbaik.

Sebagai penutup

Bagi saya pribadi, pengambilan keputusan utama didasarkan pada keterampilan Anda yang ada - jika Anda memiliki keterampilan Angular, cukup gunakan NativeScript, jika Anda seorang pengembang Bereaksi, Anda akan menemukan ReactNative lebih akrab dan mudah digunakan. Jika Anda menerapkan perangkat lunak komersial, pertimbangkan dukungan dan layanan yang tersedia dalam NativeScript dan rangkaian keterampilan Angular. Jika Anda membutuhkan lebih banyak UI asli khusus, NativeScript akan lebih cocok untuk Anda karena Anda tidak perlu tahu ObjC atau Java untuk menggunakannya. Pada akhirnya, kedua kerangka kerja tersebut modern dan memenuhi janjinya dan ini akan mengarah pada aplikasi-aplikasi terkemuka.

Selamat coding, dan saya harap hal di atas membantu :). Jangan ragu untuk bertanya kepada saya lebih detail. Tentu saja ada banyak hal yang tidak dibahas di sini, tetapi saya dapat melangkah lebih jauh dan menjelaskan semuanya di atas dengan lebih detail. Anda dapat menghubungi saya di twitter - @ValioStoychev.

Disclosure: Saya bekerja sebagai PM untuk NativeScript, tetapi saya mencoba untuk sepenuhnya tidak bias. Saya harap Anda akan menghargai konten di atas. Jika Anda berpikir ada fakta yang salah, tolong beri tahu saya dan saya akan menerapkan suntingan!


Jawaban 2:

Perbedaan antara React Native dan NativeScript

Baik React Native dan NativeScript adalah framework yang luar biasa. Kedua kerangka kerja tersebut merupakan bagian dari kerangka kerja lintas platform generasi baru yang TIDAK menggunakan browser untuk mengemasnya ke dalam aplikasi asli. Pekerjaan yang dilakukan oleh kedua tim sangat bagus, tetapi untuk daftar di sini ada beberapa perbedaan antara NativeScript dan React Native.

Baca Juga Pertanyaan Dasar Wawancara Asli

NativeScript

Bereaksi Asli

Komunitas yang responsif dan membantu.

Komunitas yang responsif dan membantu.

Tidak ada penggunaan produksi 'nyata'

Penggunaan produksi yang terbukti.

Dikelola oleh perusahaan kecil.

Dikelola oleh perusahaan besar.

Kurang populer

Populer.

Lebih tua dari Bereaksi Asli

Lebih baru dari NativeScript


Jawaban 3:

Perbedaan antara React Native dan NativeScript

Baik React Native dan NativeScript adalah framework yang luar biasa. Kedua kerangka kerja tersebut merupakan bagian dari kerangka kerja lintas platform generasi baru yang TIDAK menggunakan browser untuk mengemasnya ke dalam aplikasi asli. Pekerjaan yang dilakukan oleh kedua tim sangat bagus, tetapi untuk daftar di sini ada beberapa perbedaan antara NativeScript dan React Native.

Baca Juga Pertanyaan Dasar Wawancara Asli

NativeScript

Bereaksi Asli

Komunitas yang responsif dan membantu.

Komunitas yang responsif dan membantu.

Tidak ada penggunaan produksi 'nyata'

Penggunaan produksi yang terbukti.

Dikelola oleh perusahaan kecil.

Dikelola oleh perusahaan besar.

Kurang populer

Populer.

Lebih tua dari Bereaksi Asli

Lebih baru dari NativeScript


Jawaban 4:

Perbedaan antara React Native dan NativeScript

Baik React Native dan NativeScript adalah framework yang luar biasa. Kedua kerangka kerja tersebut merupakan bagian dari kerangka kerja lintas platform generasi baru yang TIDAK menggunakan browser untuk mengemasnya ke dalam aplikasi asli. Pekerjaan yang dilakukan oleh kedua tim sangat bagus, tetapi untuk daftar di sini ada beberapa perbedaan antara NativeScript dan React Native.

Baca Juga Pertanyaan Dasar Wawancara Asli

NativeScript

Bereaksi Asli

Komunitas yang responsif dan membantu.

Komunitas yang responsif dan membantu.

Tidak ada penggunaan produksi 'nyata'

Penggunaan produksi yang terbukti.

Dikelola oleh perusahaan kecil.

Dikelola oleh perusahaan besar.

Kurang populer

Populer.

Lebih tua dari Bereaksi Asli

Lebih baru dari NativeScript


Jawaban 5:

Perbedaan antara React Native dan NativeScript

Baik React Native dan NativeScript adalah framework yang luar biasa. Kedua kerangka kerja tersebut merupakan bagian dari kerangka kerja lintas platform generasi baru yang TIDAK menggunakan browser untuk mengemasnya ke dalam aplikasi asli. Pekerjaan yang dilakukan oleh kedua tim sangat bagus, tetapi untuk daftar di sini ada beberapa perbedaan antara NativeScript dan React Native.

Baca Juga Pertanyaan Dasar Wawancara Asli

NativeScript

Bereaksi Asli

Komunitas yang responsif dan membantu.

Komunitas yang responsif dan membantu.

Tidak ada penggunaan produksi 'nyata'

Penggunaan produksi yang terbukti.

Dikelola oleh perusahaan kecil.

Dikelola oleh perusahaan besar.

Kurang populer

Populer.

Lebih tua dari Bereaksi Asli

Lebih baru dari NativeScript


Jawaban 6:

Perbedaan antara React Native dan NativeScript

Baik React Native dan NativeScript adalah framework yang luar biasa. Kedua kerangka kerja tersebut merupakan bagian dari kerangka kerja lintas platform generasi baru yang TIDAK menggunakan browser untuk mengemasnya ke dalam aplikasi asli. Pekerjaan yang dilakukan oleh kedua tim sangat bagus, tetapi untuk daftar di sini ada beberapa perbedaan antara NativeScript dan React Native.

Baca Juga Pertanyaan Dasar Wawancara Asli

NativeScript

Bereaksi Asli

Komunitas yang responsif dan membantu.

Komunitas yang responsif dan membantu.

Tidak ada penggunaan produksi 'nyata'

Penggunaan produksi yang terbukti.

Dikelola oleh perusahaan kecil.

Dikelola oleh perusahaan besar.

Kurang populer

Populer.

Lebih tua dari Bereaksi Asli

Lebih baru dari NativeScript


Jawaban 7:

Perbedaan antara React Native dan NativeScript

Baik React Native dan NativeScript adalah framework yang luar biasa. Kedua kerangka kerja tersebut merupakan bagian dari kerangka kerja lintas platform generasi baru yang TIDAK menggunakan browser untuk mengemasnya ke dalam aplikasi asli. Pekerjaan yang dilakukan oleh kedua tim sangat bagus, tetapi untuk daftar di sini ada beberapa perbedaan antara NativeScript dan React Native.

Baca Juga Pertanyaan Dasar Wawancara Asli

NativeScript

Bereaksi Asli

Komunitas yang responsif dan membantu.

Komunitas yang responsif dan membantu.

Tidak ada penggunaan produksi 'nyata'

Penggunaan produksi yang terbukti.

Dikelola oleh perusahaan kecil.

Dikelola oleh perusahaan besar.

Kurang populer

Populer.

Lebih tua dari Bereaksi Asli

Lebih baru dari NativeScript


Jawaban 8:

Perbedaan antara React Native dan NativeScript

Baik React Native dan NativeScript adalah framework yang luar biasa. Kedua kerangka kerja tersebut merupakan bagian dari kerangka kerja lintas platform generasi baru yang TIDAK menggunakan browser untuk mengemasnya ke dalam aplikasi asli. Pekerjaan yang dilakukan oleh kedua tim sangat bagus, tetapi untuk daftar di sini ada beberapa perbedaan antara NativeScript dan React Native.

Baca Juga Pertanyaan Dasar Wawancara Asli

NativeScript

Bereaksi Asli

Komunitas yang responsif dan membantu.

Komunitas yang responsif dan membantu.

Tidak ada penggunaan produksi 'nyata'

Penggunaan produksi yang terbukti.

Dikelola oleh perusahaan kecil.

Dikelola oleh perusahaan besar.

Kurang populer

Populer.

Lebih tua dari Bereaksi Asli

Lebih baru dari NativeScript