Node-Webkit vs Electron [クローズ]


81

クロスプラットフォームのデスクトップアプリケーションを構築することを計画しています。私たちは、ことがわかったノードのWebkitは、私たちのために最適です。しかし、GitHubは、Node-Webkitを使用する代わりに、Electronと呼ばれる独自のフレームワークを開発しました。

それらの違いは何ですか?


2
E lectron vs N W.js(2017年4月)。stackoverflowの質問E:2630N:269は、Githubのプルが要求Eを:102N:6、上に構築されたアプリの電子NW.js、最終的にはGoogleトレンド-電子は、より良い選択であるように思われます。
kinjelom 2017

「index.html」をポイントするだけで機能するため、「nw.js」を選択しました。「nw.js」を使用すると、「Electron」のトップアプローチにボルトで固定されたブラウザで「node.js」の代わりに「node.js」が追加されたブラウザ用にプログラミングしているように感じます-そしてそれは私の意見ではより良いパラダイムですとアプローチ。
Daniel Sokolowski 2018年

回答:


79

Electronには、node-webkitとの違いを説明するページがあります。

https://github.com/atom/electron/blob/master/docs/development/atom-shell-vs-node-webkit.md

Node-Webkitと同様に、ElectronはJavaScriptとHTMLを使用してデスクトップアプリケーションを作成するためのプラットフォームを提供し、Webページの低レベルシステムへのアクセスを許可するためのノード統合を備えています。

しかし、ElectronをNode-Webkitとは完全に別個の製品にする2つのプロジェクトの間にも根本的な違いがあります。

1-申請書の記入

NW.jsでは、アプリケーションのメインのエントリポイントはWebページまたはJSスクリプトです。package.jsonでhtmlまたはjsファイルを指定すると、アプリケーションのメインウィンドウ(htmlエントリポイントの場合)としてブラウザウィンドウで開かれるか、スクリプトが実行されます。

Electronでは、エントリポイントはJavaScriptスクリプトであり、URLを直接提供するのではなく、手動でブラウザウィンドウを作成し、対応するAPIを使用してHTMLファイルをロードする必要があります。また、ウィンドウイベントをリッスンして、アプリケーションをいつ終了するかを決定する必要があります。

したがって、ElectronはNode.jsランタイムのように機能し、APIはより低レベルであるため、phantomjsなどのWebテスト目的でElectronを使用することもできます。

2-ビルドシステム

Chromium全体の構築の複雑さを回避するために、Electronはlibchromiumcontentを使用してChromiumのContent APIにアクセスします。libchromiumcontentは、ChromiumContentモジュールとそのすべての依存関係を含む単一の共有ライブラリです。したがって、ユーザーはアトムシェルを構築するために強力なマシンを必要としません。

3-ノード統合

Node-Webkitでは、WebページでのNode統合には、Chromiumにパッチを適用する必要がありますが、Electronでは、Chromiumのハッキングを回避するために、libuvループを各プラットフォームのメッセージループに統合する別の方法を選択しました。その方法については、node_bindingsコードを参照してください。

4-マルチコンテキスト

経験豊富なNode-Webkitユーザーの場合は、NodeコンテキストとWebコンテキストの概念に精通している必要があります。これらの概念は、Node-Webkitの実装方法のために考案されました。

Nodeのマルチコンテキスト機能を使用することにより、ElectronはWebページに新しいJavaScriptコンテキストを導入しません。

ソースコード保護

Electronは、アプリケーションの保護されていないソースコードを含むasarを使用してアプリケーションをパッケージ化しています。これにより、ユーザーが気付かないうちに、アプリケーション1がアプリケーション2を抽出し、脆弱なスクリプトを挿入することが可能になります。GitHubでこのプロジェクトをチェックアウトして、Slackアプリを操作する方法の例を確認できます。現在のところ、Electronチームはソースコード保護のサポートを実装する予定はありません

NW.jsに、ソースコードを保護されたバイナリにコンパイルするためのサポート組み込まれています


3
今、ノードのWebKitは、NWに変更されます
Marwen Trabelsi

70
この記事はElectronのレポからのものであるため、これはElectronにわずかに偏っている可能性があります。
gbmhunter 2015

7
nw.jsは、Chromeアプリをすぐに実行できます。これは、Chromeウェブストアのアプリが間もなく孤立する多くのプログラマーにとって価値があります。
marlar 2017年

16
私は実際に最近両方を使ってみました、そして私はそれについてのブログ投稿を書きました。nw.jsは、実際にはElectronよりもシンプルで使いやすいことがわかりました。いくつかのWebページを取得し、それらをnw.jsにドロップして移動するのはかなり簡単です。Electronはセットアップが面倒であり、そのマルチプロセス設計により、簡単なことを行う場合でもフープを飛び越えなければなりません。Electronには、はるかに豊富なプラットフォーム統合APIがあり、アプリケーションでネイティブのMac / Windows / Linux機能をより広範囲に使用できます。
Ming-Yee Iu 2017年

3
また、Node.jsが追加されたNW.jsブラウザーは、ブラウザーのサポートが上にボルトで固定されたElectronのNode.jsのアプローチよりもはるかに賢く、作業が簡単であることがわかりました。NW.jsを使用してブラウザー用にコーディングし、Electronを使用してNode.js用にコーディングしています。
Daniel Sokolowski 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.