Electron桌面应用构建指南

技术栈

  1. react
  2. react-router-dom
  3. electron
  4. ant design

搭建过程

添加镜像源

根目录添加 .yarnrc文件

registry "https://registry.npm.taobao.org"
sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
phantomjs_cdnurl "http://cnpmjs.org/downloads"
electron_mirror "https://npm.taobao.org/mirrors/electron/"
sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/"
profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/"
chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"

初始化react

  1. 用create-react-app 初始化一个react应用
create-react-app pound-system

  1. 安装依赖并启动项目
<!--安装依赖-->
yarn install<!--启动项目-->
yarn start

接入electron

  1. 安装electron依赖
yarn add electron --dev

  1. 在./public 文件夹下 创建electron.js
const { app, BrowserWindow } = require('electron');// window对象的全局引用
let mainWindow
function createWindow() {mainWindow = new BrowserWindow({ width: 800, height: 600 })// 开发环境// mainWindow.loadURL('http://localhost:3000/');// 生产环境 mainWindow.loadFile(`${__dirname}/index.html`);// 打开开发者工具,默认不打开// mainWindow.webContents.openDevTools()// 关闭window时触发下列事件.mainWindow.on('closed', function () {mainWindow = null})
}app.on('ready', createWindow);// 所有窗口关闭时退出应用.
app.on('window-all-closed', function () {if (process.platform !== 'darwin') {app.quit()}
})app.on('activate', function () {if (mainWindow === null) {createWindow()}
})

  1. 配置package.json 添加 如下属性
{"main": "public/electron.js","homepage": "./","scripts":{"electron-dev": "electron ."}
}

  1. 启动桌面程序
yarn electron-dev

接入react-router-dom

  1. 安装依赖
yarn add react-router-dom

  1. 修改App.js文件
import React from 'react';
import { BrowserRouter as Router, Route, NavLink } from 'react-router-dom';
import './App.css';import Home from './pages/home';
import About from './pages/about';// 入口app
const App = () => {return (<Router><header className="header"><NavLink to="/">首页</NavLink><NavLink to="/about">关于我们</NavLink></header><div className="App"><Route exact path="/" component={Home} /><Route path="/about" component={About} /></div></Router>);
};export default App;

  1. 在pages文件夹下 创建几个测试页面 home.js 、 about.js
// home.js
import React from 'react';export default () => {return <div>Home</div>;
};// about.js
import React, { useEffect } from 'react';export default () => {useEffect(() => {}, []);return <div>about</div>;
};

  1. 测试页面点击即可切换路由

接入sass模块化

create-react-app本身支持sass模块化 我们只需按照规范编写就可以了

  1. 安装依赖
yarn add sass-loader node-sass

  1. 修改home.js页面 添加引用路径并添加className
import React from 'react';
import styles from './index.module.scss';
export default () => {return <div className={styles.main}>Home</div>;
};

  1. 创建对应的index.module.scss
.main{color:blue;
}

  1. 预览效果 即可看到home也得字体变成蓝色了

接入ant design

  1. 安装依赖
yarn add antd

  1. 直接在home页引入 antd组件
import React from 'react';
import styles from './index.module.scss';
import { Button, message } from 'antd';export default () => {return (<div className={styles.main}>Home<Button onClick={() => message.warn('您点击了我们的提示信息')}>点击提示</Button></div>);
};

  1. 在全局css index.css 引入样式
@import '~antd/dist/antd.css';

  1. 预览home页即可成功应用

项目打包

这里采用electron-builder进行打包

  1. 安装依赖
yarn add electron-builder --dev

  1. 配置打包参数

在package.json中添加 or 修改如下属性

{"scripts":{"dist-win32": "electron-builder --win --ia32","dist-win64": "electron-builder --win --x64","dist-mac": "electron-builder --mac"},"main":"build/electron.js","description": "项目描述","author": {"name": "katte","email": "417560450@qq.com","url": "https://github.com/katteXu"},"build": {"productName": "my-project","appId": "org.my-project.electron-react-antd","directories": {"output": "dist"},"files": ["build/**/*"],}
}

详细配置参数可参考 electron-builder

  1. 打包react代码

先构建react代码到build文件夹

yarn build

  1. 打包electron安装包
<!--mac环境-->
yarn dist-mac<!--windows环境-->
yarn dist-win64

  1. 验证

mac环境 --> dmg安装包windows环境 --> exe安装包

分别安装验证即可

问题及解决方案

  1. yarn 安装electron会有问题

根目录下添加.yarnrc文件配置镜像即可解决

  1. 本来想应用less模块化样式 不过默认create-react-app 不支持 需要自行修改一些配置

修改配置可百度查询 create-react-app less关键字

  1. 安装node-sass可能会有报错

根目录下添加.yarnrc文件配置镜像即可解决

  1. create-react-app 中文文档

https://www.html.cn/create-react-app/docs/getting-started/

  1. electron-builder打包下载慢可参考知乎大神的文章

https://zhuanlan.zhihu.com/p/110448415

  1. 打包mac安装包代码签名问题

https://segmentfault.com/a/1190000012902525

更多精彩内容和技术干货请关注我们的微信公众号:Electron

欢迎关注我们的微信公众号Electron。每日更新技术干货,更有活动送书送资料

electron sqlite3_Electron+React+Antd工程搭建相关推荐

  1. typescript+react+antd基础环境搭建

    typescript+react+antd基础环境搭建(包含样式定制) tsconfig.json 配置 // 具体配置可以看上面的链接 这里module moduleResolution的配置都会影 ...

  2. react+antd搭建后台管理系统

    文章目录 前言 一.效果图 二.框架内容 1.技术栈 2.项目目录 3.setting.js(全局配置文件) 4.跨域代理 5.路由react-router 6.状态管理 react-redux 下载 ...

  3. React-(1)React工程搭建(脚手架)

    React工程搭建 简而言之,脚手架是一个CLI工具.可以帮我们创建已经配置好打包工具和项目目录结构的工程化项目模板.脚手架让项目从搭建到开发,再到部署,整个流程变得快速和便捷 1.安装react脚手 ...

  4. 打造跳跃音波播音乐放器(Electron+Nodejs+React)

    Electron可以让我们使用html,css,javascript来搭建跨平台(Windows.macOS.Linux)的桌面应用.下面通过Electron+Nodejs+React来实现一个支持播 ...

  5. 从零开始,教你用Webpack构建React基础工程

    20170415更新 推荐大家使用facebook官方构建工具facebookincubator/create-react-app来创建React基础工程 前言 随着前端代码越来越多,越来越复杂,整个 ...

  6. umi+dva+antd项目搭建

    umi+dva+antd 项目搭建 说明 设计特点 创建应用 目录 注意特点 约定式路由 嵌套路由 Scroll to top 页面间跳转 配置config/config.js(或.umirc.js) ...

  7. 使用Node.js+React+EUI快速搭建网页应用

    0. 起因 老板要搞个Log分析工具,数据存储选用的是Elasticsearch,起初想法是做个Kibana的插件,后来觉得依靠Kibana太庞大,而且后期想要把代码直接部署在GitHub page上 ...

  8. react+express+mongodb搭建个人博客

    这是本人用React+Express+mongodb搭建的一个简易博客系统,包括前端展示和后台管理界面.查看源码欢迎访问我的github 以下是参考我的源码后的操作 技术架构 前端 基础:HTML+C ...

  9. solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询

    1      Solrj的使用 1.1     什么是solrj Solrj是访问solr服务的java程序客户端. 1.2     需求 使用solrj调用solr服务实现对索引库的增删改查操作. ...

最新文章

  1. String创建方式及其区别(快速了解)
  2. 计算机系统的分类补充完整,数据库系统原(理B)13春A卷.doc
  3. java的枚举类enum
  4. JS module的导出和导入
  5. 【LeetCode笔记】117.填充每个节点的下一个右侧节点指针 II(二叉树、DFS)
  6. mybatis配置insert/update/delete同一个模板
  7. ddrelease64 黑苹果_High Sierra 黑苹果构建 微星X99A GAMING PRO CARBON+i7 6800k+GTX1070
  8. Netty(三) 什么是 TCP 拆、粘包?如何解决?
  9. mongo数据排序和分页显示
  10. python3可视化窗口操作_Python3.x+PyQtChart实现数据可视化界面(PyQtChart绘图;还有保存图片)和业务逻辑分离案例01_自己写的,有UI界面源代码...
  11. Linux Autofs自动挂载服务详解
  12. php电子面单接口,可一次性接入全国45家主流快递~顺丰、京东、邮政、EMS、德邦、四通一达
  13. no tests were found异常springBoot配置
  14. CSS Flexbox布局
  15. NPOI使用ShiftRows向excel插入行,并复制原有样式
  16. AlexNet 参数计算
  17. 英语对于程序员重要吗?
  18. 微微信.NET 微信的开发者验证ASP.NET C#代码
  19. python三维曲面拟合_用Python拟合多项式曲面
  20. 多级分销系统(代理商佣金管理模块)设计概要(要求和数据库设计)

热门文章

  1. POJ 2104 K-th Number 主席树(区间第k大)
  2. Android的快速开发框架 afinal
  3. (转)Mahout Kmeans Clustering 学习
  4. POJ - 1008 Maya Calendar
  5. Debian Squeeze 安装
  6. [转载] python中pow可以计算负数吗_Python数学.pow()计算失误
  7. verilog读入.txt的有符号十进制数,把有符号十进制数写入到.txt文件中
  8. Vimtutor中文版
  9. 你该学点HTML/CSS知识的9大理由
  10. 对象functionJavaScript: The Definitive Guide 权威指南,读书笔记(一)