Electronに基づいてデスクトップアプリケーション開発コードの例を実現します。
Electronは、JavaScript、HTML、CSSを使用して、プラットフォームにまたがるデスクトップアプリケーションを構築するオープンソースフレームです。
本文は主にVue+electronを使ってデスクトッププログラムを開発する構築過程を共有します。
1.環境準備
ここではvue-cli 3.xを採用しています。現在のvue-cliのバージョンは下記のコマンドで確認できます。
Vue--version铉3.9.3ここで使っています。3.9.3です。
vue-cliを装着していない場合は、以下のコマンドでインストールできます。
npm install-g@vue/cli
vue-cliですか?それとも2.xですか?2.xをアンインストールしてから3.xをインストールしてもいいですか?
npm uninstall vue-cli-g
npm install-g@vue/cli
2.作成項目
ここでvue-cliを使ってvueプロジェクトを作成します。
vue create electro-hellowworld
vue-cli-plugin-electron-builderを導入します。
cd electron-hellowworld
vue add electro-builder
このステップはelectron-vX.Y.Z-win 32-x 64.zipを引く必要があります。過程はとても長いです。
3.運転項目
electronプロジェクトを実行します。
npm run electron:serve
4.node通信
正常にはvueコンポーネントはページ層の論理だけに関心を持たなければならないので、Vue ComponentとNode API、Electron APIの間にブリッジ層を挿入し、IPCを通じて通信することができます。
関係図によると、Vue ComponentはServiceを通じてイベントを発表し、Node APIとElectron APIとの通信を完成しました。この関係に基づいて、ファイルの内容を読み取る例を書きます。
Serviceを作成し、イベントを発表し、傍受する。
/bridge/service/Service.js
/bridge/server/Server.js
Serverを作成した後、アプリケーションが起動したときに起動し、対応するイベントを傍受する必要があります。
ここではApple Contectを作成してServerを起動できます。
/bridge/Application Contect.js
上の3ステップを完成したら、vueコンポーネントの中でServiceを呼び出すだけでいいです。このステップは普通のvueプログラムと同じです。
5.node API undefind
上の過程でnode API undefinedに出会うかもしれません。これはelectronがnode集積を無効にしたためです。background.jsでwindowを作成する時に配置を指定しました。
プロジェクトディレクトリのルートディレクトリの下でvue.com fig.jsを作成します。内容は以下の通りです。
本文は主にVue+electronを使ってデスクトッププログラムを開発する構築過程を共有します。
1.環境準備
ここではvue-cli 3.xを採用しています。現在のvue-cliのバージョンは下記のコマンドで確認できます。
Vue--version铉3.9.3ここで使っています。3.9.3です。
vue-cliを装着していない場合は、以下のコマンドでインストールできます。
npm install-g@vue/cli
vue-cliですか?それとも2.xですか?2.xをアンインストールしてから3.xをインストールしてもいいですか?
npm uninstall vue-cli-g
npm install-g@vue/cli
2.作成項目
ここでvue-cliを使ってvueプロジェクトを作成します。
vue create electro-hellowworld
vue-cli-plugin-electron-builderを導入します。
cd electron-hellowworld
vue add electro-builder
このステップはelectron-vX.Y.Z-win 32-x 64.zipを引く必要があります。過程はとても長いです。
3.運転項目
electronプロジェクトを実行します。
npm run electron:serve
4.node通信
正常にはvueコンポーネントはページ層の論理だけに関心を持たなければならないので、Vue ComponentとNode API、Electron APIの間にブリッジ層を挿入し、IPCを通じて通信することができます。
関係図によると、Vue ComponentはServiceを通じてイベントを発表し、Node APIとElectron APIとの通信を完成しました。この関係に基づいて、ファイルの内容を読み取る例を書きます。
Serviceを作成し、イベントを発表し、傍受する。
/bridge/service/Service.js
import { ipcRenderer } from 'electron'
class Service {
readTxt(params, callback) {
ipcRenderer.once('readTxt', (e, ret) => callback(ret))
// params Server
ipcRenderer.send('readTxt', params)
}
}
export default new Service()
Serverを作成し、イベントを傍受し、ファイルの内容を読み込んで戻ってきます。/bridge/server/Server.js
import { ipcMain } from "electron";
import fs from 'fs'
export default class Server {
constructor(app, win) {
this.app = app
this.win = win
}
initEventHandler() {
ipcMain.on('readTxt', (e, params) => {
// json, G:\\0.txt
const pms = JSON.stringify(params)
const ret = fs.readFileSync('G:\\0.txt')
e.sender.send('readTxt', pms + '::::' + ret)
})
}
}
スタートServerServerを作成した後、アプリケーションが起動したときに起動し、対応するイベントを傍受する必要があります。
ここではApple Contectを作成してServerを起動できます。
/bridge/Application Contect.js
import Server from './server/Server'
export default class ApplicationContext {
constructor(app, window) {
this.app = app
this.window = window
}
init() {
new Server(this.app, this.window).initEventHandler()
}
}
その後、background.jsでAppplication Contectを実施し、initメソッドを呼び出します。
win.on('closed', () => {
win = null
})
// Windows context
new ApplicationContext(app, win).init()
Vueコンポーネントの呼び出しService上の3ステップを完成したら、vueコンポーネントの中でServiceを呼び出すだけでいいです。このステップは普通のvueプログラムと同じです。
<div>{{txt}}</div>
<button @click="readTxt"> </button>
<script>
import service from '@/bridge/service/Service'
export default {
name: 'HelloWorld',
props: {
msg: String
},
data() {
return {
txt: ''
}
},
methods: {
readTxt() {
// , txt, div
service.readTxt({
p1: ' 1',
p2: ' 2'
}, resp => {
this.txt = resp
})
}
}
}
</script>
これでelectron hellowworldの一例が完成しました。5.node API undefind
上の過程でnode API undefinedに出会うかもしれません。これはelectronがnode集積を無効にしたためです。background.jsでwindowを作成する時に配置を指定しました。
webPreferences: {
// Use pluginOptions.nodeIntegration, leave this alone
// See nklayman.github.io/vue-cli-plugin-electron builder/guide/security.html#node-integration for more info
nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION
// nodeIntegration: true
}
ここではelectronBuiderプラグインを構成することにより解決できます。プロジェクトディレクトリのルートディレクトリの下でvue.com fig.jsを作成します。内容は以下の通りです。
// see https://cli.vuejs.org/config
module.exports = {
productionSourceMap: false,
pluginOptions: {
electronBuilder: {
nodeIntegration: true,
},
configureWebpack: {
resolve: {
symlinks: true
}
}
}
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。