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

相关推荐
无名小兵29 分钟前
前端渲染大体积 多页面pdf
前端
c0detrend37 分钟前
读诗的时候我却使用了自己研发的Chrome元素截图插件
前端·chrome
希冀1231 小时前
【Vue】第五篇
前端·javascript·vue.js
Moonbit1 小时前
你行你上!MoonBit LOGO 重构有奖征集令
前端·后端·设计
littleplayer1 小时前
Root-> A ->B -> C page, 当前C page, 如何返回B,又如何直接返回A page呢
前端
姝然_95271 小时前
Android Activity启动流程详细分析
前端
littleplayer2 小时前
SwiftUI 导航
前端
用户92426257007312 小时前
Vue 组件入门学习笔记:局部注册、全局注册与 Props 传值详解
前端
云枫晖2 小时前
Webpack系列-构建性能优化实战:从开发到生产
前端·webpack·性能优化
Patrick_Wilson2 小时前
AI会如何评价一名前端工程师的技术人格
前端·typescript·ai编程