React 结合 Electron 开发桌面应用入门

Electron 是 Github 发布的跨平台桌面应用开发工具,它支持使用 web 技术来开发桌面应用,即你可以使用 Html+css+JavaScript 来开发桌面应用,而不用学习新的桌面端开发语言。Electron 的图形界面渲染采用 Chromium 浏览器的内核实现,但又能通过 Node.js 调用丰富的原先操作系统 API。本文着眼于 Electron 结合 React 的开发实践。

Electron 快速开始

首先,安装 electron

npm install --save-dev electron

根据 Electron 官方的electron-quick-start,创建 Electron 应用最基础的三个组成部分:

  • main.js 用于控制应用主进程
  • index.html 用于控制渲染进程
  • package.json 项目配置

这里的主进程和渲染进程是 Electron 中的两个进程。主进程使用 BrowserWindow 实例创建页面。 每个 BrowserWindow实例都在自己的渲染进程里运行页面。 当一个 BrowserWindow 实例被销毁后,相应的渲染进程也会被终止。

index.html这里不多说,就是一个网页文件。main.js中代码大致是这样的:

const { app, BrowserWindow } = require('electron');function createWindow() {// 创建浏览器窗口const win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true}});// 并且为你的应用加载index.htmlwin.loadFile('index.html');// 打开开发者工具win.webContents.openDevTools();
}// Electron会在初始化完成并且准备好创建浏览器窗口时调用这个方法
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(createWindow);//当所有窗口都被关闭后退出
app.on('window-all-closed', () => {// 在 macOS 上,除非用户用 Cmd + Q 确定地退出,// 否则绝大部分应用及其菜单栏会保持激活。if (process.platform !== 'darwin') {app.quit();}
});app.on('activate', () => {// 在macOS上,当单击dock图标并且没有其他窗口打开时,// 通常在应用程序中重新创建一个窗口。if (BrowserWindow.getAllWindows().length === 0) {createWindow();}
});// 您可以把应用程序其他的流程写在在此文件中
// 代码 也可以拆分成几个文件,然后用 require 导入。

其中win.loadFile('index.html')用于窗口应用加载网页文件,即主进程和渲染进程的联通。

既然这样,我们是不是可以将使用 React 开发的单页应用打包后的index.html作为渲染的主页?答案是肯定的。

package.json:

{"name": "your-app","version": "0.1.0","main": "main.js","scripts": {"electron": "electron ."}
}

启动应用:

yarn electron

React 结合 Electron

这里 React 应用采用 webpack 构建。webpack 中对于 electron 应用有提供支持

  • 开发模式

webpack 的配置中加一条:

module.exports = {target: 'electron-renderer'
};

表示构建完成的项目用于 electron 渲染。

package.json添加一条启动 react 应用的脚本

{"scripts": {"electron": "electron .","start-renderer": "webpack-dev-server --config webpack.dev.js","build-react": "webpack --progress --config webpack.react.js"}
}

然后main.js做相应修改

// 加载应用----适用于 react 项目
win.loadURL('http://localhost:3000/');

启动 React:

yarn start-renderer

启动 Electron

yarn electron

这样 react 项目的热更新也能应用到 electron 项目中。

  • 生成模式

webpack 的配置中加一条:

module.exports = {target: 'electron-preload'
};

yarn build-renderer 打包 react 应用

main.js做相应修改

win.loadFile('./dist/index.html');

然后使用electron-builder打包成客户端应用。

electron 打包_Electron结合React开发桌面应用相关推荐

  1. electron结合JAVAweb_Electron结合React开发桌面应用

    React 结合 Electron 开发桌面应用入门 Electron 是 Github 发布的跨平台桌面应用开发工具,它支持使用 web 技术来开发桌面应用,即你可以使用 Html+css+Java ...

  2. 【Electron】用前端技术开发桌面应用(一)

    由于最近工作需求,紧急学习electron相关的技术知识,关于node.js的相关问题,后续会继续更新. [electron]简介及作用: electron的基本组成:Chromium + Node. ...

  3. Electron - 用前端的技术开发桌面应用(二)

    之前已经出了Electron系列第一篇,实现了简单的Hello World,感兴趣的小伙伴可以去翻看:https://editor.csdn.net/md/?articleId=118417012今天 ...

  4. android开发入门与实践_Electron从入门到实践,前端开发者开发桌面App的最佳选择...

    在开始之前,我想您一定会有这样的困惑:标题里的Electron 是什么?Electron能做什么?许多伟大的公司使用Electron框架的原因又是什么? 带着这些问题和疑惑,通过本文的介绍,可助您全面 ...

  5. java web打包神器_前端开发人员的桌面应用神器 Electron

    原标题:前端开发人员的桌面应用神器 Electron 01 为什么用 Java 来开发桌面应用? 曾经的 Java 脆弱.简陋.甚至有被边缘化的危险,不过 Java 在经过了两次飞跃后(以 V8 为首 ...

  6. electron 前端开发桌面应用

    electron是由Github开发,是一个用Html.css.JavaScript来构建桌面应用程序的开源库,可以打包为Mac.Windows.Linux系统下的应用. 快速开始 接下来,让代码来发 ...

  7. Electron开发桌面应用

    由 Bazzzinga威 同学翻译自 Medium.https://medium.com/developers-writing/building-a-desktop-application-with- ...

  8. 前端实战:electron+vue3+ts开发桌面端便签应用

    前端时间我的一个朋友为了快速熟悉 Vue3 开发, 特意使用 electron+vue3+ts 开发了一个桌面端应用, 并在 github 上开源了, 接下来我就带大家一起了解一下这个项目, 在文章末 ...

  9. Electron前端开发桌面程序--入门篇

    前言 前端开发桌面程序这个概念已经出现有一段时间了,这项技术也已经走向成熟,Github上nw和光electron的star就差不多有10w颗星了,github也衍生出了很多开源的桌面项目俨然成了一个 ...

最新文章

  1. CocoaPods私有库搭建的记录
  2. 字符串转数字 sql_SQL注入·sqli-labs·基于错误的字符串/数字型注入(第1~2关)
  3. 多线程编程 之 (生产者与消费者(N多))同步常用的方法。
  4. 零基础学python需要多久-零基础学习Python开发需要多长时间?
  5. mysql根据注释搜索表
  6. scala字符替换_如何替换Scala中的“坏”字符?
  7. 理工男最该死的十二个瞬间
  8. Snipaste在Window运行后遇到提示计算机中丢失 api-ms-win-crt-runtime-l1-1-0.dll 错误
  9. 腾讯大数据之TDW计算引擎解析——Shuffle
  10. R7-2 统计字符[2] (10 分)
  11. IOS socket编程--Asyncsocket
  12. C++之指针探究(十四):回调函数
  13. 百度广告场景大数据治理应用实践
  14. Android中如何做到Service被关闭后又自动启动
  15. 【转】文件各种上传,离不开的表单
  16. NPM 常用命令和参数的意思
  17. 写一个生产者消费者的例子
  18. 【Python网络蜘蛛 · 1】:网络蜘蛛的基本介绍
  19. 数学 二维向量(加法、减法、模、点乘、叉乘)
  20. SPSS正态分布,泊松分布,指数分布,均匀分布检验

热门文章

  1. PTA 地下迷宫探索(图的遍历dfs)
  2. CIO40:探索智能制造之离散行业
  3. vue.use和vue.prototype的区别
  4. 如何看穿数据可视化的谎言
  5. 计算机网络幅移键控法,1.4.2 理解键控法
  6. 正则表达式:pattern=[^\\w]---------总结------------
  7. 深度学习基础笔记(MLP+CNN+RNN+Transformer等等)
  8. 麒麟子Cocos Creator实用技巧二:微信名字截断(支持表情)
  9. 西南科技大学全国计算机考试试题,西南科技大学《计算机辅助设计》题库AutoCAD试题四-A卷.doc...
  10. 4.Flink实时项目之数据拆分