MixOne - 绕开Electron的IPC,高效开发Electron桌面应用的工具推荐

简介

MixOne是开发桌面应用(Win、Mac、Linux)和浏览器Web的一款工具、其基于Vite实现,编译electron代码和build浏览器web。其拥有简单的工程结构。熟悉前端开发的程序员可以很轻松的开发出桌面应用,它比electron的其他框架更简单,因为无需关心Electron的IPC通讯代码,在任意位置写mixone的语法糖(以Main、NodeJS、PJS开头)即可访问原生功能。可以说是在开发阶段"绕靠"IPC。MixOne也能打包BS架构的web产物,它以多html页面入口+SPA模式兼容存在,使用它可以很好的对大型项目进行微前端进行设计和部署。

一、 Mixone在开发桌面应用的主要特点

1、通过语法糖和注释在开发阶段绕开繁琐的IPC代码。

a. 以Main、NodeJS、PJS开始访问 electron的API和nodeJS包和插件(Plugin JS)。

ini 复制代码
比如:let path = await Main.app.getPath('documents');

​编辑

b. 以注释方式把函数(箭头函数)变主进程代码。以"// @mainProcess"进行注释,如图。

​编辑以上两种方式都可以写在

语法糖是简短代码,涉及的变量以调用的函数传递到方法中。注释模式也是以函数为单位,所以内部涉及的变量一定要以参数传递给函数。

被注释为主进程代码的函数不能跨作用域调用,内部的变量只能是在当前作用域中定义的,否则编译到主进程时候会找不到变量。

2、 精简的目录结构。

直观又容易理解,没有任何冗余目录层级。为什么我能做到这么科学的工程结构,请继续关注MixOne的发展,以后为各位讲解!

编辑

编辑

3、多窗口管理和通讯。

MixOne工具支持编译以window.WindowManager.xxx访问来管理窗口的创建、关闭和监听窗口事件。以及向指定窗口发送消息,向所有窗口发送广播。

例如:打开新窗口,以/windows/为根窗口目录打开"/help-window/"。还可以指定窗口参数。

ini 复制代码
let winInfo = await window.windowManager.openWindow('/help-window/', {
  width: 1200,
  height: 900
});

关于窗口管理类的用法,请继续关注MixOne后续出的文档。

二、 MixOne的快速安装。

请确保你已经安装了nodejs。建议v20及以上的版本。

项目创建命令:

npm install mixone -g

//创建项目

mixone create mixone-demo1

cd mixone-demo1

npm install //安装依赖 或 yarn

npm run dev

npm run build:win //打包window的exe,最小61M,以后有望优化到18M起。

创建项目中有一些简单的例子,比如窗口管理tab下的最大化、最小化等。但这只是MixOne功能的冰山一角,你要真正的使用MixOne开发一个桌面项目,你需要认证查看文档和github上的例子仓库,github上只是例子仓库,你可以例子中学习到如何使用MixOne

github.com/qew4/mixone...

三、 对开发的效率提升

我们从读取文件的例子来看MixOne对于效率的提升有多大?

csharp 复制代码
const fileContentResult = await NodeJS.fs.readFileSync("D:/file/123.txt", 'utf8')

​编辑

从以上图中的对比来看去IPC代码后的优点:

1、 代码量只有原来的 五分之一不到;

2、 书写的位置只要是script标签内即可,而无需区分主进程和渲染京城,光这一点就避免了开发者来回切换目录和文件。

3、不用考虑事件监听应该怎么取名和放在什么位置。这也就为开发者省心,MixOne会去处理这些问题。

4、在书写位置的上下文业务逻辑实现没有受到打扰(去设计IPC而打扰),审查代码也对代码的目的和功能比较直观。

四、 为什么它叫MixOne

顾名思义,MixOne就是混合卸载一个地方的意思,把主进程API、Node调用、主进程插件都写在渲染进程,混合在一起,所以叫MixOne

五、 安全性

MixOne框架是一个编译型的工具,它遵照官方的安全机制去编译,渲染进程无需启用Node功能,所有的原生功能(访问Node和Electron的API)都从预加载中暴露。

MixOne工具的官方地址:
www.npmjs.com/package/mix...

相关推荐
华玥作者4 小时前
[特殊字符] VitePress 对接 Algolia AI 问答(DocSearch + AI Search)完整实战(下)
前端·人工智能·ai
Mr Xu_5 小时前
告别冗长 switch-case:Vue 项目中基于映射表的优雅路由数据匹配方案
前端·javascript·vue.js
前端摸鱼匠5 小时前
Vue 3 的toRefs保持响应性:讲解toRefs在解构响应式对象时的作用
前端·javascript·vue.js·前端框架·ecmascript
lang201509285 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
好家伙VCC6 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
未来之窗软件服务7 小时前
未来之窗昭和仙君(六十五)Vue与跨地区多部门开发—东方仙盟练气
前端·javascript·vue.js·仙盟创梦ide·东方仙盟·昭和仙君
嘿起屁儿整7 小时前
面试点(网络层面)
前端·网络
VT.馒头7 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
phltxy8 小时前
Vue 核心特性实战指南:指令、样式绑定、计算属性与侦听器
前端·javascript·vue.js
Byron07079 小时前
Vue 中使用 Tiptap 富文本编辑器的完整指南
前端·javascript·vue.js