一个名叫 niva 的开源框架,国人开源的,更新比较佛系,但目前的功能基本够用
上官网简介
简介
什么是 Niva?
Niva 是一个跨平台(支持 Windows 和 MacOS)的桌面应用开发框架,使用前端技术开发,可用于构建轻量级的桌面应用。它基于系统 Webview 而非 Chromium,体积仅为 3MB ~ 4MB,不需要 Node.js 环境,直接提供系统 API 进行操作。Niva 兼容 React / Vue 等主流框架,对于 Vue 和 React 项目可以直接一键导入。
Niva 开发者工具
Niva 开发者工具是一个图形化界面开发者工具,提供图形化界面进行对 Niva 项目进行构建或者调试的开发工具。
Niva 与 Tauri 和 Electron 的异同
Niva 与 Tauri 和 Electron 定位不同。它是 Tauri 和 Electron 的轻量级替代方案,比它们更加简单易用但同时牺牲了部分生态和能力。
下表列出了 Niva、Tauri 和 Electron 的主要区别:
Niva |
Tauri |
Electron |
体积 |
3MB |
6MB+ |
85MB+ |
支持系统 |
Windows10+/MacOS |
Windows10+/MacOS/Linux |
Windows/MacOS/Linux |
APP 后端 |
无,但可用隐藏 window 代替 |
Rust |
Node.js |
Webview |
System |
System |
Chromium |
生态 |
前端 |
Rust + 前端 |
Node.js + 前端 |
上手难度 |
简单 |
极难 |
困难 |
Niva 使用了 Tauri 的跨端窗口管理库 tao 和跨端 Webview 库 wry,所以在窗口和 Webview 上面 Niva 和 Tauri 具备相同的能力,以及相同数量级的体积。不同之处在于,Niva 直接为 Webview 提供通用的 API,无需编写 Rust 代码,对前端开发者更加友好。而使用 Electron 则需要 Node.js 和 Chromium 的依赖,体积也更大。
与 Electron 相比,Niva 不依赖 Node.js 和 Chromium,因此能够实现更小的体积,对前端开发者更加友好。Niva 提供了图形化的开发者工具和简单易用的配置,能够快速将前端项目迁移至 Niva 等桌面应用。
总之,Niva 专注于提供更小的体积和更加便捷的开发体验,适合需要快速构建轻量级桌面应用的前端开发者使用。
这时候可能就有人会说了,易语言也能做 web 桌面应用开发,有 chromium内核,有 webview 的,有简化的 miniblink 的,我用他干什么
那这就属于仁者见仁智者见智了,易语言目前现有的这些,精易 web 支持库个人感觉代码写起来并不方便,其他各项CEF3 的用起来都差不多、不方便,体积也基本上都要带一个 chromium 内核,大小下不来。
再加上易语言本身不支持 x64,一直都有很多令人诟病的问题。(现在论坛有人在搞基于易语言源码,然后 e2txt 转 C++源码去编译的,可以观望一下,但这是个大工程,指望一个人搞不现实)
还有就是跨平台编译的问题,前段时间还看到有人在问怎么在 mac 上跑易语言编译的 exe 程序
niva 目前支持 windows 和 mac,linux 的兼容配置没做,不过应该没什么大问题
只需要关注前端知识(html+css+js),换句话说只需要会 js 就可以了。
在不支持 webview的系统上,目前官网在说考虑增加 miniblink,但看起来遥遥无期。
底层运行性能基于 rust,这个就不多说了,不过rust 本身是快,但是总归是 js 写,架构层面没走 rust 的js 编译器,那就还是解释型语言
ajax 请求更方便,json 处理更方便,web 开发天然优势,这个也不多说了。
目前用来做了俩项目,遇到的坑大概是 fs 系统读入写出时会让人感到不适,和 electron中不一样的是,electron用的buffer,本质上也是字节数组,存二进制文件直接存了,就和易语言写字节集一样。
niva 中读写文件都是字符串,这就有点难受了,二进制文件没法通过读写字符串去搞,结果我偶然一试,发现他支持的 base64 就可以读写二进制文件,文档中没写明。
另外项目名不支持带中文,project-name 配置带中文在构建 exe 时会报错,有人在 github 上提了 issue,但还是那句话,遥遥无期
|