electron-kit

npm: electron-kit

GitHub npm npm

中大規模のElectronアプリ開発用ライブラリ

Electonでそこそこ大きい規模のアプリを作るときに不便だなーと思ったところを解消してくれるやつです。
Atomで利用されているいくつかのクラスをまとめた感じ。

導入

electron-kitはnpmで公開しているのでnpm i --save electron-kitとかでインストールできます。
コード内でrequireしてあげるとBrowserRendererEmitterの3つのプロパティが公開されます

{Browser, Renderer, Emitter} = require "electron-kit"

構成

electron-kitではBrowserRendererそれぞれのプロセス用にクラスが用意されています。

Browser-process

Browser-process用に以下の4つのクラスが用意されています。

  • Application
    アプリのエントリポイントになるクラス。継承して使う。
  • CommandManager
    アプリ内のコマンドの送受信をを行うクラス。(application.commandに公開される)
  • MenuManager
    メニューバーを管理してくれる
  • WindowManager
    ウィンドウを管理してくれる

Application

electron-kitで作るアプリは Applicationをグローバルに公開して
そいつに依存性を寄せる作りになると思います。

Applicationの役割はコアクラスの初期化と保持がメインです。
Applicationには3つのメソッドが定義されており、それぞれをオーバーライドすることで
アプリごとに初期化処理を変えることが出来ます。

このような作りになっているのは、
electron-kitに用意されたクラスを継承してよりアプリに特化した機能を付加したクラスを利用する場合に必要になるためです。
Applicationクラスはelectron-kitのEmitterを継承しています。

  • initializeModules
    関係クラスを初期化
  • handleEvents
    初期化した関係クラスから発せられるイベントへのハンドラを登録
  • handleCommands
    アプリ内で利用するコマンドのハンドラを登録
{Application} = require("electron-kit").Browser
class App exnteds Application

CommandManager

CommandManagerはアプリ内のコマンド送受信を受け付けるクラスです。

CommandManager#on(command: String, handler: Function)でコマンドのハンドラを登録し
CommandManager#dispatch(command: String, ...args)でコマンドを呼び出します。

BrowserプロセスのCommandManagerはBrowserプロセス内への発行しか行いませんが、
RendererプロセスのCommandManagerは、そのインスタンス内とBrowserプロセスへのコマンドを発行します。

Browserプロセス側の処理を呼びたい時にApplication#handleCommandsとか
Browserプロセス内のどこかでコマンドハンドラを設定しておいて
Rendererプロセスは、例えばwindow.app.command.dispactch("command", arg)とコールしてあげれば
Browserプロセス側の処理を呼び出すことが出来ます。
(コマンド呼び出し元のRendererがapp.windows.lastFocusedWindowメソッドでしかわからないのが今のところの課題)

そのうち続き書きます。