CSS, Sass, JS
- JS ライブラリ、jQuery プラグインまとめ
- CSS セレクタのチートシート
- Material-UI:
$ npm install --save @material-ui/core
- Node と Sass を使うなら
$ npm install --save-dev node-sass
Electron
Hello, World
$ npm init -y
で新規プロジェクトを作成-
公式 Quick Start に従って
main.js
とindex.html
をコピペpackage.json
中の"main"
は上のmain.js
に変更しておく
-
$ electron .
で実行- npm script で
"start": "electron ."
としておけば、$ npm start
でも OK
- npm script で
- アプリケーション実行ファイルの生成には electron-packager を使う(
$ npm install -g electron-packager
)
Visual Studio Code で開発・デバッグできるようにする
- (グローバルではなく)レポジトリに Electron をインストール
- VSC に拡張機能
Debugger for Chrome
をインストール -
一度実行(F5)して
.vscode/launch.json
生成後、公式ドキュメントに従って内容を変更し、再度実行- ビルドはしてくれないので、コードを変更したらターミナルでビルドし直してから再度実行
Electron 実行時の処理の流れ
electron DIR_NAME
すると、DIR_NAME/package.json
の"main"
で指定されている JS ファイル(main.js
)が Main process として実行されるapp.on('ready', …)
のcreateWindow
でウィンドウが生成されるcreateWindow
の中で、electron.BrowserWindow
インスタンスのloadURL()
でindex.html
が読み込まれるindex.html
で読み込まれる JS ファイルが Renderer process として実行される
Main-Renderer プロセス間のやり取り
- プロセス間通信(IPC)を使う
-
ipc
は現在の API には無く、代わりに ipcMain/ipcRederer を使う(cf. Electron の IPC をまとめる)<channel>
は文字列、<listerner>
は(event, arg) => {...}
という関数event.returnValue
に代入すれば同期的に返信(送信側の返り値になる)event.sender.Send(<channel>[, <args>])
で非同期的に返信(再度on
で受信)
Sender -> Receiver (非同期通信) | Method in Sender | Method in Receiver |
---|---|---|
Main -> Renderer | <BrowserWindow>.webContents.send(<channel>[, <args>]) |
ipcRenderer.on(<chennel>, <listener>) |
Renderer -> Main | ipcRenderer.send(<channel>[, <args>]) |
ipcMain.on(<channel>, <listener>) |
設定ファイル
- electron-store を使う
- デフォルトでは
/Users/USER_NAME/Library/Application\ Support/APP_NAME/config.json
に保存される
Webpack
$ npm install --save-dev webpack webpack-cli
- webpack 4 入門
- 複数ファイルに分割して開発された JS, CSS, etc. を 1 つの JS ファイルにまとめる(モジュールバンドル)
- Electron と使う場合は
target:electron-main
やtarget: electron-renderer
を指定しないとエラーになる -
ローダー
$ npm install --save-dev css-loader mini-css-extract-plugin
: CSS$ npm install --save-dev sass-loader node-sass
: SCSS$ npm install --save-dev babel-loader
: Babel
Babel
-
$ npm install --save-dev @babel/core @babel/preset-env
- React と使う場合は
$ npm install --save-dev @babel/preset-react
も
- React と使う場合は
-
トランスパイラ
- 変換したい言語に合わせたプラグインをコンフィグファイル(
.babelrc
等)中に指定する必要がある - React のようなフレームワークには必要なプラグイン集合がプリセットで用意されていて、簡単に指定できる
- 変換したい言語に合わせたプラグインをコンフィグファイル(
-
Webpack と使う場合は、
webpack.config.js
でbabel-loader
をローダーに指定して、プリセットの指定は以下のどちらかで行う(cf. Babel の presets を設定する 2 つの方法)webpack.config.js
に書く場合はoptions
で指定する.babelrc
(notbabel.config.js
)に書く(こちらの方が複数の対象について 1 つで済むため良さそう)
webpack.config.js
をトランスパイルしたい場合は、$ npm install --save-dev @babel/register
して、webpack.config.js
をwebpack.config.babel.js
に変える
React + Redux
$ npm --save install react react-dom redux react-redux
- React+Redux 入門
- Example: Todo List
- Redux で非同期処理がしたい場合は Redux Middleware を使う