Mengemas aplikasi web node.js sebagai aplikasi desktop biasa [ditutup]

86

Saya telah mencari sedikit tetapi tidak dapat menemukan alat yang ada untuk ini.

Saya memiliki server web node.js yang dirancang untuk berjalan di komputer Anda sendiri yang melakukan beberapa hal keren untuk Anda. Akan sangat luar biasa jika saya dapat mengklik dua kali MySnazzyThing.appdaripada menginstal nodejs, dan npm dan berjalan node mysnazzyapp.jspada baris perintah.

The .appeksekusi akan spool up server node dan membuka WebKit asli sederhana window yang akan menunjukkan apa yang biasanya berada di localhost:3000jika saya berjalan di baris perintah.

Aplikasi asli ini kemudian dapat, katakanlah, didistribusikan melalui toko aplikasi mac. Dan bam, aplikasi desktop node.js.

Apakah ada alat seperti itu? Atau adakah alasan teknis yang membuat ini tidak berfungsi seperti yang saya bayangkan?

Alex Wayne
sumber

Jawaban:

91

Opsi 1: elektron (alias kulit atom)

Ini adalah shell yang digunakan editor Atom github. Ini sangat mirip dengan node-webkit, meskipun ini akan menjalankan skrip terlebih dahulu, dan Anda harus membuat tampilan / jendela untuk pengguna. Ada beberapa perbedaan kecil lainnya, tetapi ada baiknya untuk diperhatikan.


Opsi 2: NW.js sebelumnya node-webkit

Intinya adalah bahwa itu pada dasarnya memperluas mesin JS bagi Anda untuk menulis aplikasi berbasis web yang mendukung model objek diperpanjang node, dan modul ... Anda kemudian mengemas modul package.json start.html dan file js Anda ke dalam zip (dengan .nw extension) dan menjalankannya dengan nw (.exe) .. ada windows, mac dan linux build tersedia.


Opsi 3: Carlo chrom (ium) shell dari Node.

Ini akan memungkinkan Anda untuk meluncurkan Chrome yang dipasang secara lokal sebagai shell yang dapat terhubung ke aplikasi server yang berjalan secara lokal. Itu memang membutuhkan krom lokal, tetapi sangat mirip dengan apa yang diminta.


Opsi 4: MacGapNode (Khusus OSX)

MacGap dengan integrasi Node (Tampaknya mulai basi)


Selain: Layanan ...

Saya tidak dapat berbicara untuk OSX dalam hal ini sebagai .App, tetapi mungkin juga untuk membuat layanan latar belakang menginstal di NodeJS dan tautan ke situs "lokal" di desktop. Sebagian besar browser memiliki opsi untuk tidak menampilkan semua fitur (saya tahu khususnya firefox).

Saya tahu pertanyaan Anda adalah khusus untuk OSX, tetapi di windows Anda dapat menggunakan NSSM untuk menjalankan apa pun sebagai layanan, dan saya telah menggunakannya untuk layanan berbasis NodeJS di windows. Saya pikir beberapa opsi lain di atas lebih baik tergantung pada kebutuhan Anda.


Dihapus:


Jawaban ini disalin untuk beberapa pertanyaan, sebagian besar referensi ini untuk kemudahan memperbarui.

Pelacak 1
sumber
Untuk OSX dan Linux github.com/crcn/nexe juga terlihat seperti solusi.
robocat
Sepertinya node-webkit adalah pemenang di antara ini. Basis pengembang besar, dokumentasi bagus, didukung oleh Intel.
Dan
gerty, terima kasih ... Saya memperbarui jawaban saya untuk menyertakan nexe, serta menjadikan node-webkit sebagai tempat teratas ... sepertinya appjs mungkin menjadi sedikit basi.
Pelacak1
Untuk OSX checkout Macgap sehingga Anda dapat mengirimkan ke toko aplikasi. Node webkit ditolak karena menggunakan api yang berpotensi kedaluwarsa di masa mendatang.
Michael J. Calkins
Hmm, sekarang ada idenya. Jalankan aplikasi sebagai server di latar belakang, lalu buka saja jendela browser untuk itu (mis. Bagaimana saya bisa meluncurkan browser tanpa bingkai jendela atau tab / bilah alamat ). Anda tidak mendapatkan banyak kendali atas jendela dengan cara itu (mis. Browser menangani item menu seperti file, edit, view, dll, dan pengguna masih memiliki akses ke hal-hal seperti browser print, zoom, dan in-page fungsi pencarian), tetapi pada dasarnya tidak diperlukan kerangka kerja tambahan.
Ajedi32
8

Saya sarankan melihat ke Topcube, tujuannya adalah untuk "Memberi pengembang node cara untuk memiliki GUI desktop ke server node mereka menggunakan HTML5 + CSS3 sebagai platform GUI." Topcube di github .

Brian Heese
sumber
1
Topcube sepertinya tidak didukung lebih lama
Shamoon
Ya, saya sarankan untuk melihat Titanium. Ini bukan Node.js tetapi berbasis JS dan lintas platform untuk PC dan pengembangan aplikasi seluler. appcelerator.com/products/…
Brian Heese
Tautan Titanium itu telah membusuk. Saya kira yang satu ini yang Anda maksud: docs.appcelerator.com/titanium/2.0/index.html Situs web mereka yang padat pemasaran pasti menyulitkan untuk melihat apa produk mereka, atau perawatannya.
Grumdrig
Catatan: Bagian desktop Titanium tidak akan dikembangkan / didukung lagi.
Sri Kadimisetty
1
Pengembangan Titanium Desktop telah diambil alih oleh grup pengembang baru: tidesdk.org
Motin
-1

Saat ini ada banyak cara untuk mencapai hal ini.

Pemenang yang jelas dalam hal pengemasan aplikasi node + html5, saat ini adalah Electron (digunakan oleh Atom, VSCode, Slack, Discord, dll).

Anda juga dapat menggunakan bahasa lain yang dipaketkan sebagai aplikasi (menggunakan alat untuk bahasa / tumpukan tersebut), dan memeriksa pemasangan node, meluncurkan skrip "server" dengan node, lalu meluncurkan browser default (atau beberapa komponen tampilan web, dengan beberapa cara lain), akhirnya mengatur lokasi ke layanan node. Ini adalah metode yang sangat ringan dan efisien, namun tidak terintegrasi dengan baik dengan OS sebagai solusi seperti Electron.

Pesaing utama Electron di sini, adalah NW.js. Sejauh yang saya tahu, fitur utama yang dimiliki NW.js yang belum dimiliki oleh Electron adalah kompilasi / obfuscation. Sementara Electron membuat pembaruan otomatis menjadi mudah.

https://electron.atom.io/ https://nwjs.io/

Devin McKeon
sumber