一个基于electron
和react
开发的桌面端应用程序
样式库使用bootstrap
来简化操作,图标库由svg
来做的.
hooks 目录下为一些自定义的 hooks
使用prop-types
来完成类型检测
使用classnames
来完成className
的属性拼接
根据文档可以为cra
添加sass
文件的的解析功能
使用uuid
提供创建文件时的唯一 id 值
flattern state
:使用索引值,来把对象打平来设计一个效率更高的state
如果要使用electron
里面的node
模块,按照下面方法引用即可:
const fs = window.require("fs");
- 支持预览模式
- 支持高亮显示不同的内容
- 自定义工具栏
选用esaymde 来作为本次开发的md
文本编辑器。
当然这个库有react
版本的,因此可以直接考虑去使用react
提供的:
react-simplemde-editor
- 最小化(应用的最小可变状态集)
- 不要重复
- 有些数据可以根据已有的
State
计算出来 - 使用多个
State
变量
- 数据库软件的方案
- 浏览器相关的解决方案
- 使用
Electron Strore
(文件保存方式)
这里使用electron store
来提供解决方案
地址:https://github.com/sindresorhus/electron-store
const Store = window.require("electron-store");
const store = new Store();
store.set("name", "zoomdong");
console.log(store.get("name"));
使用dialog
模块来完成导入的功能。
这里可以直接在app.js
里面使用remote.dialog.showDialog()
来打开对话框。
适应 html5 里面的data-*
属性来使用 dom 获取到对应节点的一些信息。(具体代码参考filelist
获取子菜单那部分代码,然后用 useRef 去保存一个 dom 节点值)
- 原生应用菜单(就是电脑上面的
tab
栏目) - 上下文菜单(点击右键弹出来的菜单)
代码位于menuTemplate.js
目录下面,可以参考官网的模板去进行一个修改。利用shell
模块进行开发。这里的menu
使用的是主进程里面的事件(使用ipcrenderer
来完成快捷键事件的绑定以及添加)。
一些新的配置窗口使用electron
的弹出窗口(渲染进程
)来完成,而不去使用react-router-dom
去做,这样可以使其更简单。
- 不用增加复杂度,相对独立(同样使用
ipcrenderer
来使用) - 配置相对简单,不需要使用框架
- 使用原生的
js
进行开发
- 不要过度思考去选择项目目录,直接开干
electron 里面打开控制台调试应用程序的方法有:
mainWindow.webContents.openDevTools();