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...

相关推荐
excel34 分钟前
用 TensorFlow.js Node 实现猫图像识别(教学版逐步分解)
前端
gnip1 小时前
JavaScript事件流
前端·javascript
赵得C1 小时前
【前端技巧】Element Table 列标题如何优雅添加 Tooltip 提示?
前端·elementui·vue·table组件
wow_DG1 小时前
【Vue2 ✨】Vue2 入门之旅 · 进阶篇(一):响应式原理
前端·javascript·vue.js
weixin_456904271 小时前
UserManagement.vue和Profile.vue详细解释
前端·javascript·vue.js
资深前端之路1 小时前
react 面试题 react 有什么特点?
前端·react.js·面试·前端框架
aaaweiaaaaaa1 小时前
HTML和CSS学习
前端·css·学习·html
秋秋小事2 小时前
React Hooks useContext
前端·javascript·react.js
Jinuss2 小时前
Vue3源码reactivity响应式篇之reactive响应式对象的track与trigger
前端·vue3
striver_#2 小时前
百度前端社招面经二
前端