一个使用Go语言和现代Web技术构建跨平台桌面应用程序开源项目

大家好,今天给大家分享一个使用Go语言和现代Web技术构建跨平台桌面应用程序开源项目Wails

Wails是一个允许开发者使用Go和Web技术编写桌面应用程序的项目。
它被设计为Go的快速且轻量的Electron替代品,旨在提供一个平台,让开发者可以利用Go的性能优势,并结合任何前端技术栈,如React、Vue或Svelte,来创建桌面应用。

项目介绍

Wails作为一个桥梁,连接强大的Go后端逻辑与丰富的Web前端界面,允许开发者利用两者的最佳特性来开发应用。下面是Wails项目的一些关键特点和优势:

特色功能

1. 跨平台能力

Wails编译的应用可以运行在Windows、macOS和Linux上,支持原生菜单、对话框、主题和半透明,无需为每个平台单独编写代码,大大提高了开发效率和应用的可移植性。

2. Go语言后端

利用Go语言的强大功能和性能优势,处理后台逻辑、文件操作、网络通信等任务,同时享受Go的简洁语法和并发处理能力。

3. Web技术前端

前端界面可以使用诸如Vue.js、React、Angular等现代JavaScript框架来构建,这些技术成熟且拥有活跃的社区支持,便于构建交互丰富的用户界面。

4. 轻量级替代方案

Wails被视作Go语言环境下的轻量级Electron替代品,意味着它可以提供类似Electron的开发体验,但目标是创建更小、更快的应用程序。

5. 内置开发工具

Wails提供了一个命令行工具(wailsdev),用于快速搭建、编译和启动应用,包括自动处理前端依赖安装,简化了开发流程。

6. 社区和资源

有如Awesome Wails这样的资源宝库,为开发者提供了模板、启动器、开源组件等,帮助快速启动项目并提升开发效率。

7. 模块化和可扩展

Wails支持自定义绑定,使得开发者能够轻松地将Go代码暴露给前端JavaScript调用,实现前后端的紧密集成。

安装使用

支持的平台

  • Windows 10/11 AMD64/ARM64
  • MacOS 10.13+ AMD64
  • MacOS 11.0+ ARM64
  • Linux AMD64/ARM64

依赖

Wails 有许多安装前需要的常见依赖项:

  • Go 1.18+
  • NPM (Node 15+)

Go

从 Go 下载页面 下载 Go。

确保您遵守官方的 Go 安装说明。 您还需要确保您的 PATH 环境变量包含您的 ~/go/bin 目录路径。 重启终端并执行以下命令检查:

  • 检查 Go 是否安装正确:go version
  • 检查 “~/go/bin” 是否在您的 PATH 变量中: echo $PATH | grep go/bin

NPM

从 Node 下载页面 下载 NPM。 最好使用最新版本,因为这是我们通常会测试的版本。

运行 npm --version 进行验证。

安装Wails

运行 go install github.com/wailsapp/wails/v2/cmd/wails@latest 安装 Wails CLI。

注意:如果您遇到了类似于以下内容的错误:

....\Go\pkg\mod\github.com\wailsapp\wails\v2@v2.1.0\pkg\templates\templates.go:28:12: pattern all:ides/*: no matching files found

请检查您是否已安装 Go 1.18+ ︰

go version

系统检查

运行 wails doctor 将检查您是否安装了正确的依赖项。 如果没有,它会就缺少的内容提供建议以帮助纠正问题。

创建项目

现在 CLI 已安装,您可以使用 wails init 命令生成一个新项目。

  • Svelte
wails init -n myproject -t svelte//如果您更愿意使用 TypeScript:
wails init -n myproject -t svelte-ts
  • React
wails init -n myproject -t react//如果您更愿意使用 TypeScript:
wails init -n myproject -t react-ts
  • Vue
wails init -n myproject -t vue//如果您更愿意使用 TypeScript:
wails init -n myproject -t vue-ts
  • Preact
wails init -n myproject -t preact//如果您更愿意使用 TypeScript:
wails init -n myproject -t preact-ts
  • Lit
wails init -n myproject -t lit//如果您更愿意使用 TypeScript:
wails init -n myproject -t lit-ts

还有提供不同功能和框架的 社区模板。

要查看其他可用选项,您可以运行 wails init -help。 更多详细信息可以在 初始化命令 中找到。

项目布局

Wails 项目有以下布局:

.
├── build/
│   ├── appicon.png
│   ├── darwin/
│   └── windows/
├── frontend/
├── go.mod
├── go.sum
├── main.go
└── wails.json

项目结构概要

  • /main.go - 主应用
  • /frontend/ - 前端项目文件
  • /build/ - 项目构建目录
  • /build/appicon.png - 应用程序图标
  • /build/darwin/ - Mac 特定的项目文件
  • /build/windows/ - Windows 特定的项目文件
  • /wails.json - 项目配置
  • /go.mod - Go module 文件
  • /go.sum - Go module 校验文件

frontend 目录没有特定于 Wails 的内容,可以是您选择的任何前端项目。

build 目录在构建过程中使用。 这些文件可以修改以自定义您的构建。 如果从 build 目录中删除文件,将重新生成默认版本。

go.mod 中的默认模块名称是“changeme”。 您应该将其更改为更合适的内容。

编译项目

从项目目录,运行 wails build。 这将编译您的项目并将构建的可用于生产的二进制文件保存在 build/bin 目录中。

如果您运行二进制文件,您应该会看到默认应用程序:

项目地址

https://github.com/wailsapp/wails

一个使用Go语言和现代Web技术构建跨平台桌面应用程序开源项目 - BTool博客 - 在线工具软件,为开发者提供方便 

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

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

相关文章

springcloud使用微服务的搭建

微服务的搭建 1.配置对应信息 Springboot 、springcloud、springcloud alibaba对应关系 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 2.pom.xml的配置 2.1 总项目pom.xml引入依赖 <parent><groupId>org.sprin…

WindowsMac共享文件夹设置

共享文件夹设置 共享文件夹设置Windows系统设置步骤一&#xff1a;设置共享文件夹步骤二: 访问共享文件夹 Mac系统中设置共享文件夹步骤一&#xff1a;设置共享文件夹步骤二&#xff1a;访问共享文件夹 小贴士结论 共享文件夹设置 有时需要在多台电脑之间共享文件夹&#xff0…

美创科技如何助力高校数据安全体系化升级,标杆实践看这里!

在高校如火如荼的数字化转型建设中&#xff0c;平衡合规与发展的天平&#xff0c;强化数据安全保障&#xff0c;是不可忽视的重要工作。 关于如何有效开展&#xff0c;美创与多所国内一流高校深入实践&#xff0c;本案例作为美创护航高校数据安全的又一典型项目&#xff0c;覆盖…

F4搜索帮助和按条件写sql

1.写SQL * -----增加业务员名字字段------SELECTA~VBELN,C~NAME1_TEXTFROM VBAK AS AINNER JOIN VBPA AS B ON A~VBELN B~VBELNINNER JOIN BUT000 AS C ON B~KUNNR C~PARTNERWHEREB~PARVW Z1AND B~POSNR * AND C~NAME1_TEXT IN S_NAMEINTO TABLE GT_NAME1 .SELECTA~VBE…

汽车免拆诊断案例 | 奥迪 Q7 e-tron无法通过插电式充电器充电

故障现象 车主反映&#xff0c;车辆无法使用自带的插电式充电器充电。&#xff08;这种充电方法是“Mode 2充电”&#xff0c;3针插头&#xff0c;10 A&#xff0c;2.2 kW&#xff09; 接车后验证故障&#xff0c;将Type 2充电插头连接到车辆时&#xff0c;充电口锁定销循环三…

【MySQL】8.复合查询

复合查询 一.基本查询回顾(新增子查询)二.多表查询三.自连接四.子查询1.单列单行子查询2.单列多行子查询——三个关键字3.多列子查询4.在 from 子句中使用子查询 五.合并查询六.总结 一.基本查询回顾(新增子查询) //1.查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还…

MySQL下载安装

下载 1.进入mysql官网&#xff0c;点击下列链接 2.选择server 3.点击Archives&#xff0c;Archives&#xff0c;选择需要的版本 安装 基本是点下一步&#xff0c;值得注意的几点如下&#xff1a; 1、显示所有准备安装的MySQL相关应用&#xff0c;点击“[Execute]”开始执行安…

从数字化营销与运营视角:看流量效果的数据分析

基于数据打通的“全链路”营销是当下的“时髦”&#xff0c;应用它的前提是什么&#xff1f;深度营销和运营的关键数据如何获得&#xff1f;如何利用数据进行更精准的营销投放&#xff1f;如何利用数据优化投放的效果&#xff1f;如何促进消费者的转化&#xff0c;以及激活留存…

【万亿赛道!向量数据库--AI 大模型技术底座解决方案深度分析 2024】

文末有福利&#xff01; ‍ 向量数据库作为新型技术&#xff0c;发展时间较短&#xff0c;开源和上云是目前的主流趋势。在向量数据库领域早期的探索&#xff0c;主要是以Zilliz、Weaviate和Pinecone等初创型公司引领。 在AI大模型未被普遍应用之前&#xff0c;该产品的需求较…

某某会员小程序后端性能优化

背景 某某会员小程序后台提供开放平台能力&#xff0c;为三方油站提供会员积分、优惠劵等api。当用户在油站加油&#xff0c;油站收银会调用我们系统为用户发放积分、优惠劵等。用户反馈慢&#xff0c;三方调用发放积分接口性能极低&#xff0c;耗时30s&#xff1b; 接口情况…

VSCode神仙插件——Codeium (AI编程助手)

1、安装&登录插件 安装过程中会让你登录Codeium账户&#xff0c;可以通过Google账户登录&#xff0c;或者可以注册一个Codeium账户&#xff08;如果没有弹出让你登录账户的界面&#xff0c;可以等安装结束后在右下角找到登录的地方&#xff09; 右下角显示如下图所示&#…

Vue3打包发布,刷新出现的空白页面和错误

Vue3打包发布出现的错误&#xff1a;Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of text/html. Strict MIME type checking is enforced for module scripts per HTML spec. 第一次点击访问到这个路径&…

45 mysql truncate 的实现

前言 truncate 是一个我们也经常会使用到的命令 其作用类似于 delete from $table; 但是 他会比 delete 块很多&#xff0c;这里我们来看一下 它的实现 delete 的时候会逐行进行处理, 打上 删除标记, 然后 由后台任务 进行数据处理 truncate table 的实现 执行 sql 如下 …

C++:从C语言过渡到C++

在这篇博客中&#xff0c;我将会介绍从C语言过渡到C的一些基础知识。 目录 C起源 C的关键字 输出hello&#xff0c;world ​编辑 命名空间 1.什么是命名空间 2.namespace的作用 3.域作用限定符 4.命名空间的使用 IO流 缺省参数 函数重载 引用 1.引用的定义 2.引…

汽车零配件行业看板管理系统应用

生产制造已经走向了精益生产&#xff0c;计算时效产出、物料周转时间等问题&#xff0c;成为每一个制造企业要面临的问题&#xff0c;工厂更需要加快自动化&#xff0c;信息化&#xff0c;数字化的布局和应用。 之前的文章多次讲解了企业MES管理系统&#xff0c;本篇文章就为大…

solidity实战练习1

//SPDX-License-Identifier:MIT pragma solidity ^0.8.24; contract PiggyBank{constructor()payable{emit Deposit(msg.value);//触发事件1//意味着在部署合约的时候&#xff0c;可以向合约发送以太币&#xff08;不是通过调用函数&#xff0c;而是直接在部署合约时发送&#…

中职网络安全wire0077数据包分析

从靶机服务器的FTP上下载wire0077.pcap&#xff0c;分析该文件&#xff0c;找出黑客入侵使用的协议&#xff0c;提交协议名称 SMTP 分析该文件&#xff0c;找出黑客入侵获取的zip压缩包&#xff0c;提交压缩包文件名 DESKTOP-M1JC4XX_2020_09_24_22_43_12.zip 分析该文件&…

26.Labview波形图、XY图、强度图使用精讲

我们如何使用Labview显示曲线或者制作出下面这种我们想要的曲线并随着我们输入值的变化而变化呢&#xff1f; 本文详细讲解一下每种波形图的使用方式&#xff0c;帮助大家深入了解波形图的使用技巧。 文章中所有程序均可在百度网盘下载&#xff0c;下载方式&#xff1a;复制下…

elasticsearch源码分析-04集群状态发布

集群状态发布 cluster模块封装了在集群层面执行的任务&#xff0c;如集群健康、集群级元信息管理、分片分配给节点、节点管理等。集群任务执行之后可能会产生新的集群状态&#xff0c;如果产生新的集群状态主节点会将集群状态广播给其他节点。 集群状态封装在clusterState中&…

python作业二

# 二进制转化为十进制 num input("num:")def binaryToDecimal(binaryString):he 0length len(binaryString)for i in range(length):he int(binaryString[i]) * 2 ** (length - i - 1)return heprint(binaryToDecimal(num))代码运行如下&#xff1a; import math…