electron vue 开发客户端程序
文档知识点
https://electronjs.org/docs/tutorial/about
(1)Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。
即electron内置了浏览器和node环境。
Electron包括2个进程:main-process ,render-process。
main-process:控制应用的生命周期
render-process:浏览器渲染。
这2个进行之间通过IPC进行通信。
(2) 通信过程待研究
https://electronjs.org/docs/faq#how-to-share-data-between-web-pages
开发小tips
(1)main 进程热更新
webpack配置:
function startMain () {
return new Promise((resolve, reject) => {
mainConfig.entry.main = [path.join(__dirname, '../src/main/index.dev.js')].concat(mainConfig.entry.main)
const compiler = webpack(mainConfig)
compiler.plugin('watch-run', (compilation, done) => {
logStats('Main', chalk.white.bold('compiling...'))
hotMiddleware.publish({ action: 'compiling' })
done()
})
compiler.watch({}, (err, stats) => {
if (err) {
console.log(err)
return
}
logStats('Main', stats)
if (electronProcess && electronProcess.kill) {
manualRestart = true
process.kill(electronProcess.pid)
electronProcess = null
startElectron()
setTimeout(() => {
manualRestart = false
}, 5000)
}
resolve()
})
})
}
main进程的热更新使用的webpack的watch-run插件,所以main进程修改后会热更新。render进程热更新大家很熟悉了。
(2)main进程log记录
electron-log 插件可以打印main主进程信息。
https://github.com/megahertz/electron-log
需要说明的事:默认只有error信息可以打印到文件中。
app.get('/situation/open/getJsonFiles', (req, res) => {
// 默认情况下只打印error信息,所以使用log.error打印所需的信息即可
log.error('Hello, log2')
readJsonFiles(app).then(ele => {
res.send(ele)
}).catch(err => {
res.send(err, '---ree')
})
})
持续更新
作者:孟繁贵 Email:meng010387@126.com 期待共同进步!