Apakah perbezaan utama antara ReactNative dan NativeScript?


Jawapan 1:
Penafian: Jawapan ini bukan satu tujuan untuk membuktikan bahawa seseorang lebih baik daripada yang lain, saya tidak mahu mengkritik karya yang menakjubkan dari kedua-dua pasukan, tetapi untuk menyenaraikan perbezaan antara NativeScript dan React Native.

Kedua-dua rangka kerja ini adalah kedua-dua rangka kerja mudah alih merentas platform baru yang TIDAK menggunakan pelayar untuk membungkusnya ke aplikasi asli. Mereka menggunakan aplikasi UI asli dari OS asli. Ini mempunyai kesan yang sangat positif terhadap UX aplikasinya. Ia juga membolehkan pelaksanaan aplikasi yang lebih pantas kerana penggilap akhir yang diperlukan untuk aplikasi adalah magnitud yang lebih kecil bahawa kerja diperlukan untuk sama dengan mana-mana PhoneGap, aplikasi berasaskan pelayar.

Sekarang untuk soalan anda. Terdapat banyak perbezaan - kedua-dua teknikal dan bukan teknikal.

Di sebelah bukan teknikal

NativeScript disampaikan oleh Telerik (sebuah syarikat Kemajuan) - syarikat pemaju yang sangat terkenal dan kerangka NativeScript adalah sebahagian daripada perniagaan inti mereka. ReactNative dibina dari Facebook, yang kita semua tahu bukan syarikat alat pemaju. Kenapa ini penting? Apabila anda bergantung kepada Telerik, anda mempunyai pilihan untuk mendapatkan sokongan (pemaju atau pengeluaran) yang merupakan keperluan untuk kebanyakan kedai perisian yang serius di luar sana. Juga jika anda bekerja di perusahaan anda mengharapkan tumpukan tertentu alat, perkhidmatan dan penyelesaian. Kod penyulitan dan keselamatan contohnya. Anda mendapat semua ini dengan Telerik / NativeScript, tetapi ini bukan keutamaan untuk Facebook / React.

Perlu diingat juga bahawa NativeScript sudah versi 2.0, manakala ReactNative masih berada pada peringkat awal kematangannya. Ini juga perlu dikira apabila menilai risiko apabila memilih rangka kerja yang betul. Dengan NativeScript anda mempunyai keseluruhan timbunan yang tersedia untuk anda untuk kedua-dua iOS dan Android. Untuk RN, kerana hari ini masih terdapat banyak jurang dalam kisah silang platform. Jurang ini sedang dipenuhi setiap hari dan menurut pasukan FB ini merupakan salah satu keutamaan utama bagi pasukan RN dalam tempoh satu tahun akan datang. Terdapat juga alat produktiviti berbayar, perkhidmatan dan komponen yang sedia ada untuk NativeScript. Ini memainkan peranan utama apabila memutuskan rangka kerja yang digunakan ketika membina sebarang perisian komersial.

Perkara bukan teknikal yang terakhir adalah saiz komuniti. Kedua-dua rangka kerja adalah sumber terbuka dan bebas. ReactNative adalah lanjutan React.js supaya anda boleh mengandaikan bahawa komuniti reaksi sepenuhnya akan bertaruh di atasnya. Di sisi lain NativeScript disokong oleh Google dan menargetkan komunitas AngularJS. Kedua-dua komuniti ini sangat besar (berjuta-juta pemaju) dan kedua-dua kerangka ini berada dalam keadaan baik. Ini juga memainkan peranan utama dalam penilaian risiko.

Kini di bahagian teknikal

Ton perbezaan. Pendekatan ReactNative dan NativeScript yang diambil secara dramatik berbeza yang memberi kesan kepada pengalaman pemaju dan juga keupayaan untuk menggunakan dan menggunakan semula hasil perpustakaan asli. Kedua-duanya memberikan prestasi yang sangat baik pada kedua-dua iOs dan Android. 60fps paling banyak masa. Masih terdapat senario yang perlu digilap dalam kedua-dua rangka kerja, tetapi pada hari ini mereka bertindak sebagai aplikasi asli.

Senibina ReactNative

Bercakap tentang seni bina - ReactNative seperti yang saya sebutkan di atas adalah lanjutan untuk React.JS sehingga mereka mengikuti prinsip yang sama untuk mengemas kini UI seperti dalam ReactJS. Cth. menggunakan DOM maya. Dalam masa yang singkat - mereka mengira perubahan yang perlu berlaku pada UI pada thread__groundground_ dan menerapkan perubahan dalam batch. Hakikat bahawa mereka melakukan ini pada benang latar belakang mempunyai kebaikan dan keburukannya. Di sisi positif tentu saja bahawa thread UI tidak disentuh (yang membawa kepada UI yang sangat responsif), tetapi pada sisi negatif ini adalah mengehadkan keupayaan mereka untuk berkomunikasi _fast_ dengan OS asli yang mendasari. Ini bermakna jika anda mempunyai komponen yang membuat banyak panggilan ke OS asli app akan menjadi sangat perlahan, sangat perlahan. Perkara yang baik adalah bahawa ini tidak diperlukan untuk kebanyakan kes.

Perkara yang buruk ialah jika anda perlu menggunakan komponen native custom atau API asli anda perlu tahu ObjC untuk iOS dan Java untuk Android untuk mengakses komponen dan API ini. Ini boleh menjadi pemecah perjanjian bagi banyak pemaju JS. anda tidak perlu tahu ObjC / Java untuk mencapai ini dalam NativeScript, baca di bawah.

 Terdapat artikel yang sangat baik di laman web ReactNative yang menerangkan secara terperinci ini dan mereka menyebut di sana bahawa mereka merancang untuk mengubah arsitektur ini supaya lebih banyak perkara sedang dilakukan di thread UI untuk alasan ini. Berikut adalah petikan dari artikel:

Saya tidak fikir kita perlu atau mahu mengubah model threading kita secara drastik, mis. dengan menggerakkan semuanya ke dalam thread utama, tetapi kita perlu membuat beberapa perubahan yang sangat penting.

Saya cadangkan membaca artikel di sini.

Seni bina NativeScript

Pengembang pasukan teras NativeScript mengambil pendekatan yang lebih klasik di sini. Mereka menggunakan thread UI untuk melaksanakan UI yang merupakan model yang sama digunakan pada kebanyakan kerangka popular - Android, Windows, dll. Ini membolehkan cara yang lebih mudah untuk membangunkan aplikasi - anda sebagai pemaju sentiasa mempunyai akses ke UI pokok permohonan anda. Perlu diingat bahawa jika anda perlu melaksanakan sesuatu pada benang latar belakang ini juga mungkin. Beberapa komponen teras seperti http, imej, pangkalan data lll sql sebenarnya melakukan banyak operasi mereka pada benang latar belakang untuk mengurangkan beban pada benang UI. Pendekatan ini mempunyai manfaat yang luar biasa untuk membolehkan anda mengakses _any_ API asli secara langsung dari JavaScript.

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

Pada dasarnya anda mengakses seluruh API asli yang tidak disentuh yang mempunyai banyak manfaat terutama apabila anda perlu menyokong aplikasi dalam jangka masa panjang. Tidak ada pembalut untuk API asli dan ini menjadikan keseluruhan pengalaman lebih mudah dan kurang mudah didapati. Anda boleh secara literal menulis perkara seperti - com.android.button.init (). Ini juga mempunyai manfaat untuk menggunakan semula seluruh perpustakaan asli pihak ke-3 secara langsung tanpa memerlukan apa-apa pengubahsuaian. Ini membolehkan penggunaan lebih mudah dan penciptaan sambungan. Pada masa ini terdapat lebih daripada 220 sambungan yang tersedia dari komuniti. Manfaat lain dari pendekatan ini adalah bahawa animasi dalam NativeScript yang dibuat dengan menggunakan CSS dan JavaScript akan berjalan dengan lebih lancar kerana mereka dilaksanakan pada thread UI.

Seperti yang saya nyatakan di atas, NativeScript disokong oleh Google, jadi jika anda adalah pemaju Sudut anda akan merasa di rumah jika anda menggunakan NativeScript - keseluruhan Sudut 2 API disokong dan anda boleh menggunakan semula kod anda antara NativeScript dan aplikasi web.

Senibina di atas membolehkan NativeScript untuk menawarkan sokongan 0 hari untuk siaran OS baru. Pada masa ini NativeScript mempunyai sokongan untuk, masih dalam peringkat Alpha, pelepasan Android N.

JS Engines digunakan untuk melaksanakan kod aplikasinya

Perlu diingat bahawa kedua-dua rangka kerja menggunakan mesin JavaScript sedia ada untuk melaksanakan kod JavaScript semasa runtime. ReactNative menggunakan JavaScriptCore pada iOS dan Android. NativeScript menggunakan V8 pada Android dan JavaScriptCore pada iOS. Baru-baru ini Microsoft menambah sokongan untuk Windows Universal dalam ReactNative dan menggunakan enjin Chakra JS mereka sendiri. Saya tidak pasti bagaimana ini akan digabungkan dengan seluruh kod ReactNative kerana ia (saya mengesyaki) akan membayangkan banyak perubahan kepada tooling - debugger yang berbeza, profiler, untuk menamakan beberapa.

Penggunaan Piawaian

Perisian berubah banyak, jadi penting untuk bergantung pada standard untuk mengurangkan risiko ketika memilih kerangka yang tepat untuk senario anda.

Kedua-dua rangka kerja menggunakan kod ECMAScript yang mematuhi piawaian yang membolehkan penggunaan semula kod antara aplikasi web dan mudah alih, yang membawa kepada ROI yang sangat baik apabila menggunakannya.

Kelebihan untuk NativeScript ialah ia juga menggunakan pengisytiharan CSS yang mematuhi standard. Ini membolehkan kisah guna semula kemahiran / kod lebih besar antara aplikasi mudah alih dan web. Ia juga menyokong menerangkan animasi menggunakan kekunci frames CSS. Semua ini berlaku kepada kod asal supaya pengisytiharan CSS diterjemahkan kepada pengalaman asli. Lihat cara menggunakan CSS untuk menulis animasi asli.

Pengisytiharan UI

Dalam kedua-dua rangka kerja, anda boleh mempunyai sintaks deklaratif untuk menerangkan UI aplikasinya. ReactNative menggunakan notasi yang terdapat dalam React untuk menggariskan deklarasi UI dalam satu fail. NativeScript sekali lagi menggunakan pendekatan yang lebih klasik dengan membolehkan anda membina UI dengan kod atau melalui fail berasingan untuk pelaksanaan UI yang membolehkan anda menggunakan corak MVC / MVVM klasik. Saya tidak akan mengatakan mana yang lebih baik - ia adalah perkara peribadi. Bagi saya pemisahan antara UI dan kod itu lebih baik dengan MVVM, tetapi ini yang saya gunakan untuk menulis jadi saya berat sebelah.

Jika anda tahu CSS dalam NativeScript akan menjadi lebih mudah bagi anda untuk gaya aplikasi menggunakan stylesheets luaran atau styling inline. ReactNative menggunakan notasi mereka sendiri untuk gaya berdasarkan deklarasi JSON. Sekali lagi serupa dengan CSS, tetapi berbeza.

Sokongan bahasa

Kedua-dua ReactNative dan NativeScript menggunakan JavaScript moden. Mereka berdua menyokong Babel untuk menggunakan JS terkini dan terbesar.

Oleh kerana NativeScript lebih matang ia juga mempunyai lebih banyak pilihan di sini. NativeScript mempunyai integrasi yang ketat (perkakas, IDE, dll) dengan TypeScript. Ini memberikan integrasi tambahan dengan Angular 2 dan meningkatkan produktiviti dan menjadikan sokongan jangka panjang aplikasi ini lebih mudah.

Pengalaman pemaju, Debugging

Kedua-dua rangka kerja menawarkan keupayaan untuk aplikasi pemaju dengan cepat - kedua-duanya menawarkan fungsi tambah nilai yang panas - ini adalah keupayaan untuk melihat perubahan kod dengan serta-merta pada peranti tanpa perlu memuatkan semula aplikasi (dalam kebanyakan kes).

Dari segi pengalaman pemaju dan IDE sejak keseluruhan stack aplikasi adalah JavaScript anda boleh menggunakan mana-mana IDE yang tersedia. Facebook sedang mengusahakan IDE mereka sendiri yang masih belum dikeluarkan pada masa penulisan ini, NativeScript sedang mempromosikan Kod Visual Studio sebagai editor yang disyorkan. Microsoft mempunyai pelaksanaan untuk kedua-dua NativeScript dan ReactNative untuk debugger VS Code mereka.

Ujian

Oleh kerana ia adalah semua piawaian mematuhi piawaian, anda boleh menggunakan mana-mana alat yang ada untuk menulis ujian unit. Kedua-dua rangka kerja menyokong ujian framworks yang paling popular seperti Karma, Jasmine, Mocha.

Untuk ujian fungsional, kerana UI sepenuhnya asli anda boleh menggunakan mana-mana alat ujian yang berfungsi dengan kerangka asli seperti Appium.

Lihat cara menulis ujian dalam NativeScript. Dalam ReactNative.

Prestasi

Seperti yang saya nyatakan beberapa kali di atas pada bahagian prestasi, anda akan berpuas hati dengan kedua-dua rangka kerja. Ia adalah peningkatan yang besar terhadap aplikasi PhoneGap yang terkenal. Aplikasi akhir tidak berbeza dari apl asli sebenar. Penggunaan komponen UI asli sebenar adalah manfaat yang besar untuk kedua-dua rangka kerja.

Kedua-dua rangka kerja mempunyai prestasi luar biasa pada iOS - kedua-duanya dari segi masa pemuatan (kurang dari satu saat untuk kedua-duanya) dan dari segi FPS (60fps dalam kebanyakan kes) semasa runtime.

Pada Android prestasi masih bagus tetapi kerana seni bina OS asli yang mendasari prestasi keseluruhannya tidak baik seperti pada iOS. Waktu pemuatan dan tingkah laku runtime tidak seperti digilap seperti pada iOS. Tetapi ini sah untuk apl asli asli juga, jadi jangan terlalu pilih-pilih di NativeScript dan ReactNative. ReactNative mempunyai masa loading yang lebih baik (lebih cepat) di Android berbanding dengan NativeScript (1.4s vs 2.2s). Pasukan NativeScript sedang menangani ini dengan pengenalan snapshot memori helikopter, tetapi ciri ini masih eksperimen.

Real Apps

Untuk sesetengah apl nyata yang anda boleh lihat ikuti pautan ini untuk aplikasi sinki dapur NativeScript:

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

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

Atau anda boleh menyemak aplikasi dari galeri pameran NativeScript.

Untuk ReactNative Saya tidak menyedari sebarang aplikasi sink dapur, tetapi anda boleh menyemak mana-mana apl pameran. Pastikan untuk memeriksa aplikasi yang dilakukan oleh Facebook untuk pelaksanaan yang terbaik.

Dalam penutupan

Bagi saya secara peribadi, membuat keputusan utama berdasarkan kemahiran anda yang sedia ada - jika anda mempunyai kemahiran sudut, hanya menggunakan NativeScript, jika anda seorang pemaju React, anda akan mendapati ReactNative lebih biasa dan mudah digunakan. Jika anda melaksanakan perisian komersial, pertimbangkan sokongan dan perkhidmatan yang tersedia dalam NativeScript dan set kemahiran sudut. Jika anda memerlukan lebih banyak UI asli adat NativeScript akan sesuai dengan anda kerana anda tidak perlu mengenali ObjC atau Java untuk menggunakannya. Pada akhir hari kedua-dua rangka kerja moden dan menyampaikan janji mereka dan ini akan membawa kepada aplikasi terkemuka.

Happy coding, dan saya harap yang di atas membantu :). Sila rujuk kepada saya untuk mendapatkan butiran lanjut. Sudah tentu ada banyak perkara yang tidak dilindungi di sini, tetapi saya boleh pergi lebih jauh dan menerangkan semuanya di atas dengan butiran yang lebih mendalam. Anda boleh menghubungi saya di twitter - @ValioStoychev.

Pendedahan: Saya bekerja sebagai PM untuk NativeScript, tetapi saya cuba menjadi tidak berat sebelah sepenuhnya. Saya harap anda akan menghargai kandungan di atas. Sekiranya anda fikir ada fakta yang salah, sila beritahu saya dan saya akan memohon pengeditan!


Jawapan 2:

Perbezaan antara React Native dan NativeScript

Kedua-dua React NativeScript dan NativeScript adalah kerangka luar biasa. Kedua-dua rangka kerja adalah sebahagian daripada rangka kerja mudah alih lintas-generasi baru yang TIDAK menggunakan pelayar untuk membungkusnya ke dalam apl Asli. Kerja-kerja yang dilakukan oleh kedua-dua pasukan adalah sangat baik, tetapi untuk disenaraikan di sini adalah beberapa perbezaan antara NativeScript dan React Native.

Juga Baca Soalan-soalan Tinjauan Asas Asli Reaktik

NativeScript

React Native

Komuniti yang responsif, membantu.

Komuniti yang responsif, membantu.

Penggunaan 'tidak' sebenar

Penggunaan pengeluaran yang terbukti.

Dipelihara oleh sebuah syarikat kecil.

Dipelihara oleh syarikat besar.

Kurang popular

Popular.

Lebih tua daripada React Native

Lebih baru daripada NativeScript


Jawapan 3:

Perbezaan antara React Native dan NativeScript

Kedua-dua React NativeScript dan NativeScript adalah kerangka luar biasa. Kedua-dua rangka kerja adalah sebahagian daripada rangka kerja mudah alih lintas-generasi baru yang TIDAK menggunakan pelayar untuk membungkusnya ke dalam apl Asli. Kerja-kerja yang dilakukan oleh kedua-dua pasukan adalah sangat baik, tetapi untuk disenaraikan di sini adalah beberapa perbezaan antara NativeScript dan React Native.

Juga Baca Soalan-soalan Tinjauan Asas Asli Reaktik

NativeScript

React Native

Komuniti yang responsif, membantu.

Komuniti yang responsif, membantu.

Penggunaan 'tidak' sebenar

Penggunaan pengeluaran yang terbukti.

Dipelihara oleh sebuah syarikat kecil.

Dipelihara oleh syarikat besar.

Kurang popular

Popular.

Lebih tua daripada React Native

Lebih baru daripada NativeScript


Jawapan 4:

Perbezaan antara React Native dan NativeScript

Kedua-dua React NativeScript dan NativeScript adalah kerangka luar biasa. Kedua-dua rangka kerja adalah sebahagian daripada rangka kerja mudah alih lintas-generasi baru yang TIDAK menggunakan pelayar untuk membungkusnya ke dalam apl Asli. Kerja-kerja yang dilakukan oleh kedua-dua pasukan adalah sangat baik, tetapi untuk disenaraikan di sini adalah beberapa perbezaan antara NativeScript dan React Native.

Juga Baca Soalan-soalan Tinjauan Asas Asli Reaktik

NativeScript

React Native

Komuniti yang responsif, membantu.

Komuniti yang responsif, membantu.

Penggunaan 'tidak' sebenar

Penggunaan pengeluaran yang terbukti.

Dipelihara oleh sebuah syarikat kecil.

Dipelihara oleh syarikat besar.

Kurang popular

Popular.

Lebih tua daripada React Native

Lebih baru daripada NativeScript


Jawapan 5:

Perbezaan antara React Native dan NativeScript

Kedua-dua React NativeScript dan NativeScript adalah kerangka luar biasa. Kedua-dua rangka kerja adalah sebahagian daripada rangka kerja mudah alih lintas-generasi baru yang TIDAK menggunakan pelayar untuk membungkusnya ke dalam apl Asli. Kerja-kerja yang dilakukan oleh kedua-dua pasukan adalah sangat baik, tetapi untuk disenaraikan di sini adalah beberapa perbezaan antara NativeScript dan React Native.

Juga Baca Soalan-soalan Tinjauan Asas Asli Reaktik

NativeScript

React Native

Komuniti yang responsif, membantu.

Komuniti yang responsif, membantu.

Penggunaan 'tidak' sebenar

Penggunaan pengeluaran yang terbukti.

Dipelihara oleh sebuah syarikat kecil.

Dipelihara oleh syarikat besar.

Kurang popular

Popular.

Lebih tua daripada React Native

Lebih baru daripada NativeScript


Jawapan 6:

Perbezaan antara React Native dan NativeScript

Kedua-dua React NativeScript dan NativeScript adalah kerangka luar biasa. Kedua-dua rangka kerja adalah sebahagian daripada rangka kerja mudah alih lintas-generasi baru yang TIDAK menggunakan pelayar untuk membungkusnya ke dalam apl Asli. Kerja-kerja yang dilakukan oleh kedua-dua pasukan adalah sangat baik, tetapi untuk disenaraikan di sini adalah beberapa perbezaan antara NativeScript dan React Native.

Juga Baca Soalan-soalan Tinjauan Asas Asli Reaktik

NativeScript

React Native

Komuniti yang responsif, membantu.

Komuniti yang responsif, membantu.

Penggunaan 'tidak' sebenar

Penggunaan pengeluaran yang terbukti.

Dipelihara oleh sebuah syarikat kecil.

Dipelihara oleh syarikat besar.

Kurang popular

Popular.

Lebih tua daripada React Native

Lebih baru daripada NativeScript


Jawapan 7:

Perbezaan antara React Native dan NativeScript

Kedua-dua React NativeScript dan NativeScript adalah kerangka luar biasa. Kedua-dua rangka kerja adalah sebahagian daripada rangka kerja mudah alih lintas-generasi baru yang TIDAK menggunakan pelayar untuk membungkusnya ke dalam apl Asli. Kerja-kerja yang dilakukan oleh kedua-dua pasukan adalah sangat baik, tetapi untuk disenaraikan di sini adalah beberapa perbezaan antara NativeScript dan React Native.

Juga Baca Soalan-soalan Tinjauan Asas Asli Reaktik

NativeScript

React Native

Komuniti yang responsif, membantu.

Komuniti yang responsif, membantu.

Penggunaan 'tidak' sebenar

Penggunaan pengeluaran yang terbukti.

Dipelihara oleh sebuah syarikat kecil.

Dipelihara oleh syarikat besar.

Kurang popular

Popular.

Lebih tua daripada React Native

Lebih baru daripada NativeScript


Jawapan 8:

Perbezaan antara React Native dan NativeScript

Kedua-dua React NativeScript dan NativeScript adalah kerangka luar biasa. Kedua-dua rangka kerja adalah sebahagian daripada rangka kerja mudah alih lintas-generasi baru yang TIDAK menggunakan pelayar untuk membungkusnya ke dalam apl Asli. Kerja-kerja yang dilakukan oleh kedua-dua pasukan adalah sangat baik, tetapi untuk disenaraikan di sini adalah beberapa perbezaan antara NativeScript dan React Native.

Juga Baca Soalan-soalan Tinjauan Asas Asli Reaktik

NativeScript

React Native

Komuniti yang responsif, membantu.

Komuniti yang responsif, membantu.

Penggunaan 'tidak' sebenar

Penggunaan pengeluaran yang terbukti.

Dipelihara oleh sebuah syarikat kecil.

Dipelihara oleh syarikat besar.

Kurang popular

Popular.

Lebih tua daripada React Native

Lebih baru daripada NativeScript