【总结】1739- 使用 Pake 一键将网页打包成桌面 App

通常,我们说的软件指的是一个可以独立运行的程序,那么我们前端工程师开发的网页也属于软件吗?从计算机的角度来说,网页也是一个软件,但它很少让人归为软件一类。作为一个前端 web 开发者,我一直被桌面 App 所吸引,它拥有更快的加载速度,并且拥有完全独立的应用界面,让人觉得更加专业。因此我也想开发出属于自己的独立桌面 APP。

作为一名 web 开发者,若想要开发出属于自己的桌面 App,技术上我们可以选择使用 Electron JS 或者 tauri,但使用他们都需要一定开发成本,今天我将介绍一个开源的构建工具 Pake,它使用 Rust 或者说是 tauri,使用一个命令就可以将网页打包成一个很小的桌面 App。

使用

# Install with npm
npm install -g pake-cli# Command usage
pake url [OPTIONS]...# example
pake https://maqib.cn --name Blog --transparent --icon ./blog.icns

首次打包会比较慢,--transparent 表示启用沉浸式头部,mac 上没有 App 默认头部样式

比如,将我的博客也打包成一个桌面 App,就是这个样子。

c8a7e87153cee438a0f9251e0b6507ed.png

我们还可以通过注入脚本来隐藏谷歌广告,下文会讲到。

前提条件

mac 用户本地打包需要确保 Rust >=1.63Node >=16使用以下命令查看 rust 版本

rustc --version

如果 rust 版本较低可以使用以下命令更新版本

rustup update

windows 用户需要设置 Microsoft Visual Studio C++ 构建

在线打包

如果绝的本地配置环境麻烦,我们可以使用 Github Action 在线打包。

  • 首先 Fork 这个项目

  • 然后进入 Actions 界面,选择 Build App with Pake Cli,填写表单信息,然后单击 Run Workflow

表单参数和填写要求与pake cli的参数基本一致。有关详细信息,请参阅pake-cli 文档。

333c8199499a35cea57cbcb9a3356796.png

ICON 生成

唯一要做的是设计一个 ICON,打包的平台不同,需要有不同格式的 ICON,.icns,.ico,.png icons。我们可以从 macOSicons 中下载一个 ICON, 也可以使用 tauri 命令打包出适配不同平台适配的 ICON

首先安装 tauri

yarn add tauri
yarn tauri icon ./app-logo.png

提供一张尺寸是1024*1024透明的图片

353f94b776ee932b0a481ca7e6edeb95.png

我们可以在 figma 中建立一个 frame 大小是512*512,中间的底色大小是412*412,圆角弧度是90, 导出 2 倍尺寸 png 就可以了。中间的底色大小和圆角不是固定值,可以自行设计。

开发者定制

对于 rust 和前端开发者,我们也可以基于 Pake 的工程自定义开发,Pake 是一个基于 tauri 项目,其优势是我们可以直接基于一个在线网页进行定制,解决了桌面 App 更新的烦恼,比如其GIThub上就有:微信读书 Twitter、ChatGPT 等示例项目。

我们可以在项目中直接注入 JavaScript 和 css 代码,就像一个网页的油猴脚本。

比如:官方 ChatGPT 的示例项目中就增加了 GPT-4-mobile 的模型

56706c5ec625bc95a03bed162475faa5.png
image.png

它通过覆盖默认的 fetch 方法,往返回的结果中注入了 GPT-4-mobile 模型。

04f6d41683a731510b30db663a53fda7.png

同理我们可以注入 css 来隐藏广告,添加事件等。

小结

本文介绍了一个命令行工具 Pake,使用 Rust 将打包网页生成小型桌面应用,支持 Mac / Windows / Linux。相比传统的 Electron 打包,要小将近 20 倍,大小在5M 上下。底层使用 Rust Tauri 框架,性能体验较 JS 框架要轻快不少,内存小很多,实现了沉浸式的窗口、拖动、样式改写、去广告等功能。

往期回顾

#

如何使用 TypeScript 开发 React 函数式组件?

#

11 个需要避免的 React 错误用法

#

6 个 Vue3 开发必备的 VSCode 插件

#

3 款非常实用的 Node.js 版本管理工具

#

6 个你必须明白 Vue3 的 ref 和 reactive 问题

#

6 个意想不到的 JavaScript 问题

#

试着换个角度理解低代码平台设计的本质

f96bb7bddee446f7d3b2b8ec8e7670cf.gif

回复“加群”,一起学习进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39301.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

资讯周报@2 (2023-03-19)

title: 资讯周报-2 date: 2023-03-19 author: “KazooTTT” tags: 周报资料收集chatgpt设计figmavercel 时间范围:2023-03-12-2023-03-19 来源:github、twitter、微博、b站 一、浏览器插件&油猴脚本 沉浸式双语网页翻译扩展 #翻译 #浏览器插件 …

chatgpt赋能python:利用Python抢鞋的技巧与方法

利用Python抢鞋的技巧与方法 随着互联网的迅速发展,近年来,越来越多的人选择网上购物,其中包括了运动鞋的选购。而在运动鞋市场上,限量版鞋款成为了热门,但是由于数量有限,往往在发售后的几秒钟就被抢购一…

【OpenAI】利用 OpenAI 的 ChatGPT 和 GPT-4 训练与Ogimi 创始人谈冥想

OpenAI在12月1日发布的NLP(自然语言识别)新模型ChatGPT,刚刚与广大网友度过了一个愉快而又有意义的周末。 该模型是OpenAI在2020年推出的NLP预训练模型——GPT-3的衍生产品。在此之前,一直有预测OpenAI将在今年底或明年初推出GPT-…

AI_News周刊:第五期

2023.03.06-2023.03.11 News 1.OpenAI 发布了ChatGPT 和 Whisper API OpenAI 以比预期低得多的价格发布了 ChatGPT 和 Whisper API,部分原因是为了响应开源 LLM 和竞争对手模型的进步。ChatGPT 可通过 GPT-Turbo 以每 1k 代币 0.002 美元的价格获得,比…

ChatGLM-6B论文代码笔记

ChatGLM-6B 文章目录 ChatGLM-6B前言一、原理1.1 优势1.2 实验1.3 特点:1.4 相关知识点 二、实验2.1 环境基础2.2 构建环境2.3 安装依赖2.4 运行2.5 数据2.6 构建前端页面 3 总结 前言 Github:https://github.com/THUDM/ChatGLM-6B 参考链接&#xff1a…

迷人的人工智能:为什么它是程序员的第四大“浪漫”?

人工智能是指让计算机具有类似人类的智能和思维的技术,它是当今科技领域最前沿和最具潜力的研究方向之一。 马斯克是一位著名的企业家,他对人工智能也非常感兴趣,并投资了多个与之相关的公司(最著名的当属时下最火热的ChatGPT背后…

浅析人工智能,大数据

人工智能发展到了什么阶段? 人工智能的发展从开始到现在,经历了三个阶段,第一个阶段我们叫做计算智能,这个阶段要解决的事情,叫做能存会算。第二个阶段是感知智能,这个阶段是能听会说,能看会认。第三个阶段往下发展应该叫认知智能,要达到什么样的程度呢?要能够理解、会…

CTP 7*24小时期货自动交易程序

如何配置程序: 策略如何行: 运行程序: 更详细的说明: 常见问题及说明: 配置程序后无法登陆? 昨天程序还可以正常登陆,今天怎么不行了? 怎样及时发现交易过程中出现问题&am…

如何在智能合约中调用另一个合约的函数

智能合约是在区块链中被执行的一段程序,因为它们在区块链上执行,所以不依赖于任何的中心化服务器。目前最主流的智能合约编程语言是 Solidity。 在以太坊区块链中,智能合约可以和其他已经部署的智能合约进行交互。除了以太坊,其他…

chatgpt是否会代替程序员

ChatGPT能否取代程序员? ChatGPT是一种非常普遍的人工智能(AI)系统,被广泛应用于自然语言处理领域。但是,这个问题是一个非常复杂的问题,需要经过认真的思考和辩论。ChatGPT能否取代程序员?这个…

GPT1、GPT2、GPT3、InstructGPT

GPT全称是 Generative Pre-Trained Transformer。顾名思义,GPT的目的就是通过Transformer为基础模型,使用预训练技术得到的通用的文本模型。目前已经公布论文的有文本预训练GPT-1、GPT-2、GPT-3,以及InstructGPT。ChatGPT和InstructGPT在模型…

python编程游戏代码tkinter,python编程游戏代码大全

python有趣的编程代码 class Point: row0 col0 def __init__(self, row, col): row col def copy(self): return Point(, )#初始框架import pygameimport random#初始化()W800H600ROW30COL40size(W,H)windowpygame.display.set_mode(size)pygame.display.set_cap…

python小游戏——推箱子代码开源

♥️作者:小刘在这里 ♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,愿所有的美好&#…

【C++小游戏】推箱子代码

注:本程序完全原创,如果有BUG,欢迎私信投诉。 Upd 2023/1/2 : 把代码扔到 LOJ 里格式化了一下,希望代码看起来没原来那么丑陋。 Upd 2023/3/3 : 修复了一个没有测试出来的 bug(箱子推进去后无法立即显示) …

怎么把知网的外文文献翻译成中文_知网查重中文译成英文可行吗?

把中文翻译成英文知网查重是能查出的,最新的版本增加了中英文互译、跨语言检测等功能。因此,中国知网不仅能查重英文论文,还能将中文翻译成英文的论文给查出来。所以说,中文译成英文不是一个好办法。那么,知网查重中文译成英文可行吗? 一、中国知网能否查重英文 目前市场…

开源大模型文档

开源大模型综述 排行榜1.LLaMA资源: 2.Chinese-LLaMA-Alpaca资源: 3.Alpaca资源: 4.Alpaca-LoRA5.Vicuna资源: 6.OpenChatKit资源: 7.GPT4ALL8.Raven RWKV资源: 9.OPT资源: 10.Flan-T5-XXL资源&…

5月份读书学习好文记录

学好C可以采取以下几个步骤: 掌握基本语法:C的语法对于初学者来说可能是一件比较难的事情,所以需要花时间掌握C的语言基础和语法规则,例如数据类型、流程控制、函数等。 学会面向对象编程(OOP):C是一种面向对象的编程…

多表关联出现重复数据原因

多表联合查询的时候,可能会产生多条重复数据,出现的原因: 1.可能是你用来进行 join的列,具有重复数据。 今天下午在写sql的时候,由于没有注意到该列的值并不是唯一的,所以导致查询出来的有N条重复数据 解决…

数据拼接出现重复

数据拼接出现重复 使用join方法拼接数据出现重复 使用join方法拼接数据出现重复 打印日期和星期,首先获取当前日期毫秒,再通过for循环将毫秒计算出下一日期 如要实现打印如下日期 代码如下 当28行和23行位置互换,就会发生一下情况 原因是…