Electronまわりの調べごと


Electron まわりで、必要な API の使い方を調べました。

Electron でファイルの読み書き

レンダープロセスでも、node.js のファイル API が使えるようです。

ファイルダイアログも開けるようです。remote とか、よくわかりませんが、そのうち調べます。

jQuery の利用

普通に jQuery を使うと、$ が undefined になってしまうようです。とりあえず、

としておけば良いようです。

型定義ファイルに関しては、最近は特別なツールは必要ないようです。Visual Studio Code のターミナルから

とすれば、カレントフォルダの node_modules 下に型定義ファイルがインストールされます。また、この方法でインストールすれば、reference ~と参照する必要もありません。

TypeScript の import とか export とか (Electron の場合 )

1 ファイルから 1 クラスだけ出力する場合は、出力したい方のファイルの最後に

と書き、使いたい側から、

と書けばインポートできました。ここで指定するファイルの相対パスは、JavaScript ファイルを読み込んでいる HTML ファイルからの相対パスなので注意が必要です。

複数を export する方法はよくわかりません。(module.exports の方法を試しましたが、require した先で、型名が認識されず、TypeScript のコンパイルでエラーが出てしましました。)

ちなみに、

import XXX from YYYY;
の形式を使った場合、export のところでうまくいきませんでした。(exports is not defined となってしまいました。)

AppData パスを取得

Windows なら、

process.env.APPDATA
process.env.LOCALAPPDATA
で取得可能のようです。プラットフォームを調べるには、
process.platform == "win32"
でチェック可能です。

メニューの作成

テンプレートを書き、

Menu.buildFromTemplate
で作成、
Menu.setApplicationMenu
で設定します。

メインプロセスからレンダープロセスの関数を呼ぶ

メインプロセスからレンダープロセスの関数を呼ぶことはできず、プロセス間通信を使うしか無いようです。レンダープロセスの方で、待受設定をしておき、メインプロセスから BrowerWindow の

webContents.send
を呼び出してメッセージを送ります。

コード1: レンダープロセスの方
コード2: メインプロセスの方

メイン→レンダーの場合は、同期通信は無いようです。

Visual Studio Code で electron のモジュールが無いと言われた

コマンドプロンプトから

を実行すると認識されるようになりました。

まとめ

最低限必要なことは調べ終わった感じがします。Electron ベースの IDE を作っていこうと思います。