丢掉WebView,使用JS+Rust开发跨端桌面应用-Deft
简介
随着Web技术的发展,越来越多的跨端应用选择了WebView作为基础解决方案。诚然WebView让跨端应用开发变得简单了很多,极大的提高了开发效率,但是,WebView也存在着一些广为诟病的缺点,比如内存占用大,包体积大,系统调用不方便等。所以,Deft诞生了。
Deft是一个高性能跨平台开源UI框架,底层使用Rust开发,支持使用JS/React开发界面,目前支持Linux,Windows,MacOS和Android等系统。为了提高性能,Deft提供了便捷高效的方式使用Rust开发API和UI组件。
快速开始
开始前,系统需要先安装nodejs,Rust,clang14+,如果未安装,直接去官网下载安装即可。
执行下面命令,快速创建新工程,demo为新工程名称。
npm create deft@latest demo
根据自己的喜好选择语言和框架,这里,以TypeScript+React为例。
命令执行完后,会在当前目录下创建一个demo项目,执行下面命令启动项目。
cd demo
npm install
npm run dev
启动成功后,会得到如下输出:
...
webpack 5.91.0 compiled successfully in 1995 ms
==============================================
Press r to run on this device
Press a to run on connected android device
Press q to quit
==============================================
按r,即可开始构建预览应用。首次构建,需要下载依赖,所以耗时可能会比较长,可以配置cargo镜像提高下载速度。
构建成功后,就能看到预览窗口了,可以直接修改ui目录下的JS/TS文件实时预览效果。

资源占用
内存63M,应用体积包31.5M
目录结构
├── android -- 安卓工程相关文件
├── build.rs -- Cargo构建脚本
├── Cargo.lock
├── Cargo.toml -- Cargo项目配置文件
├── dev-hack.js
├── package.json -- JS项目配置文件
├── package-lock.json
├── src -- Rust源代码
│ └── main.rs
├── tsconfig.json -- TypeScript配置文件
├── ui -- JS/TS源代码
│ ├── app.tsx
│ ├── deft-env.d.ts
│ └── main.ts
└── webpack.config.js -- Webpack配置文件
打包
执行下面命令即可打包
npm run build
打包完成后,会在target/你的系统架构/release/目录下生成一个单独的可执行二进制文件(包含编译后的JS代码),将其拷贝出来即可。
文档 & Demo参考
Github:https://github.com/deft-ui/deft
文档:https://deft-ui.github.io/guides/what-is-deft/
官方同时提供贪吃蛇,视频播放器,视频格式转换器,SPICE远程桌面客户端等多个Demo,可直接前往 https://deft-ui.github.io/demos/ 查看。
丢掉WebView,使用JS+Rust开发跨端桌面应用-Deft的更多相关文章
- js组件开发-移动端地区选择控件mobile-select-area
移动端地区选择控件mobile-select-area 由于之前的[js开源组件开发]js手机联动选择地区仿ios 开源git 很受欢迎,于是我又对其进行了一些优化,包括可选的范围变大了,添加了默认空 ...
- nuxt.js 本地开发跨域问题(Access-Control-Allow-Origin)及其解决方案
先运行npm i @gauseen/nuxt-proxy -D 再nuxt.config.js的module.exports 里面添加如下代码 modules:[ '@nuxtjs/axios', / ...
- Taro 3 正式版发布:开放式跨端跨框架解决方案
作者:凹凸曼 - yuche 从 Taro 第一个版本发布到现在,Taro 已经接受了来自于开源社区两年多的考验.今天我们很高兴地在党的生日发布 Taro 3(Taro Next)正式版,希望 Tar ...
- tauri+vue开发小巧的跨OS桌面应用-股票体检
最近打算写一个用于股票体检的软件,比如股权质押比过高的股票不合格,ROE小于10的股票不合格,PE大于80的股票不合格等等等等,就像给人做体检一样给股票做个体检.也实现了一些按照技术指标.基本面自动选 ...
- webview与JS的交互
webview与JS的交互 一:hybird app, web app 和 native app 的区别 Web App Hybird App 混合Native App 开发成本 低 中 高 维护 ...
- 《IM开发新手入门一篇就够:从零开发移动端IM》
登录 立即注册 TCP/IP详解 资讯 动态 社区 技术精选 首页 即时通讯网›专项技术区›IM开发新手入门一篇就够:从零开发移动端IM 帖子 打赏 分享 发表评论162 想开 ...
- React / Vue 跨端渲染原理与实现探讨
跨端渲染是渲染层并不局限在浏览器 DOM 和移动端的原生 UI 控件,连静态文件乃至虚拟现实等环境,都可以是你的渲染层.这并不只是个美好的愿景,在今天,除了 React 社区到 .docx / .pd ...
- 移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签)
移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签) 一.总结 一句话总结: 添加viewport标签:meta name="viewport" ...
- 好程序员分享Web前端面试题汇总JS篇之跨域问题
为什么80%的码农都做不了架构师?>>> 好程序员分享Web前端面试题汇总JS篇之跨域问题,接着上一篇文章我们继续来探讨web前端面试必备面试题. 跨域解决方案 1. 通过jso ...
- HarmonyOS新能力让数据多端协同更便捷,数据跨端迁移更高效!
作者:yijian,终端OS分布式文件系统专家:gongashi,终端OS分布式数据管理专家 HarmonyOS作为分布式操作系统,其分布式数据管理能力非常重要.我们也一直围绕持续为开发者带来全局&q ...
随机推荐
- Winform跨线程访问报错问题解决
` using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; u ...
- COSBrowser 文件夹分享——多端文件实时共享
您还在为临时分享某个文件夹而烦恼吗? 您是否对授权的复杂度感到震惊? 关于存储桶 Policy 权限,您是否很迷茫,不知如何设置? 不用着急,用 COSBrowser 开始文件夹分享,一键简化分享 ...
- vba interpreter 结束
https://github.com/inshua/vba-interpreter 已覆盖几乎 VB 所有的特性,只是库还不够全. VB 语言自身较为落后,语法也有诸多设计不当.最严重的莫过于函数和数 ...
- 解决编译redis报错zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory
编译redis时报错:zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory,执行: # sudo m ...
- 【转载】 DirectByteBuffer内存释放
http://www.tianshouzhi.com/api/tutorials/netty/331 我们已经知道,在网络编程中,为了避免频繁的在用户空间与内核空间拷贝数据,通常会直接从内核空间中申请 ...
- Qt编写的项目作品33-斗图神器(雨田哥作品)
一.功能特点 支持HTTP,HTTPS网络表情图片下载,本地缓存. 采用MV模式,支持大量图片表情预览查看. 采用多线程异步下载图片刷新. 图片搜索功能(因网络提供API无信息字段提供,占搜索不了.但 ...
- Datawhale 2025冬令营“嬛嬛,我来啦!”😘
Datawhale2025冬令营 Datawhale 2025 AI冬令营链接:https://www.datawhale.cn/activity/110/21/76?rankingPage=1 赠送 ...
- Web网页端IM产品RainbowChat-Web的v6.0版已发布
一.关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIM ...
- 痛苦调优10小时,我把 Spark 脚本运行时间从15小时缩短到12分钟!
周一我就有个困惑,还写成文章了:如何从 Spark 的 DataFrame 中取出具体某一行,里面提了自己猜想的几种解决方案. 没想到这么快就要面对这个问题了,我用小孩子都听得懂的例子描述一下我在干什 ...
- GeoServer加载Arcgis切片服务
使用GeoServer中的GeoWebCache加载Arcgis切片服务 下载安装 GeoServer和GeoWebCache的下载安装都非常简单,这里选择"独立于平台的二进制版本" ...