一个使用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://xiahunao.cn/news/3225765.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

excel PivotTable 透视表

开发数据导出excel功能,设置导出透视表 数据源: 透视表: 使用插件EPPlus 数据源: IF OBJECT_ID(tempdb..#temptable) IS NOT NULLDROP TABLE #temptable; CREATE TABLE #temptable ( [PROJECT] varchar(50), [PRODUCT_CODE] var…

Java NIO合并多个文件

NIO API java.nio (Java Platform SE 8 ) 直接上代码 package com.phil.aoplog.util;import lombok.extern.slf4j.Slf4j;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels.FileChannel;Slf4j public…

深入剖析C++的 “属性“(Attribute specifier sequence)

引言 在阅读开源项目源代码是,发现了一个有趣且特殊的C特性:属性。 属性(attribute specifier sequences)是在C11标准引入的。在C11之前,编译器特有的扩展被广泛用来提供额外的代码信息。例如,GNU编译器&…

无菌隔离器内操作规范性的验证之气流流型验证-北京中邦兴业

无菌隔离器在制药行业的使用愈加广泛,但已有的研究更多地聚焦于设计布局、物料状态等方面,对人员操作因素的影响方面关注较少。以冻干制剂生产车间为例,设计了一系列合理的无菌隔离器内干预操作,并在操作人员实行干预操作的基础上…

面试题 21:解释 Python 中的 help() 函数和 dir() 函数?

欢迎莅临我的博客 💝💝💝,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

8.6结构体函数参数

代码 #include <iostream> using namespace std; #include <string>//结构体函数参数//定义学生结构体 struct student {string name;int age;int score; };//打印学生信息的函数 //1、值传递 void printStudent1(struct student s) {cout << "子函数1…

如何查看GD32 Keil和IAR工程的map文件

我们在设计调试程序时&#xff0c;往往需要知道一个函数或一个变量它在MCU中具体所在的地址以及所占用的空间大小&#xff0c;这时候就需要查看map文件。 那么什么是map文件呢&#xff1f;map文件是编译器编译工程后生成的一个文件&#xff0c;文件会有很多信息&#xff0c;比…

小米恢复联系人,跟着这2个步骤,让你的社交重回巅峰

当你突然发现小米手机里的联系人列表变得空空如也&#xff0c;是不是感觉就像失去了与外界沟通的“秘密武器”&#xff1f;别担心&#xff0c;这并不意味着你真的失去了他们。他们可能只是藏在了手机里的某个神秘角落&#xff0c;等待着你的召唤。接下来&#xff0c;小编将会介…

连续6年夺冠 6项细分领域第一,中电金信持续领跑中国银行业IT解决方案市场

7月9日&#xff0c;工信部赛迪顾问发布《2023年度中国银行业IT解决方案市场分析报告》&#xff08;简称《报告》&#xff09;。中电金信以7.38%的市场份额再度蝉联2023中国银行业IT解决方案市场份额第一&#xff0c;以显著优势持续领跑中国银行业IT解决方案市场。在细分领域&am…

园区电表4G/Lora远程无线通讯-安科瑞自助缴费系统

项目案例&#xff1a;张江高科产业园 背景 上海张江高科技园区自1992年成立以来&#xff0c;经过近二十年的开发&#xff0c; 园区构筑了生物医药创新链&#xff0c;集成电路产业链和软件产业链的框架。园区建有国家上海生物医药科技产业基地、国家信息产业基地、国家集成电路…

[leetcode] car-pooling 拼车

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool carPooling(vector<vector<int>>& trips, int capacity) {int to_max 0;for (const auto& trip: trips) {to_max max(to_max, trip[2]);}vector<int> diff(to_max 1);for…

CentOS 设置手动同步指定NTP时钟服务器

1. 文件上传至服务器 2.进入文件路径 3.查看文件名称 4.安装rpm包 注意执行顺序 1&#xff0c;3&#xff0c;2 5.启动ntp并设置开机自启 6.配置ntp配置文件 修改为时间服务器ip&#xff08;同时要删除或注释掉其他三个server开头的外网的配置&#xff0c;防止因为外网不通导致…

电脑怎样连接打印机?详细步骤告诉你!

在现代办公环境中&#xff0c;打印机是必不可少的设备之一。无论是打印文档、图片还是其他资料&#xff0c;连接打印机都是我们日常工作中的基本操作。然而&#xff0c;不同类型的打印机和连接方式可能会让人感到困惑。本文将介绍电脑怎样连接打印机的3种方法&#xff0c;帮助您…

捷配笔记-如何设计PCB板布线满足生产标准?

PCB板布线是铺设连接各种设备与通电信号的路径的过程。PCB板布线是铺设连接各种设备与通电信号的路径的过程。 在PCB设计中&#xff0c;布线是完成产品设计的重要步骤。可以说&#xff0c;之前的准备工作已经为它做好了。在整个PCB设计中&#xff0c;布线设计过程具有最高的极限…

基于Android平台开发,仿头条新闻app

1. 项目模块功能思维导图 2. 项目涉及到的技术点 数据来源&#xff1a;聚合数据API使用okhttp网络请求框架获取api数据使用gson库解析json数据使用RecyclerViewadapter实现新闻列表使用SQLite数据库实现用户登录&#xff0c;注册&#xff0c;浏览历史记录使用SharedPreference…

【Python】基础语法体系:break,continue,pass语句详讲

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言break 语句实例 continue 语句实例 pass 语句实例 前言 接着上一章的知识&#xff0c;我们这一章继续来讲讲语句的相关知识&#xff0c;在Python中&#xff0c;break、contin…

数据库|实践干货!实现tiup与prometheus迁移

一、背景 由于规划变动&#xff0c;需要将tiup和prometheus移动到其他的机器上&#xff0c;要求平滑迁移&#xff0c;不丢失监控数据。 关于prometheus的数据迁移《迁移prometheus数据》&#xff08;https://tidb.net/blog/1ea36c1f?shareIdba5da793&#xff09;这篇专栏文章…

关于《中国PostgreSQL考试认证体系》通知

为响应国家大数据战略发展的号召&#xff0c;进一步推动PostgreSQL开源数据库在国内的快速发展&#xff0c;加强PostgreSQL 数据库相关人才培养&#xff0c;由政府相关部门批准发起&#xff0c;组成中国PostgreSQL认证考试中心及PostgreSQL 中国大学&#xff0c;旨在共同规范和…

MUNIK解读ISO26262 : 硬件架构评估及FMEDA(系统级)

前言 功能安全领域硬件层面的核心安全活动---FMEDA&#xff08;Failure Modes Effects and Diagnostic Analysis&#xff09;一直受到功能安全工程师的广泛关注&#xff01;作为定量分析的安全分析方法&#xff0c;FMEDA涉及到了复杂的计算公式和大范围的数据处理。 为何做FME…