用Electron+Vue3|用Electron+Vue3 来做一个炫酷的插件工具箱
前言
某天,我在不同项目之间来回复制代码粘贴。频繁切换编辑器让我倍感繁琐,我在想:“要是能写一个工具,将所有内容复制起来,然后再一个个拷出来就方便多了。”
这个时候测试同事来到了我的旁边,看到我电脑桌面的便笺工具写满了密密麻麻的工作事项。表示也想用一个,让我帮他打开。结果到他电脑上发现没有自带的便笺工具。
二话不说,马上就用electron
写了一个简单的小工具,名为iHelper
,里面包含了几个小功能:便笺,剪贴板记录,待办事项...。
文章图片
iHelper
完成了之后发给同事使用,这个时候T同事说:“我也想写点东西,可以加在你的iHelper里面吗?”
“那当然可以啊”。正当我准备把同事加到仓库成员里时,我又想到:“如果iHelper能支持运行别人的web项目,像小程序那样。将一个web项目以插件为单位添加在软件中并运行,是不是就能让更多的前端同事参与进来,增加自己想要的工具呢”
于是琢磨一番,将iHelper
改成了一个支持上传下载安装的插件平台。并将原先的功能便笺,剪贴板记录,待办事项
拆分为单独的web项目。以可自由下载的插件发布到iHelper
的插件商店中。以此作为学习的项目,并记录分享其中的过程。
iHelper
iHelper
是一个包含工作便利插件的插件工具箱,支持下载安装插件/上传发布插件/打包插件。
在iHelper
中,所有的插件都是一个单独的web项目。每个web项目都会有一个配置文件plugin.json
来描述此插件的信息。当在iHelper
中下载插件时,其实是从远程服务器下载此插件项目打包后的资源文件,并根据配置来将此插件装载进iHelper
中。
在运行插件时,iHelper
会打开新的应用窗体。并且根据plugin.json
指定的访问入口文件进行加载。这样就完成了项目插件化的效果。
文章图片
下载/文档
iHelper项目仓库
iHelper插件仓库
iHelper文档地址
iHelper安装包下载地址(github)
iHelper安装包下载地址(gitee,国内较快)
技术选型
桌面应用框架 Electron + Typescript
Node.js数据库 nedb
渲染进程框架 Vue3 + Typescript
UI框架 Element-plus
后端 NestJS
功能点
- 插件新增,插件启动
- 插件运行,插件窗体管理
- 插件版本管理
- 插件开发者模式,API、数据库支持
- 插件重载,插件打包,插件发布
- 第三方插件压缩包安装
- 插件下载,插件安装,插件更新
- 插件设置
- 用户账号登录注册
- 应用设置,快捷键管理
- 应用更新
- 应用常规功能(拖拽,缩放,最小化,托盘,退出...)
插件是其他开发者编写的web应用能够添加、打包、发布、安装、运行插件
将各个应用整合为插件系统的好处:
- 工具箱整合多种插件,避免安装多个软件,占用电脑过多空间
- 插件体积小,更新效率快
- 统一封装的api方便各插件执行系统交互逻辑
- 剪贴板监听工具——electron-clipboard-observer
- vue3的右键菜单库——vue3-context-menu
【用Electron+Vue3|用Electron+Vue3 来做一个炫酷的插件工具箱】iHelper的开发过程后续以几篇文章来总结分享,作为一个学习总结
- 搭建iHelper的项目目录架构
- 插件的添加以及开发者模式功能
- 插件下载、安装、版本管理
- 应用设置,插件的设置,快捷键管理,应用更新,常规功能
- ...(还有更多待补充)
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- JS中的各种宽高度定义及其应用
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 涉毒患者(新诗)
- 参保人员因患病来不及到指定的医疗机构就医,能否报销医疗费用()
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。