
Electron dan NW.js ialah dua rangka kerja yang mantap untuk membina aplikasi desktop merentas platform menggunakan teknologi web. Kedua-duanya menggabungkan Chromium dan Node.js, membolehkan pembangun mencipta aplikasi dengan HTML, CSS, JavaScript serta rangka kerja bahagian hadapan yang biasa digunakan seperti React, Vue dan Angular.
NW.js sebenarnya ialah rangka kerja yang lebih lama. Pada asalnya dikenali sebagai node-webkit, projek ini bermula pada 2011 dan tersedia kepada umum menjelang 2012. Electron menyusul pada 2013, pada mulanya dibangunkan oleh GitHub untuk penyunting kod Atom. Walaupun muncul kemudian, Electron akhirnya menjadi rangka kerja yang lebih meluas digunakan untuk aplikasi desktop arus perdana.
Kini, Electron menjadi asas kepada aplikasi utama seperti Visual Studio Code, Slack, Discord, Notion dan Figma. Ia juga mendapat manfaat daripada penyertaan syarikat teknologi utama serta tadbir urus melalui OpenJS Foundation. Di WebCatalog, kami memilih Electron sebagai asas aplikasi desktop merentas platform kami.
Sementara itu, kehadiran NW.js yang dapat dilihat dalam kalangan aplikasi produktiviti dan perniagaan utama jauh lebih kecil. Penggunaannya yang berterusan amat ketara dalam industri permainan, termasuk permainan indie dan judul yang dibina menggunakan RPG Maker.
Jadi, bagaimanakah kedua-dua rangka kerja ini dibandingkan, dan yang manakah patut dipilih oleh pembangun?
Electron lwn. NW.js Sepintas Lalu
Kedua-dua rangka kerja membolehkan pembangun membina aplikasi desktop menggunakan teknologi web, tetapi pendekatan mereka terhadap seni bina aplikasi, penyepaduan natif dan keselamatan adalah berbeza.
| Ciri | Electron | NW.js |
|---|---|---|
| Mula diperkenalkan | 2013 | 2011–2012 |
| Pembangun asal | GitHub | Intel Open Source Technology Center |
| Tadbir urus dan ekosistem | OpenJS Foundation, dengan penyumbang korporat utama | Diselenggara oleh komuniti, berasal daripada Intel |
| Enjin pelayar | Chromium | Chromium |
| Persekitaran masa jalan JavaScript | Node.js | Node.js |
| Platform desktop | macOS, Windows, Linux | macOS, Windows, Linux |
| Seni bina | Proses utama dan proses pemapar | Seni bina Chromium dengan penyepaduan Node.js secara langsung |
| Akses Node.js | Proses utama dan penyepaduan pemapar yang terkawal | Akses langsung daripada halaman aplikasi yang layak |
| Saiz aplikasi | Agak besar | Agak besar |
| Prestasi | Bergantung pada aplikasi | Bergantung pada aplikasi |
| Keselamatan | Pengkotakpasiran, pengasingan konteks, IPC | Akses Node yang boleh dikonfigurasi dan pengasingan bingkai |
| Penggunaan | Digunakan secara meluas dalam aplikasi desktop arus perdana | Ekosistem lebih kecil, penggunaan yang ketara dalam permainan |
| Sokongan mudah alih | Tiada sokongan rasmi | Tiada sokongan rasmi |
Perbezaan yang paling penting bukanlah prestasi atau saiz aplikasi. Kedua-dua rangka kerja menyertakan Chromium dan Node.js, jadi keperluan sumbernya secara umumnya setanding. Sebaliknya, perbezaan utama melibatkan seni bina, sempadan keselamatan, perkakasan pembangunan dan sokongan ekosistem.
Sejarah: NW.js Muncul Dahulu, tetapi Electron Menjadi Lebih Popular
NW.js ialah antara projek terawal yang menunjukkan bahawa pembangun boleh menggabungkan Node.js dengan teknologi pelayar untuk mencipta aplikasi desktop. Pada asalnya dinamakan node-webkit, ia lahir daripada Intel Open Source Technology Center, dengan pembangunan bermula pada 2011 dan keluaran awam tersedia menjelang 2012.
Idea utamanya mudah: membolehkan JavaScript yang berjalan dalam persekitaran seakan pelayar mengakses modul Node.js secara langsung. Ini membolehkan pembangunan aplikasi desktop menggunakan teknologi web yang biasa digunakan tanpa membina antara muka natif tradisional.
Electron muncul pada 2013 dengan nama Atom Shell. GitHub membangunkannya sebagai asas kepada Atom, penyunting kodnya, yang memasuki fasa beta awam pada 2014. Electron direka sebagai alternatif kepada rangka kerja desktop berasaskan web yang tersedia pada masa itu, termasuk node-webkit dan Chromium Embedded Framework.
Walaupun kedua-dua rangka kerja berkongsi matlamat untuk memudahkan pembangun web membangunkan aplikasi desktop, Electron menggunakan seni bina berbeza yang memisahkan fungsi peringkat aplikasi daripada kandungan web. Pendekatan ini menjadi semakin menarik apabila pembangun mula membina aplikasi yang lebih kompleks.
Electron kemudiannya mula digunakan oleh syarikat pemula dan syarikat teknologi utama. GitHub, Slack, Microsoft dan organisasi lain menyumbang kepada pembangunan serta ekosistemnya. Pada 2019, Electron menyertai OpenJS Foundation, beralih daripada pemilikan GitHub kepada sebuah yayasan sumber terbuka yang neutral.
Kini, Electron beroperasi di bawah model tadbir urus yang mantap dengan kumpulan kerja yang merangkumi keselamatan, keluaran, API, naik taraf Chromium dan Node.js serta bidang lain. Jurutera yang dikaitkan dengan organisasi seperti Microsoft dan Slack telah mengambil bahagian dalam penyelenggaraan dan tadbir urusnya.
NW.js juga mempunyai asal usul korporat kerana dicipta di Intel. Walau bagaimanapun, ekosistem semasanya lebih kecil dan tidak mempunyai penyertaan yang begitu meluas dan ketara daripada syarikat perisian desktop utama.
Sejarah ini menggambarkan satu perbezaan penting: menjadi yang pertama tidak menjamin penguasaan jangka panjang. NW.js membantu mengukuhkan konsep membina aplikasi desktop dengan Chromium dan Node.js, tetapi Electron menarik ekosistem pembangun, penyelenggara dan pengguna komersial yang lebih luas.
Untuk latar belakang lanjut, lihat retrospektif 10 tahun Electron, penyertaan Electron dalam OpenJS Foundation dan sejarah projek node-webkit.
Seni Bina: Proses Utama lwn. Penyepaduan Node.js Secara Langsung
Electron menggunakan seni bina berbilang proses yang diwarisi daripada Chromium. Setiap aplikasi Electron mempunyai proses utama yang bertanggungjawab mengurus tetingkap, peristiwa kitar hayat aplikasi, penyepaduan sistem pengendalian dan fungsi berkeistimewaan. Kandungan web berjalan dalam proses pemapar yang berasingan, yang berkomunikasi dengan proses utama melalui komunikasi antara proses (IPC).
Ini mewujudkan pemisahan antara logik aplikasi dengan kod antara muka pengguna. Proses pemapar biasanya berkelakuan seperti persekitaran pelayar konvensional, manakala proses utama mengendalikan operasi yang memerlukan akses kepada Node.js atau API natif. Electron turut menyediakan skrip pramuat dan API contextBridge, yang membolehkan pembangun mendedahkan fungsi terpilih kepada pemapar tanpa memberikan akses tanpa sekatan kepada Node.js.
NW.js mengambil pendekatan yang berbeza. Ia direka untuk menyediakan fungsi Node.js secara langsung dalam aplikasi web. Pada halaman aplikasi yang layak, pembangun boleh mengakses modul Node.js menggunakan API JavaScript yang biasa digunakan tanpa perlu menyediakan antara muka IPC yang berasingan untuk setiap operasi.
Sebagai contoh, aplikasi NW.js yang dipakejkan secara setempat boleh menggunakan Node.js secara langsung daripada skrip yang berjalan pada halamannya:
const fs = require('node:fs');
const content = fs.readFileSync('notes.txt', 'utf8');
document.body.textContent = content;
Kesederhanaan ini ialah salah satu kelebihan utama NW.js. Pembangun boleh menggabungkan API pelayar dan fungsi Node.js tanpa semestinya memisahkan kod mereka kepada lapisan aplikasi yang berbeza. NW.js juga menyokong konteks JavaScript yang berasingan dan mod konteks campuran, memberikan fleksibiliti dalam cara fungsi pelayar dan Node.js berinteraksi.
Electron secara umumnya menggalakkan pemisahan yang lebih jelas. Untuk membaca fail daripada pemapar, aplikasi Electron yang selamat lazimnya akan mendedahkan operasi terhad melalui skrip pramuat dan mengendalikan akses sistem fail dalam proses utama.
Pendekatan itu memerlukan kod tambahan, tetapi menjadikan sempadan antara fungsi aplikasi berkeistimewaan dengan kandungan web lebih jelas. Bagi aplikasi yang kompleks, pemisahan ini boleh meningkatkan kebolehselenggaraan dan menjadikan tanggungjawab keselamatan lebih mudah difahami.
Tiada seni bina yang lebih baik untuk semua keadaan. NW.js mungkin terasa lebih mudah untuk aplikasi kecil atau projek yang mendapat manfaat daripada penyepaduan Node.js secara langsung. Electron menyediakan struktur yang amat berguna apabila kerumitan aplikasi meningkat.
Prestasi, Penggunaan Memori dan Saiz Aplikasi
Oleh sebab kedua-dua Electron dan NW.js menyertakan Chromium dan Node.js, tiada satu pun rangka kerja yang mempunyai kelebihan seni bina semula jadi yang setanding dengan perbezaan saiz antara Electron dengan Tauri.
Malah aplikasi ringkas yang dibina dengan mana-mana rangka kerja ini perlu mengedarkan persekitaran masa jalan yang agak besar. Kedua-dua rangka kerja juga boleh mewujudkan berbilang proses Chromium, yang meningkatkan penggunaan memori tetapi membantu mengasingkan beban kerja dan meningkatkan daya tindak balas.
Penyepaduan langsung NW.js antara Node.js dengan persekitaran pelayar boleh mengurangkan keperluan IPC dalam operasi tertentu. Bergantung pada konfigurasi konteks, kod JavaScript boleh berinteraksi dengan fungsi Node.js secara langsung, menjadikan sesetengah operasi lebih mudah dan berpotensi mengurangkan overhed komunikasi.
Electron memisahkan operasi berkeistimewaan daripada kod pemapar, yang melibatkan IPC apabila merentasi sempadan proses. Walau bagaimanapun, ini tidak bermakna Electron sememangnya lebih perlahan. Overhed tambahan mungkin boleh diabaikan untuk interaksi antara muka pengguna biasa, dan pemisahan ini boleh membantu menjauhkan kerja bahagian belakang yang memerlukan banyak sumber daripada pemapar.
Dalam amalan, prestasi aplikasi sangat bergantung pada cara pembangun menggunakan Chromium, mengurus proses latar belakang, melaksanakan pemaparan dan mengendalikan keadaan aplikasi.
Untuk perbandingan yang bermakna, pembangun patut menilai:
- Masa permulaan: Seberapa cepat aplikasi boleh mula digunakan secara interaktif.
- Penggunaan memori: Penggunaan ketika melahu dan penggunaan memori di bawah beban kerja yang realistik.
- Penggunaan CPU: Penggunaan sumber semasa pemaparan dan operasi latar belakang.
- Saiz aplikasi: Saiz muat turun dan keperluan storan selepas pemasangan.
- Daya tindak balas: Sejauh mana antara muka berfungsi dengan baik semasa tugasan yang memerlukan banyak sumber.
Tiada satu pun rangka kerja patut dianggap semestinya lebih pantas tanpa mengukur aplikasi yang mewakili penggunaan sebenar. Perbezaan versi Chromium, konfigurasi binaan, modul natif dan seni bina aplikasi semuanya boleh mempengaruhi hasil penanda aras.
Bagi pembangun yang matlamat utamanya ialah mengurangkan saiz aplikasi, beralih daripada Electron kepada NW.js tidak mungkin memberikan penjimatan ketara seperti yang diperoleh dengan beralih kepada rangka kerja yang menggunakan webview sistem.
Keselamatan: Pendekatan Berbeza terhadap Akses Natif
Keselamatan ialah salah satu perbezaan paling penting antara Electron dengan NW.js, khususnya untuk aplikasi yang memaparkan laman web jauh atau kandungan lain yang tidak dipercayai.
Electron menyediakan beberapa mekanisme keselamatan, termasuk pengkotakpasiran Chromium, pengasingan konteks dan keupayaan untuk melumpuhkan penyepaduan Node.js dalam proses pemapar. Versi Electron moden mendayakan perlindungan penting secara lalai, dan dokumentasi keselamatan projek ini amat mengesyorkan agar API natif berkeistimewaan diasingkan daripada kandungan jauh.
NW.js membenarkan akses yang lebih langsung kepada Node.js daripada halaman aplikasi yang layak, yang boleh memudahkan pembangunan tetapi juga memerlukan pertimbangan teliti tentang kandungan yang menerima keistimewaan tersebut.
NW.js membezakan antara bingkai biasa dengan bingkai yang didayakan Node. Ia juga menyokong tetapan seperti node-remote untuk mengawal URL jauh yang boleh mengakses fungsi Node.js. Komponen webviewnya boleh memaparkan kandungan tetamu dalam proses berasingan tanpa memberikan keistimewaan aplikasi kepadanya secara automatik.
| Pertimbangan keselamatan | Electron | NW.js |
|---|---|---|
| Akses Node.js berkeistimewaan | Terutamanya proses utama dan jambatan terkawal | Tersedia secara langsung dalam konteks aplikasi yang layak |
| Pengasingan kandungan jauh | Pemapar dan kandungan web dalam kotak pasir | Bingkai biasa dan webview terasing |
| Pendedahan API natif | IPC dan contextBridge | Konteks Node dan akses yang boleh dikonfigurasi |
| Pengkotakpasiran Chromium | Disokong dengan tetapan lalai yang selamat | Bergantung pada jenis bingkai dan konfigurasi |
| Tanggungjawab pembangun | Mengesahkan IPC, navigasi, kebenaran dan API yang didedahkan | Mengawal bingkai berkeistimewaan, akses Node dan kandungan jauh |
Electron mahupun NW.js tidak patut secara automatik dianggap sebagai pelayar kegunaan umum yang selamat. Aplikasi yang memaparkan sebarang laman web pihak ketiga memerlukan kawalan keselamatan tambahan, tanpa mengira rangka kerja yang digunakan.
Bagi aplikasi yang dibangunkan sepenuhnya berasaskan kandungan setempat yang dipercayai, penyepaduan langsung NW.js mungkin memudahkan kerja. Bagi aplikasi yang memerlukan pemisahan kukuh antara kod berkeistimewaan dengan kandungan web yang tidak dipercayai, seni bina Electron boleh menjadikan sempadan tersebut lebih jelas.
Akhirnya, keselamatan bergantung pada reka bentuk aplikasi, konfigurasi, pengurusan kebergantungan dan kepantasan pembangun menerapkan kemas kini keselamatan.
Penggunaan: Electron Mendominasi Aplikasi Desktop Arus Perdana
Salah satu perbezaan paling ketara antara Electron dengan NW.js ialah tahap penggunaannya dalam kalangan pembangun perisian desktop.
Walaupun merupakan projek yang lebih baharu, Electron telah mengukuhkan kedudukannya sebagai rangka kerja arus perdana untuk aplikasi desktop kegunaan sebenar. Penggunaannya merangkumi alat pembangunan, platform komunikasi, perisian produktiviti, aplikasi reka bentuk dan utiliti perniagaan.
Beberapa contoh yang terkenal termasuk:
| Syarikat | Aplikasi Electron |
|---|---|
| Microsoft | Visual Studio Code |
| Salesforce | Slack |
| Discord | Discord |
| Notion | Notion |
| Figma | Figma |
| GitHub | GitHub Desktop |
| Signal | Signal Desktop |
| Postman | Postman |
Produk ini menunjukkan bahawa Electron boleh menyokong aplikasi desktop canggih yang digunakan oleh berjuta-juta orang. Penggunaannya turut menyumbang kepada ekosistem pustaka, dokumentasi, alat penyahpepijatan dan penyelesaian pembungkusan yang luas.
Penyertaan korporat ialah satu lagi kelebihan. Electron pada asalnya dibangunkan oleh GitHub dan kemudiannya menarik sumbangan daripada jurutera di syarikat teknologi utama. Tadbir urusnya melalui OpenJS Foundation menyediakan struktur organisasi untuk kerjasama, penyelenggaraan keselamatan, pengurusan keluaran dan pembangunan jangka panjang.
Ini tidak bermakna setiap syarikat yang menggunakan Electron menyumbang secara langsung kepada rangka kerja itu, dan juga tidak menjamin bahawa Electron akan sentiasa diselenggara dengan lebih baik. Walau bagaimanapun, rangka kerja yang digunakan secara meluas dengan kumpulan pihak berkepentingan komersial yang pelbagai boleh mendapat manfaat daripada pelaburan kejuruteraan bersama dan pengalaman penggunaan sebenar.
NW.js mempunyai profil penggunaan yang berbeza. Walaupun ia telah digunakan untuk membina aplikasi desktop, agak sedikit aplikasi produktiviti atau perniagaan moden yang terkemuka menyatakan secara terbuka bahawa mereka menggunakan NW.js sebagai rangka kerja. Banyak aplikasi yang lazimnya disebut dalam pameran NW.js ialah projek lama, menjadikan senarai tersebut kurang berguna untuk menilai penggunaannya pada masa kini.
Ini tidak bermakna NW.js telah ditinggalkan atau tidak digunakan. Ia terus menerima keluaran yang menggabungkan versi Chromium dan Node.js yang dikemas kini. Walau bagaimanapun, ekosistemnya yang dapat dilihat dalam perisian desktop arus perdana jauh lebih kecil berbanding Electron.
Bagi pembangun yang memilih rangka kerja untuk aplikasi komersial baharu, perbezaan ini penting. Ekosistem yang lebih besar secara umumnya memudahkan pencarian penyelesaian sedia ada, pengambilan pembangun dengan pengalaman yang berkaitan dan penyelesaian masalah dalam penggunaan sebenar.
Populariti Electron tidak menjadikannya lebih unggul dari segi teknikal dalam semua aspek, tetapi penggunaan yang lebih luas dan penyertaan korporatnya ialah kelebihan praktikal yang tidak patut diabaikan.
Anda boleh meneroka lebih banyak contoh dalam pameran aplikasi rasmi Electron.
Bidang yang Masih Popular dengan NW.js: Permainan Indie
Walaupun NW.js tidak banyak diwakili dalam kalangan aplikasi produktiviti moden utama, ia terus mempunyai kehadiran yang ketara dalam pembangunan permainan, khususnya dalam kalangan pembangun bebas.
Salah satu sebabnya ialah penyepaduannya dengan alat pembangunan permainan seperti RPG Maker MV. Permainan yang dicipta dengan RPG Maker MV boleh menggunakan NW.js sebagai persekitaran masa jalan desktop, membolehkan permainan berasaskan HTML5 dan JavaScript berjalan sebagai aplikasi kendiri.
Ini bermakna pembangun mungkin menggunakan NW.js secara tidak langsung melalui enjin permainan mereka, bukannya memilihnya sebagai rangka kerja desktop kegunaan umum.
Terdapat juga bukti bebas bahawa NW.js terus muncul dalam permainan yang baru dikeluarkan. SteamDB menjejak permainan yang menggunakan NW.js dengan memeriksa tanda pengenal teknologi dalam fail yang diedarkan secara automatik. Pangkalan datanya merangkumi permainan yang dikeluarkan pada 2025 dan 2026, memberikan bukti penggunaan berterusan dan bukannya bergantung sepenuhnya pada pameran aplikasi yang mungkin sudah lapuk.
Contoh yang dikaitkan dengan NW.js termasuk:
| Permainan | Genre | Keluaran Steam |
|---|---|---|
| Look Outside | RPG seram | Mac 2025 |
| OMORI | RPG | Disember 2020 |
| CrossCode | RPG aksi | September 2018 |
| Fear & Hunger | RPG seram | Disember 2018 |
| Ib | Pengembaraan seram | April 2022 |
| Saihate Station | Pengembaraan | Mac 2025 |
| Sheepy: A Short Adventure | Platformer | Februari 2024 |
Sumber: Pengesanan teknologi NW.js oleh SteamDB.
SteamDB mengenal pasti teknologi secara automatik daripada fail permainan, jadi pengesanan tertentu mungkin mengandungi ralat atau mewakili kebergantungan yang disertakan, bukannya persekitaran masa jalan yang sengaja dipilih oleh pembangun. Kehadiran NW.js juga tidak menentukan versi rangka kerja yang digunakan oleh sesuatu permainan atau sama ada pembangunnya menyelenggarakannya secara aktif.
Namun begitu, contoh ini menunjukkan bahawa NW.js kekal sebagai sebahagian daripada ekosistem pembangunan permainan moden.
Ini mewujudkan perbezaan yang menarik antara kedua-dua rangka kerja. Electron amat menonjol dalam aplikasi desktop arus perdana, khususnya alat produktiviti dan pembangunan. NW.js mempunyai kehadiran yang lebih kecil dalam kategori tersebut tetapi terus muncul dalam permainan yang dibangunkan secara bebas.
Bagi pembangun yang membina perisian perniagaan, alat komunikasi atau aplikasi produktiviti yang kompleks, ekosistem Electron mungkin lebih relevan. Bagi pembangun yang bekerja dengan RPG Maker atau menyelenggara permainan yang dibina berasaskan NW.js, rangka kerja yang lebih lama ini kekal sebagai pilihan yang mantap dan praktikal.
Pengalaman Pembangunan, Perkakasan Pembangunan dan Penyelenggaraan Jangka Panjang
Kedua-dua rangka kerja menyokong teknologi bahagian hadapan moden dan pakej Node.js, menjadikannya mudah digunakan oleh pembangun yang biasa dengan pembangunan web. Walau bagaimanapun, Electron mempunyai ekosistem yang jauh lebih besar yang tertumpu pada perisian desktop kegunaan umum.
NW.js menawarkan model pembangunan yang agak mudah. Aplikasi ringkas boleh ditakrifkan menggunakan manifes package.json dan titik masuk HTML. Pembangun boleh mengakses modul Node.js secara langsung daripada halaman aplikasi yang layak dan menggunakan API NW.js untuk mengurus tetingkap, menu, dulang sistem dan fungsi desktop lain.
Electron biasanya memerlukan lebih banyak struktur awal. Pembangun mencipta titik masuk proses utama, mengkonfigurasi tetingkap aplikasi dan mengurus komunikasi antara proses utama dengan proses pemapar. Ini mungkin terasa lebih rumit untuk aplikasi kecil, tetapi turut menggalakkan pembangun menyusun fungsi aplikasi kepada lapisan yang berbeza.
Electron mendapat manfaat daripada alat yang mantap seperti Electron Forge dan electron-builder, yang menyediakan penyelesaian untuk pembungkusan, penandatanganan, pengedaran dan pengemaskinian aplikasi. Penggunaannya yang meluas juga bermakna pembangun boleh menemui lebih banyak contoh dan perbincangan komuniti tentang masalah pembangunan desktop lanjutan.
NW.js menyediakan alat pembungkusan seperti nw-builder dan menyokong pembungkusan manual. Ia juga mendedahkan API yang berasal daripada seni bina aplikasi dan sambungan Chromium, yang boleh menarik bagi projek yang sudah menggunakan API tersebut.
Kedua-dua rangka kerja memerlukan pembangun mengendalikan perbezaan sistem pengendalian, penandatanganan kod, keserasian modul natif dan kemas kini aplikasi. Kedua-duanya tidak menghapuskan kerumitan mengedarkan perisian desktop untuk kegunaan sebenar.
Saiz dan komposisi ekosistem menjadi amat penting untuk penyelenggaraan jangka panjang. Pasukan yang membina aplikasi komersial mungkin memerlukan penyelesaian untuk penandatanganan kod, kemas kini automatik, pelaporan ranap, kebolehcapaian, penyepaduan natif dan pepijat khusus platform.
Penggunaan Electron yang lebih luas dalam kalangan syarikat perisian utama memudahkan pencarian amalan yang mantap dan penyelesaian boleh guna semula bagi banyak keperluan ini. NW.js masih berkeupayaan, tetapi pembangun mungkin menemui lebih sedikit contoh atau penyepaduan yang diselenggara untuk fungsi desktop khusus.
Bagi projek yang dijangka diselenggara selama bertahun-tahun, kematangan ekosistem dan pelaburan berterusan wajar diberi pertimbangan yang sama seperti API rangka kerja atau hasil penanda aras.
Mengapa Kami Memilih Electron di WebCatalog
Di WebCatalog, kami memilih Electron kerana seni binanya amat selaras dengan keperluan produk kami. WebCatalog membolehkan pengguna menukar laman web menjadi aplikasi desktop, mengurus berbilang akaun secara berasingan dan menyusun aplikasi mereka merentas macOS, Windows dan Linux.
Tidak seperti pembangun yang membina aplikasi desktop konvensional dengan bahagian hadapan yang dikawal sepenuhnya oleh mereka, kami perlu menyokong laman web yang dicipta oleh ribuan pembangun berbeza. Laman web ini mungkin bergantung pada sistem pengesahan, mekanisme storan, API pelayar, ciri media dan aplikasi JavaScript kompleks yang berbeza.
Kedua-dua Electron dan NW.js menggunakan Chromium, jadi kedua-duanya menawarkan kelebihan yang serupa dari segi keserasian enjin pelayar. Perbezaannya bagi kami ialah tahap kawalan yang disediakan oleh rangka kerja terhadap tetingkap aplikasi, sesi pelayar, navigasi, kebenaran serta pemisahan antara kod aplikasi berkeistimewaan dengan kandungan jauh.
Electron menyediakan set API yang matang untuk keperluan ini. Antara muka BrowserWindow, webContents dan session membolehkan kami mengurus tingkah laku pelayar pada aras yang agak rendah. Petak sesi berterusan amat penting kerana membolehkan pengguna kekal dilog masuk ke berbilang akaun pada laman web yang sama tanpa berkongsi kuki dan data sesi lain.
NW.js juga menyokong webview terbenam, pengurusan kuki dan petak storan, jadi keupayaan ini bukan eksklusif kepada Electron. Walau bagaimanapun, proses aplikasi khusus Electron dan API pengurusan pelayar yang mantap menyediakan seni bina yang sesuai dengan keperluan kami.
Keselamatan ialah satu lagi pertimbangan penting. Oleh sebab WebCatalog memaparkan laman web pihak ketiga yang tidak kami kawal, kami perlu memisahkan kandungan jauh daripada fungsi aplikasi berkeistimewaan dengan teliti. Model proses Electron, pengasingan konteks dan mekanisme IPC membantu kami mengekalkan pemisahan tersebut, walaupun kami masih perlu melaksanakan dan menyelenggara sendiri kawalan keselamatan yang sesuai.
Akhir sekali, ekosistem Electron menjadikan pembangunan dan penyelenggaraan merentas platform lebih praktikal. Aplikasi kami perlu berjalan pada macOS, Windows dan Linux, dengan sokongan untuk ciri khusus platform, pembungkusan, penandatanganan dan kemas kini. Alat, dokumentasi dan penggunaan Electron yang meluas dalam dunia sebenar menyediakan asas yang kukuh untuk kerja ini.
Kami juga menghargai ekosistem pembangunan jangka panjang Electron. Penyertaan syarikat teknologi utama dan tadbir urusnya melalui OpenJS Foundation memberi kami keyakinan yang lebih tinggi terhadap ketersediaan sumber teknikal, penyelenggaraan keselamatan dan sokongan komuniti seiring perkembangan produk kami.
Kami mengakui kelemahan Electron, khususnya saiz aplikasi dan keperluan sumbernya. Daripada menggantikan rangka kerja ini, kami terus meneroka cara untuk mengurangkan overhed yang tidak perlu. Sebagai contoh, kami telah melaksanakan klon APFS untuk mengurangkan penggunaan cakera bagi aplikasi Mac yang dijana.
Keputusan kami bukan berdasarkan anggapan bahawa NW.js tidak mampu menyokong perisian yang canggih. Kedua-dua rangka kerja menawarkan kekonsistenan Chromium yang kami hargai. Bagi WebCatalog, seni bina Electron, kawalan keselamatan, penggunaan arus perdana yang lebih luas dan ekosistem kejuruteraan yang mantap menjadikannya pilihan yang lebih sesuai.
Keadaan yang Masih Sesuai untuk NW.js
Walaupun Electron mempunyai ekosistem yang lebih besar, NW.js mengekalkan beberapa kelebihan bermakna yang patut dipertimbangkan oleh pembangun.
Ciri yang paling membezakannya ialah keupayaan untuk mengakses Node.js secara langsung daripada konteks pelayar yang layak. Bagi pembangun yang menukar aplikasi web sedia ada kepada aplikasi desktop, ini boleh menyediakan cara yang mudah untuk memperkenalkan akses sistem fail, penyepaduan sistem pengendalian dan fungsi natif lain tanpa mereka bentuk lapisan komunikasi berasingan.
NW.js mungkin pilihan yang baik apabila:
- Membina permainan dengan rantaian alat sedia ada berasaskan NW.js. Pembangun yang menggunakan RPG Maker MV atau menyelenggara projek yang bergantung pada NW.js mungkin tidak mempunyai banyak sebab untuk menukar rangka kerja.
- Penyepaduan Node.js secara langsung dikehendaki. Aplikasi boleh mendapat manfaat daripada mengakses fungsi Node.js secara langsung dalam antara mukanya yang dipercayai.
- Aplikasi agak ringkas. Projek yang lebih kecil mungkin tidak memerlukan pemisahan yang lebih jelas antara logik utama dengan logik pemapar seperti dalam Electron.
- Projek sudah menggunakan NW.js. Penghijrahan kepada Electron mungkin memberikan sedikit sahaja manfaat jika aplikasi sedia ada stabil dan diselenggara dengan baik.
- API aplikasi Chromium tertentu adalah penting. NW.js menyediakan akses kepada API Chrome yang disokong yang mungkin berguna untuk aplikasi tertentu.
NW.js juga kekal diselenggara secara aktif. Kemas kini Chromium yang berterusan menunjukkan bahawa ia terus berkembang seiring dengan platform pelayar.
Bagi pembangun yang menyelenggara aplikasi atau permainan NW.js sedia ada, peralihan kepada Electron memerlukan penilaian perbezaan seni bina, perubahan pembungkusan dan keperluan keserasian. Melainkan terdapat manfaat teknikal atau perniagaan yang jelas, mengekalkan rangka kerja sedia ada mungkin lebih praktikal.
Electron lwn. NW.js: Yang Manakah Patut Anda Pilih?
Kedua-dua rangka kerja mampu membina aplikasi desktop merentas platform. Bagi projek baharu, pilihan sebahagian besarnya bergantung pada cara pembangun mahu menstrukturkan kod mereka dan ekosistem yang paling sesuai untuk menyokong keperluan mereka.
| Keutamaan anda | Titik permulaan yang lebih baik | Sebab |
|---|---|---|
| Aplikasi desktop yang besar dan kompleks | Electron | Seni bina dan ekosistem yang mantap |
| Perisian produktiviti atau perniagaan arus perdana | Electron | Penggunaan yang jauh lebih luas dalam kategori ini |
| Ekosistem jangka panjang dan penyertaan korporat | Electron | OpenJS Foundation dan penyumbang industri utama |
| Permainan yang dibina menggunakan RPG Maker MV | NW.js | Penyepaduan dan rantaian alat yang mantap |
| Akses Node.js secara langsung daripada halaman aplikasi | NW.js | Ciri teras seni bina |
| Pemisahan jelas antara UI dengan kod berkeistimewaan | Electron | Model utama/pemapar dan IPC |
| Alat pembungkusan dan pengedaran yang menyeluruh | Electron | Ekosistem alat yang matang |
| Aplikasi NW.js sedia ada | NW.js | Mengelakkan penghijrahan yang tidak perlu |
| Kekonsistenan Chromium merentas platform desktop | Mana-mana satu | Kedua-duanya menyertakan Chromium |
| Saiz aplikasi minimum | Tiada satu pun mempunyai kelebihan yang jelas | Kedua-duanya menyertakan Chromium dan Node.js |
| Pengurusan sesi pelayar dan tetingkap | Electron | API khusus yang matang |
| Sumber komuniti dan contoh yang luas | Electron | Penggunaan arus perdana yang lebih meluas |
Bagi kebanyakan pasukan yang memulakan aplikasi desktop baharu berskala besar, Electron ialah pilihan lalai yang lebih kukuh. Seni bina, ekosistem, panduan keselamatan, penyertaan korporat dan penggunaannya yang meluas dalam aplikasi sebenar menjadikannya rangka kerja yang praktikal untuk pembangunan jangka panjang.
NW.js masih wajar dipertimbangkan untuk projek yang mendapat manfaat daripada penyepaduan Node.js secara langsung, aliran kerja pembangunan permainan yang sudah bergantung padanya atau pangkalan kod NW.js yang mantap. Ia boleh menjadi lebih mudah untuk kes penggunaan tertentu, dan asas Chromiumnya menyediakan keserasian platform web yang luas.
Pembangun juga patut ingat bahawa kedua-dua rangka kerja ini bukanlah begitu ringan. Jika saiz aplikasi yang kecil dan penggunaan sumber asas yang rendah ialah kebimbangan utama, alternatif seperti Tauri mungkin wajar dipertimbangkan.
Penutup
Electron dan NW.js mempunyai lebih banyak persamaan berbanding perbezaan. Kedua-duanya menggabungkan Chromium dan Node.js untuk membolehkan pembangun membina aplikasi desktop merentas platform menggunakan teknologi web yang biasa digunakan. Kedua-duanya menyokong rangka kerja JavaScript moden, penyepaduan natif dengan sistem pengendalian dan pengalaman desktop yang canggih.
NW.js muncul dahulu, memperkenalkan pendekatannya untuk menggabungkan Node.js dengan teknologi web sebelum Electron wujud. Walau bagaimanapun, Electron kemudiannya menjadi rangka kerja yang lebih meluas digunakan untuk aplikasi desktop arus perdana, dengan mendapat manfaat daripada pelaburan awal GitHub, sumbangan syarikat teknologi utama dan tadbir urus melalui OpenJS Foundation.
Corak penggunaannya jelas berbeza. Electron menjadi asas kepada aplikasi produktiviti, komunikasi dan pembangunan popular yang digunakan oleh berjuta-juta orang. NW.js kurang menonjol dalam pasaran itu, tetapi terus mempunyai kehadiran yang bermakna dalam permainan indie, termasuk judul berasaskan RPG Maker dan permainan yang baru dikeluarkan.
Di WebCatalog, kami memilih rangka kerja yang sama seperti ramai pembangun perisian desktop utama. Electron memberi kami kekonsistenan Chromium, keupayaan pengurusan pelayar, seni bina keselamatan dan alat merentas platform yang diperlukan untuk menyokong pelbagai aplikasi web pada macOS, Windows dan Linux.
NW.js tidak lapuk, dan penggunaannya yang berterusan dalam pembangunan permainan menunjukkan bahawa ia masih berguna. Namun, bagi pembangun yang memulakan aplikasi desktop kegunaan umum yang baharu, ekosistem Electron yang lebih luas, alat yang mantap, penyertaan korporat dan komuniti yang lebih besar menjadikannya pilihan lalai yang lebih praktikal.
Akhirnya, pilihan yang lebih baik bergantung pada keperluan aplikasi, pengalaman pasukan pembangunan dan kos jangka panjang untuk menyelenggara perisian tersebut.


