Apa perbedaan fungsional antara NW.js, Brackets-Shell dan Electron?

151

Sekarang setelah TideSDK mati secara efektif, saya telah mencari alternatif 'pembungkus' untuk menjalankan aplikasi HTML / CSS / JS sebagai aplikasi desktop yang berdiri sendiri. Tiga opsi yang layak saya jalankan sejauh ini, adalah NW.js (sebelumnya node-webkit), shell-kurung , dan Electron (sebelumnya atom-shell).

Masalahnya adalah bahwa tampaknya tidak ada perbandingan yang cukup lengkap antara ketiganya dalam hal set fitur, kompatibilitas, dll. Saya berharap untuk mengubah ini menjadi untaian kanonik yang lebih atau kurang tentang perbedaan (objektif) antara ketiganya, khususnya mengenai:

  • Dukungan platform ; sistem operasi, dependensi, dll.
  • Dukungan fitur bahasa , sejauh menyangkut HTML5, CSS3, dan JavaScript. Pikirkan hal-hal seperti "apakah video HTML5 berfungsi, dan jika ya, codec apa yang tersedia?"
  • Fitur tambahan non-standar , seperti ikon baki, pemberitahuan sembulan, dan bilah menu yang diberikan OS.
  • Ekstensibilitas ; misalnya. kemampuan untuk 'menyambungkan' kode asli, berbicara dengan Node.js, dan sebagainya.
  • Arsitektur ; khususnya perbedaan arsitektur yang memengaruhi penggunaan sehari-hari sebagai pengembang.
  • Debugging ; termasuk alat pengembangan, kompatibilitas dengan alat yang biasa digunakan seperti node-inspector, dll.
  • ... dan seterusnya.

Apa tujuan, perbedaan teknis yang penting saat membuat pilihan di antara mereka sebagai pengembang aplikasi?

Sven Slootweg
sumber
Apakah Anda beruntung melihat perbedaan pada saat itu? Mungkin perlu penggalian akhir pekan ini
Stefan
@stefan Belum, tidak: / Saya telah bereksperimen sedikit dengan node-webkit dalam arti praktis, tetapi belum melampaui itu. Belum sempat mencari dokumentasi formal tentang perbedaan ...
Sven Slootweg
3
Nah, berikut ini perbedaan utama antara simpul-webkit dan atom-shell yang diuraikan oleh tim atom-shell, github.com/atom/atom-shell/blob/master/docs/development/… .
kubur
2
Bagaimana dengan Elephant in the Room: Debugging. Saya telah menggunakan nw.js dan menemukan bahwa debugging sangat kurang ketika menggunakan platform linux untuk dikembangkan. Untuk mengembangkan aplikasi besar, debugging adalah fitur penting IMO. Bisakah kita menambahkan debugging ke daftar fitur yang diinginkan untuk diajak bicara?
Timothy C. Quinn
@JavaScriptDude Terima kasih, saya telah menambahkannya ke daftar.
Sven Slootweg

Jawaban:

42

Saya melakukan penelitian serupa sekitar dua bulan lalu, dan pada akhirnya saya pergi dengan node-webkit. Sisi positif terbesar pada node-webkit adalah node.js dan npm. Manajemen paket npm sangat bagus, dan node telah melakukan akses sistem file dengan baik.

Brackets-shell terlihat menarik, tetapi selain IDE yang bagus, saya tidak benar-benar mengerti apa yang membuat ini sebagus atau lebih baik dari yang lain. Mereka sangat jelas bahwa "Shell-kurung hanya dikelola untuk digunakan oleh proyek kurung", yang berteriak lari ke saya.

https://github.com/adobe/brackets-shell#overview

Atom-shell tampaknya baru-baru ini aktif, tetapi sepertinya banyak tanda kurung di mana mereka benar-benar menulis dan editor / IDE yang kebetulan dilampirkan ke runtime webkit. Itu juga dibangun di atas node.js. Yang satu ini memiliki kelemahan karena sulit untuk mencari barang secara online tanpa diingatkan tentang kimia sekolah menengah Anda.

Saya benar-benar tidak menginginkan editor baru, dan sebagian besar programmer sudah memiliki favorit mereka. Untuk pengembangan aplikasi yang sebenarnya, mereka bekerja hampir sama, dan seharusnya, karena mereka semua menggunakan webkit. Anda pada dasarnya menulis 90-95% dari itu seperti situs web, dan kemudian berurusan dengan bagian asli, dan beberapa konfigurasi.

Hal-hal ini berlaku untuk ketiga platform - berjalan di Windows, Mac, dan dukungan bahasa Linux - HTML5, CSS3 dan Javascript: karena mereka menjalankan javascript Anda dapat mengunduh dan menjalankan hampir semua pustaka / kerangka kerja yang Anda inginkan.

Peringatan besar di webkit adalah dukungan codec. Biasanya Anda akan memiliki masalah dengan codec video tidak bebas, kecuali jika Anda membangun kembali dll untuk mendukungnya. Misalnya node-webkit yang dikirim tidak akan memutar video mp4.

John W. Clark
sumber
Bisakah Anda menguraikan apakah ada perbedaan dalam hal pemutaran MP4 dalam kurung-shell dan atom-shell? Tidak jelas dari jawaban Anda apakah ini kekhasan di sebagian besar distribusi WebKit, atau hanya di node-webkit.
Sven Slootweg
Pemutaran MP4 menjadi masalah adalah masalah webkit. Anda harus ingat bahwa webkit benar-benar kromium, dan kecuali teknologi AV terbuka dan gratis mereka tidak mendukungnya. Jawaban standar adalah mengganti / membangun kembali ffmpegsumo. Menggantinya dengan yang dari instalasi Chrome Anda saat ini tampaknya bekerja dengan cukup baik.
John W. Clark
1
Itu hanya karena kurung dibangun di atas bracket-shelldan Atom dibangun di atas atom-shell, tetapi Anda dapat menggunakan editor atau IDE pilihan untuk membuat kode dengan mereka. Saya pikir apa yang diinginkan OP lebih pada perbedaan teknis antara 3. Akan manis melihat sesuatu seperti TodoMVC di 3 lingkungan seperti runtime.
Ehtesh Choudhury
@SvenSlootweg, dukungan codec lebih tentang perpustakaan yang digunakan dengan webkit yang Anda gunakan. Ketiganya menggunakan Chromium sebagai basis webkit, sehingga mereka semua memiliki masalah codec yang sama, dan mereka dapat diselesaikan dengan cara yang sama.
John W. Clark
40

Saya telah bermain dengan Atom-Shell selama beberapa hari terakhir, dan saya sangat menyukainya sejauh ini.

Bagian terbaik tentang itu adalah bahwa itu didukung oleh GitHub .. yang seharusnya memungkinkan Anda untuk menetap di platform untuk jangka panjang, terutama jika mendapatkan banyak pengikut. Ini juga dimungkinkan oleh perbaikan Node.js langsung berdasarkan kontrak dengan StrongLoop , yang merupakan kontributor Node.js utama (mereka mengklaim mempekerjakan lebih banyak pengembang inti Node.js daripada perusahaan lain, bahkan Joyent).

Saya juga merasa agak nyaman untuk memulai. Butuh waktu sekitar satu hari untuk mempelajari struktur dan mendapatkan bukti pertama saya konsep berjalan. Sangat keren.


Poin Peluru:

  • Dukungan platform: Windows, Linux, Mac OSX ( Info Lebih Lanjut Di Sini )
  • Dukungan fitur bahasa: HTML5, CSS3, JS via Chromium - sejauh ini, tidak ada masalah, tapi saya belum menguji video secara spesifik.
  • Fitur Asli: Menu App Asli, Dukungan Baki Tugas, Global Hotkeys, Dukungan Protocol Handler (yang telah saya lihat sejauh ini)
  • Ekstensibilitas: Integrasi Node.js yang luar biasa, baik klien dan server dapat "memerlukan" modul dan asli Node.js. Saya juga berhasil menguji perpustakaan Bower (termasuk jQuery) tanpa masalah.
  • Arsitektur: Tercakup dalam poin lain, tetapi secara umum sangat halus.

Pembaruan (11/25/14): Saya belum menemukan case use untuk Atom-Shell dalam kapasitas resmi apa pun, tetapi saya telah menggunakannya untuk membangun beberapa aplikasi kecil untuk saya gunakan sendiri, yang paling kompleks adalah aplikasi yang menarik log waktu saya dari perangkat lunak PM saya dan membuat faktur Paypal.

Pendapat saya tentang platform tetap positif. Cukup mengagumkan.

Pada aplikasi faktur waktu saya, saya berhasil membawa Contoh Template Dasbor Bootstrap 3 dan beberapa modul simpul (bluebird, Paypal SDK, Klien PM Teamwork) untuk membuat aplikasi yang agak rumit. Saya butuh beberapa hari dan melakukan tugasnya dengan baik.

Saya benar-benar tidak bisa memikirkan sesuatu yang negatif untuk dikatakan tentang Atom-Shell, yang solid, stabil, cepat, dan mudah dikodekan. Saya harap ini membantu seseorang.

Luke Chavers
sumber
Bisakah Anda menguraikan perbedaan dengan node-webkit pada khususnya? Sejauh yang saya tahu, semua (sebagian besar?) Poin ini ditawarkan oleh node-webkit juga, tapi saya tidak yakin apakah mungkin ada sesuatu yang saya lewatkan.
Sven Slootweg
hai luke, mungkinkah untuk memperbarui aplikasi atom-shell sendiri ...?
Munish Kapoor
@SvenSlootweg Maaf saya ketinggalan komentar Anda dari beberapa bulan yang lalu; Sayangnya saya tidak berpengalaman dengan node-webkit dan tidak dapat membandingkan keduanya secara efektif. Tapi saya memang membaca artikel StrongLoop ini , yang setidaknya menunjukkan bahwa Atom-Shell telah membuat terobosan baru. : \
Luke Chavers
@MunishKapoor Untuk pengembangan? Anda dapat mengunduh rilis terbaru .. Saya kurang lebih hanya mengganti nama direktori atom lama dan menggantinya dengan yang baru. Mereka mungkin memiliki beberapa proses yang bagus seperti "npm update" - tetapi saya belum menyelidikinya. Untuk memperbarui shell aplikasi + atom Anda pada klien, saya tidak berpikir mereka mengatasinya secara langsung (sama sekali) dan mungkin berharap bahwa Anda akan menggunakan installer atau platform eksternal lainnya untuk itu. Saya menemukan artikel ini dalam dokumen mereka menarik.
Luke Chavers
1
@Moonwalker Ya, ia menggunakan aplikasi bernama " Asar " untuk kemasan. (lihat: "Aplikasi Pengemasan" ). Saya juga baru saja menemukan perbandingan Node-Webkit / Atom-Shell ini .
Luke Chavers
22

Selain sepenuhnya mendukung standar Web, NW.js mendukung daftar fitur non-standar untuk pengembangan aplikasi asli termasuk:

Ada banyak lagi yang bisa dilihat di wiki termasuk Menu, Baki, dll.

Roger Wang
sumber
3
+1 pada mode Kios Roger. Saya bisa melihat itu menjadi fitur yang akan saya gunakan di masa depan. Semoga kemampuan debugging meningkat sehingga saya bisa tetap di nw.js namun saat ini saya serius mempertimbangkan beralih ke Atom Electron untuk sementara waktu untuk menguji air. Saya menemukan debugging di nw.js sedikit ingin.
Timothy C. Quinn
Saya agak khawatir tentang dimasukkannya "melindungi sumber JS" di sana - itu di kelas yang sama dengan DRM, dalam arti bahwa itu tidak berhasil. Ini hanya "melindungi" dari orang-orang yang Anda tidak perlu "lindungi" untuk memulainya. Sepertinya bukan sesuatu yang harus diiklankan sebagai fitur bagi saya.
Sven Slootweg
1
Ini tidak seperti DRM untuk Web - programmer JS harus dapat melakukan apa saja seperti yang dapat dilakukan oleh programmer C ++, termasuk mengkompilasi kode sumber ke kode mesin, ketika mereka mengembangkan aplikasi asli.
Roger Wang
@JavaScriptDude maksud Anda devtools? Di versi berikutnya (0.13) pengalaman akan hampir sama dengan di browser Chrome.
Roger Wang
@Roger. Maaf atas tanggapan yang tertunda. Ya, devtools. Saya menemukan bahwa batasan-batasan berikut ada di sana, beberapa di antaranya kemungkinan ada di devtools itu sendiri: 1) Tidak ada debugging windows baru yang diluncurkan. 2) Remote debugging tidak pernah berfungsi. 3) Ketidakmampuan untuk mengingat breakpoints, menonton variabel dan sumber dibuka (setiap kali restart aplikasi, semua pengaturan dihapus) 4) (masalah besar nyata) Ketidakmampuan untuk debug kode yang dimuat dengan membutuhkan ().
Timothy C. Quinn
10

Saya telah bekerja dengan kurung-shell untuk beberapa waktu sekarang, berikut adalah beberapa temuan saya:

  • brackets-shell terutama dikembangkan sebagai shell di bawah proyek IDE kurung, tetapi proyek dapat menjalankan aplikasi web apa pun. Anda hanya perlu mengarahkannya ke halaman html Anda sendiri. Clint Berry menulis tutorial yang sangat baik tentang melakukan hal ini: http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • Proyek ini didukung oleh Adobe dan memiliki banyak aktivitas
  • Dokumentasi bisa lebih baik

  • dukungan platform Mereka mendukung Windows, Mac dan Linux. Paket penginstal juga dapat dibuat. Saya hanya mengujinya pada Win dan Mac, itu berfungsi dengan baik.

  • dukungan fitur html5, css3, js. Video Html5 tidak berfungsi dengan baik, tetapi sangat mudah untuk diaktifkan (secara default ffmpegsumo.dll tidak akan disalin ke penginstal, jika Anda mengubah skrip untuk menyalinnya, itu akan berfungsi).
  • bilah menu fitur asli , 'buka file dengan', akses sistem file. Saya tidak menggunakan semua ini, karena yang saya butuhkan adalah komunikasi dengan proses simpul.
  • diperpanjang suatu nodejs dibangun, dan Anda dapat berkomunikasi dengan node dari aplikasi web Anda. Dengan cara ini, Anda dapat menggunakan simpul untuk mengakses sistem file dll.
  • arsitektur Proyek ini diatur dengan baik, menjaga pemisahan yang bagus antara proyek shell dan aplikasi web Anda sendiri yang berjalan di dalamnya. Dalam aplikasi Anda sendiri, objek appshell global tersedia yang memberi Anda akses ke fungsionalitas kurung (akses sistem file, komunikasi dengan proses simpul, ...).
Karel Braeckman
sumber
6
Hal yang membuat saya menjauh dari Brackes-shell adalah tinjauan mereka sendiri. github.com/adobe/brackets-shell "Catatan: Shell-kurung hanya dikelola untuk digunakan oleh proyek Kurung. Meskipun beberapa orang pasti berhasil menggunakannya sebagai shell aplikasi untuk proyek lain, kami tidak menyediakan resmi apa pun mendukung untuk itu dan kami belum melakukan banyak pekerjaan untuk membuat shell aplikasi mudah digunakan kembali. Banyak orang akan merasa lebih mudah untuk menggunakan proyek seperti node-webkit, yang lebih umum dengan desain. "
John W. Clark
5

Satu hal yang perlu diperhatikan (jika Anda peduli), adalah bahwa Elektron secara resmi tidak mendukung Windows Vista. Pangsa pasar Vista sekitar setengah antara OSX 10.9 dan 10.10 (keduanya didukung sepenuhnya oleh Electron). Vista juga masih didukung oleh Microsoft hingga 2017.

NW.js berfungsi dengan baik di Vista, serta OSX 10.9+. NW.js bekerja di Ubuntu, Debian, Zorin, Manjaro, Arch, dan sebagian besar OS Linux berbasis Debian lainnya. Electron telah menolak PR untuk memperbaiki bug spesifik Ubuntu pada platform mereka yang memprihatinkan.

NW.js juga berfungsi di XP. Saat ini 18% pasar masih di XP. Jadi jika Anda aplikasi desktop lebih bersifat umum atau ingin memiliki akses ke pengadopsi yang terlambat masih di XP, Anda mungkin lebih baik dengan NW.js (0.14.7) karena Electron hanya mendukung Win 7 dan lebih tinggi.

Jika Anda menggunakan NW.js 0.12.3 Anda juga dapat mendukung OSX 10.6+ dan versi yang sangat lama dari Linux berbasis Debian seperti Ubuntu, dan Win XP +. Disarankan agar Anda melakukan build khusus hanya untuk sistem lawas itu dan menggunakan versi NW.js yang lebih baru untuk OS yang lebih baru.

Jaredcheeda
sumber
1
Chrome tidak menghentikan dukungan setelah MS melakukannya - dukungan diperluas hingga akhir 2015 - chrome.blogspot.com/2015/04/…
Karol Klepacki
electron (atom-shell) tidak berjalan pada RHEL 6.6 dan di bawahnya, dan kode sumber tidak dapat dikompilasi pada distro-distro itu.
Michael Kruglos
Anda dapat menggunakan nw-builder untuk membuat versi MAS. Ada arm build untuk NW.js juga.
Jaredcheeda