《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个使用 Go 和 Web 技术构建桌面应用程序的项目——WAILS。

Wails 是一个框架,可以使用 Go 和 Web 技术帮助编写桌面应用程序。对于前端,使用 Webview 库. 不过它使用平台的本机渲染引擎(当前 Linux 和 Mac 使用 Webkit,Windows 使用 MSHTML)。前端使用 HTML / Javascript / CSS 编码,后端是纯 Go 语言。通过绑定机制,可以将 Go 代码作为返回 Promise 的功能公开给前端。该项目编译为单个可执行文件,将所有资源捆绑到其中。在 Windows 和 MacOS 上,可以将二进制文件捆绑到特定于平台的程序包中进行分发。

注意:渲染引擎是 WebView,不是捆绑的 Web 浏览器,因此某些“浏览器 API”将对您的应用程序不可用,例如 localstorage。大多数应用程序不需要使用它们,如果您仍然想这样做,可以使用 Go 来完成大多数事情。

功能

  • 后端使用标准 Go

  • 使用任意前端技术构建 UI 界面

  • 快速为您的 Go 应用生成 Vue、Vuetify、React 前端代码

  • 通过简单的绑定命令将 Go 方法暴露到前端

  • 使用原生渲染引擎 - 无嵌入式浏览器

  • 共享事件系统

  • 原生文件系统对话框

  • 强大的命令行工具

  • 跨多个平台

概述

  • Wails

Wails 被设计成尽可能缩小 web 技术和 Go 之间的差异。前端是 Webview 组件, 并且您可以使用自己喜欢的任何常见 Javascript 框架来开发前端代码,并且可以与里面的 Go 代码进行交互。这是通过共享的 IPC 机制来实现的。

  • IPC 概述

IPC 机制可以在 2 个运行时中运行,一个运行在 Javascript 中,另一个运行在 Go 中。它们都提供了一个简单的接口,从而减轻了开发人员直接处理 IPC 机制的负担。

运行时共享开发人员可以与之交互的公共组件:绑定和事件。

  • 绑定

Wails 应用程序提供了一种方法,可让您将公开的 Go 代码(绑定)到前端。使用此方法,可以将任意函数或公开的结构方法绑定。在启动时,Wails 将分析绑定的函数/方法并自动在 Javascript 中提供等效函数。使您可以直接从 Javascript 调用绑定的 Go 代码。

JavaScript 包装函数,处理了调用 Go 代码的所有复杂性。您只需使用 Javascript 调用该函数并接收一个 Promise。绑定 Go 代码功能,处理了绑定的所有复杂性。如果对 Go 代码的调用成功完成,则结果将传递到 resolve 函数。如果返回错误,则将其传递给 reject 函数。

  • 事件

Wails 提供了一个统一的事件系统,类似于 Javascript 的原生事件系统。这意味着从 Go 或 Javascript 发送的任何事件都可以由任何一方接收。数据可以随任何事件一起传递。这样,您就可以做一些简单的事情,例如让后台进程在 Go 中运行,并通知前端去更新页面。

安装

  • 安装命令

安装过程非常简单,只需运行以下命令:

go get -u github.com/wailsapp/wails/cmd/wails

安装后,“wails update”命令可用于后续更新。

要获得最新功能的最新 pre-release 可以在后面附加 -pre 标签:wails update -pre.

要完成安装设置,请运行 安装命令 wails setup 并且填写对你的名字和邮箱。

  • 生成新项目

使用初始化命令 wails init 生成一个新项目,选择默认选项。

  • 构建

切换到项目目录 cd my-project 并且使用构建命令构建命令 wails build 构建你的项目。

如果一切顺利,则应该在本地目录中有一个已编译的程序。如果使用 Windows,请使用 ./my-project 来运行它或双击 myproject.exe

项目展示

WOMBAT

SURGE

MOLLY 钱包

PORTFALL

RESTORIC

OPTIMUS 截图编辑器

—END—

开源协议:MIT

开源地址:https://github.com/wailsapp/wails

(点击文末 阅读原文 可直接跳转哦~)

往期推荐

《Go 开源说 2022》预告PAAS系列之第12期 集群镜像技术 sealer

基于 QUIC 协议的 HTTP/3 正式发布

Go高级工程师必修课 | 真心建议你来听听,别错过~

想要了解Go更多内容,欢迎扫描下方

使用 Go 和 Web 技术构建桌面应用程序相关推荐

  1. 使用 Electron 构建桌面应用程序的介绍

    事实上的团队协作软件,Visual Studio Code - 在撰写本文时市场上最受欢迎的代码编辑器之一,以及WhatsApp的桌面版本都有一个共同点:它们都是用Electron构建的.js.随着这 ...

  2. 借助Web技术,桌面用户界面将保持活跃

    要了解Java桌面应用程序有什么问题,让我们看一下JavaFX(桌面应用程序的领先UI框架)的新功能. 很明显,它正在向Web方法发展,从Web世界中借用了越来越多的功能. JavaFX支持一部分CS ...

  3. python界面开发 web_使用 web 技术构建 python 的 GUI 界面

    一般来说,选择用于应用程序的 GUI 工具箱会是一个棘手的事情,Python 也不例外.对于 Python 来说,可以选择的工具箱种类繁多.就我所知道的而言,比较常用的就有 TkInter, wxPy ...

  4. html getelementbyid 修改图片_如何使用HTML、CSS和JS轻松构建桌面应用程序

    HTML,CSS和JavaScript语言是否可以真正用于构建桌面应用程序? 答案是肯定的. 在这篇文章中,我们将主要关注Electron如何使用HTML.CSS和Javascript等网络技术来创建 ...

  5. 教程– Griffon:使用Groovy构建桌面应用程序

    如果您愿意将Groovy融入其中,那么构建桌面应用程序将是一种愉快的体验. Griffon是一个遵循Grails精神的应用程序框架,将乐趣带回了桌面开发. 桌面应用程序开发 ,这是当今Web开发,并发 ...

  6. 【宝藏级构建桌面应用程序】使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序

    使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序 用户喜爱的应用,以 Electron 构建 Visual Studio Code | WhatsApp | Twitch | ...

  7. 使用Vue构建桌面应用程序:Vuido

    我非常喜欢Vue.这是个优秀的框架,可以帮助我们搭建完美的web应用程序.但真正神奇的地方是你不仅仅可以用它搭建web应用程序,还可以使用Weex或NativeScript-Vue创建本地移动应用程序 ...

  8. Web 上构建MDI 应用程序---Prototype Window Class

    今晚在网上看到一个非常酷的JS框架Prototype Window Class.Web开发者通过Prototype Window Class便可以轻松地在网页上构建各式各样的窗口(Window or ...

  9. web项目转为桌面应用程序

    1. 简介 本教程是利用npm和nativefier实现把任意web项目转换成一个桌面应用软件. 2. 环境及软件 操作系统:Windows10 64位 软件:node.js (node-v8.11. ...

最新文章

  1. qiime2安装和使用案例
  2. python多变量拟合_python-使用scipy拟合多个参数曲线
  3. Linux监控命令之==vmstat
  4. 云网络丢包故障定位全景指南
  5. android layer阴影,Android Layer-List实现自定义Shape阴影
  6. 关于比较器Comparator排序时间的问题
  7. 吴军《谷歌面试题:倒置英文句子》
  8. activiti启动流程实例,添加进businessKey
  9. hdu acm2548
  10. lib、dll文件的中函数的查看与lib、dll、pdb文件的介绍
  11. echarts 节点拖拽
  12. 对PBFT算法的理解
  13. 突如其来的第一个1024要笑着过
  14. 黎曼的zeta函数(0)
  15. Maven在线仓库地址
  16. 全面、详细的SQL学习指南(MySQL方向)
  17. 有什么APP软件可以测试耳环,心理测试选择自己喜欢的耳环,测试自己最招桃花的地方...
  18. pikachu全网最详细安装教程
  19. getchar消除回车符号
  20. threejs加载服务器文件,如何使用Three.js加载obj和mtl文件

热门文章

  1. mac装linux fedora,桌面应用|在 MacBook Air 上安装 Fedora 26
  2. ps 自动生成html代码,谁知道用ps软件做出来的图片怎么生成html代码?求生成html代码步骤...
  3. 基于PLC饮料罐装生产流水线控制系统
  4. ps3运行linux,PS3安装LINUX—ubuntu-9.04图文全教学
  5. Klein 侧扫声呐系列介绍
  6. 分类:决策树——树的生长
  7. ERP实施顾问面试技巧(转载)
  8. 在linux关闭的命令,Linux系统关闭或重新启动主机的命令详解
  9. 关于微软XBOX360游戏机控制器手柄那些事
  10. 优品购电商3.0项目