Merge pull request #6706 from sairoutine/jpdocs

Japanese: add atom-shell-vs-node-webkit.md
This commit is contained in:
Cheng Zhao 2016-08-03 20:06:03 +09:00 committed by GitHub
commit 3ea48a822e
2 changed files with 38 additions and 1 deletions

View file

@ -87,7 +87,7 @@ _リンクになっていないリストは未翻訳のものです。_
* [コーディング規約](development/coding-style.md)
* Source Code Directory Structure (development/source-code-directory-structure.md)
* Technical Differences to NW.js (formerly node-webkit)(development/atom-shell-vs-node-webkit.md)
* [NW.js(node-webkit) との技術的違い](development/atom-shell-vs-node-webkit.md)
* Build System Overview (development/build-system-overview.md)
* Build Instructions (macOS) (development/build-instructions-osx.md)
* Build Instructions (Windows) (development/build-instructions-windows.md)

View file

@ -0,0 +1,37 @@
# Electron と NW.js (node-webkit)の技術的違い
__Note: Electron は以前は Atom Shell と呼ばれていました__
NW.js と同じように Electron は HTML と JavaScript でデスクトップアプリケーションを書くためのプラットフォームを提供しており、また web ページからローレベルなシステムにもアクセスできる Node との統合的な仕組みを持っていました。
しかし、2つのプロジェクトには根本的な違いがあり、Electron と NW.js は完全に別なプロダクトになりました。
__1. アプリケーションの開始__
NW.js ではアプリケーションは web ページから開始されます。 `package.json` にてアプリケーションのメインページURLを指定し、ブラウザウィンドウがそのページを開くことで、それがアプリケーションのメインウィンドウとなります。
Electron では、JavaScript のスクリプトがエントリポイントとなります。URLを直接指定するのではなく、自分でブラウザウィンドウを作成し、API を通して HTML ファイルを読み込みます。また、ウィンドウで発生するイベントを購読して、アプリケーションの終了をハンドリングする必要もあります。
Electron は Node.js ランタイムのように動作します。 Electron の API はローレベルなので、[PhantomJS](http://phantomjs.org/)の代わりにブラウザテストに使用することもできます。
__2. ビルドシステム__
Chromium の全てのコードをビルドする複雑さを回避するため、Electron は [`libchromiumcontent`](https://github.com/brightray/libchromiumcontent) を通して Chromium の Content API にアクセスします。
`libchromiumcontent` は Chromium の Content モジュールとそれに依存する全てを含んだ単一の共有ライブラリです。
おかげで Electron をビルドするためにパワフルなマシンを用意する必要はありません。
__3. Node との統合__
NW.js では web ページと Node を統合するために Chromium にパッチを適用しています。一方、Electron では Chromium を改造する方法を取らず、libuv ループとプラットフォームのメッセージループを統合する方法を私達は取りました。
何をやっているかについては、[`node_bindings`][node-bindings] を参照してください。
__4. Multi-context__
もしあなたが経験豊かな NW.js ユーザーならば、Node のコンテキストと Web のコンテキストに精通しているかと思います。これらのコンセプトは、NW.js の実装によって導入されたものです。
Node の [multi-context](http://strongloop.com/strongblog/whats-new-node-js-v0-12-multiple-context-execution/) 機能によって、Electron は Web ページに新しい Javascript のコンテキストを導入しません。
Note: NW.js は バージョン 0.13 からオプションとして multi-context をサポートしました。
[node-bindings]: https://github.com/electron/electron/tree/master/atom/common