Skip to content

Instantly share code, notes, and snippets.

@koba04
Last active August 29, 2015 14:04
Show Gist options
  • Save koba04/5296b2ccdbb594c9cc2b to your computer and use it in GitHub Desktop.
Save koba04/5296b2ccdbb594c9cc2b to your computer and use it in GitHub Desktop.

atom-shellとNode-Webkitとの技術的な違い

Node-Webkitのように、atom-shwllはJavaScriptとHTMLでデスクトップアプリケーションを書くダメのプラットフォームを提供します。そしてシステムのローレベルな権限へのアクセスも可能です。

しかしながら、そこには根本的な違いがあって、atom-shellはNode-Webkitとは完全に別なプロダクトになっています。

1. Entry of application

Node-WebkitはアプリケーションのエントリポイントがWebページで、package.jsonにメインページを指定します。そしてそれがアプリケーションのメインウィンドウとしてブラウザで開かれます。

対してatom-shellのエントリポイントはJavaScriptです。そこでURLで指定する代わりにブラウザを作成しHTMLをロードする必要があります。またWindowのイベントを購読してアプリケーションが終了をハンドリングする必要があります。

つまりatom-shellはNode.jsのランタイムのように動作します。そしてAPIはNode-Webkitに比べて低レイヤーです。またatom-shellをphatom.jsのようにウェブのテストのために使うことも出来ます。

2. Build system

Chromiumで完全にビルドする複雑さを避けるために、atom-shellはlibchromiumcontentをChromiumのContent APIにアクセスするために使います。

libchromiumcontentは1つの共有ライブラリでChromium Contentのモジュールとその全ての依存が含まれています。だからビルドのパワフルなマシンを使う必要がありません。

3. Node integration

Node-Webkitでは、NodeをWebページと結合するにはChromiumにpatchを適用することが必要です。対してatom-shellでは私達は違う方法を取りました。libuvのをそれぞれのプラットフォームのメッセージループと結合する方法です。どうやっているのかはnode_bingindsのコードを見て下さい。

4. Multi-context

もしあなたがNode-WebkitのユーザーであったならNodeのコンテキストとWebのコンテキストを理解している必要がありますが、これらのコンセプトはNode-Webkitの実装方法によるものです。

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment