Electron开发 —— 简单整合框架

2020-09-16  本文已影响0人  潇潇剑_易水阁

总得有个纸上谈兵

序:

前置:

一:步骤:

1. 使用 vue CLI 创建vue项目,并去掉所有暂不需要的东西,完成后的结构如下:

electron-vue-frame
└─ node_modules
   ├─ public
   │    └─ index.html
   ├─ src
   │    ├─ assets
   │    ├─ components
   │    ├─ router
   │    │   └─ index.js
   │    ├─ store
   │    │   └─ index.js
   │    ├─ views
   │    ├─ App.vue
   │    └─ main.js
   ├─ .prettierrc
   ├─ package.json
   └─ vue.config.js

2. 创建electron 环境,参考之前的demo,和之前demo的不同在于此处增加了node服务器启动,electron加载服务地址获取index.html,完成后的结构如下:

electron-vue-frame
└─ node_modules
   ├─ public
   │    ├─ container.js(新增)
   │    ├─ server.js(新增)
   │    └─ index.html(改动)
   ├─ src
   │    ├─ assets
   │    ├─ components
   │    ├─ router
   │    │   └─ index.js
   │    ├─ store
   │    │   └─ index.js
   │    ├─ views
   │    ├─ App.vue(改动)
   │    └─ main.js
   ├─ .prettierrc
   ├─ package.json(改动)
   └─ vue.config.js(改动)

3. 划分好对应的职责范围,比如UI模块选择element-ui 或其他

3.1.0 新增桌面原生组件调用

3.1.1 主要是结合vuex去做的一个主进程和渲染进程之间的事件发布订阅的操作,当然这款还是很绕,本意仅为当你需要原生的桌面相关的东西时,可以直接: 某某对象=》你得所作所为,并不需要太了解底层是怎么去弄的,比如究竟是调用主进程还是渲染进程,业务方真的不需要知道这些,这也是为啥整合进来的原因,当然总得有个要去知道这种流程的人,封装好现有或者将来有的东西,或许将来框架也不在这样,这种套娃封装就可以去掉了

3.1.2 完成后的结构如下:

electron-vue-frame
└─ node_modules
   ├─ public
   │    ├─ container.js
   │    ├─ server.js
   │    └─ index.html
   ├─ src
   │    ├─ assets
   │    ├─ components
   │    ├─ desktop_components(新增)
   │    │   └─ dialogs(新增)
   │    │        └─ base.js(新增)
   │    ├─ router
   │    │   └─ index.js
   │    ├─ store
   │    │   └─ index.js(改动)
   │    ├─ views
   │    ├─ App.vue
   │    └─ main.js
   ├─ .prettierrc
   ├─ package.json
   └─ vue.config.js

3.2. 修改路由调用

3.2.1 其实这个有没有必要,做惯了web还是想着干嘛不就是单页面里面跳转,为啥要窗口,单页面也能模拟窗口,毕竟原理一致,但是当我总这样想的时候,是因为我做这一行太久了,久到眼中只有自己的应用,故要是你也有此疑惑或者不知道为啥需要整合到此的,不需要再看下去了,因为当前你的环境没碰到这些,即使碰到也不一定会想着用这个,要是不嫌弃写得简陋就看下去吧,其实只是想方便下,因为整体是在vue单页面进行,至于多开窗口,业务能规避的就规避,不能的其实也好管理吧,多个实例,路由还是那一套,故此处结合vue的路由router,但是原生桌面的菜单还是需要那一套,主进程发送事件到渲染进程,此处也会整合到一个地方,方便后续使用者直接按template调用即可(此处方法很多,包括改不改新起一个窗口还是路由next渲染成功后,改变原来的窗口的大小,还是利用 BrowserView等等去拷贝内容作为新窗口的填充也仅仅是各位的真实应用时的考虑)

3.2.2 完成后的结构如下:

electron-vue-frame
└─ node_modules
   ├─ public
   │    ├─ container.js
   │    ├─ server.js
   │    └─ index.html
   ├─ src
   │    ├─ assets
   │    ├─ components
   │    ├─ desktop_components
   │    │   └─ dialogs
   │    │        └─ base.js
   │    ├─ router
   │    │   └─ index.js(改动)
   │    ├─ store
   │    │   └─ index.js
   │    ├─ views
   │    │   └─ Login.vue(新增)
   │    ├─ App.vue
   │    └─ main.js
   ├─ .prettierrc
   ├─ package.json
   └─ vue.config.js

总体结构思维导图如下:

框架简图

二:未来:

1. 简化调用,比如封装的本地弹框,应该简化为

dialog.info(msg)

2. 升级到 vue3.X 并采用 TypeScript,但保持最基本这种demo,毕竟这些都不是刚需,仅仅一种所谓的精简而已

3. 优化打包,以及减少打包所需要的默认配置 ,完善指令,形成一个闭环

Next. 其实无非就是空头支票,看个热闹,真有那个精力再说

三:Focus On Your Focus 这才是我的初衷,现在这些都太过于不着边际的东西了

上一篇下一篇

猜你喜欢

热点阅读