使用 Go 和 Web 技术构建桌面应用程序

VSole2022-08-04 11:17:17

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

项目展示

—END—

桌面应用程序前端开发
本作品采用《CC 协议》,转载必须注明作者和本文链接
在Discon桌面应用程序使用的软件框架Electron中发现了第一个安全问题。虽然桌面应用程序不是开源的,但Electron所使用的JavaScript代码已保存在本地,可以提取和检查。Discord的Electron构建中的一项设置“ contextIsolation”被设置为false,这可能允许应用程序外部的JavaScript代码影响内部代码,例如函数。
研究人员报告说,Slack修补了一个严重的远程代码执行漏洞,该漏洞可能使攻击者能够在其协作软件的桌面版本中执行任意代码。Evolution Gaming的安全工程师Oskars Vegeris发现了该漏洞,并于2020年1月通过HackerOne与Slack私下共享。Slack在2月发布了该漏洞的初步修复程序。Vegeris说,这个问题存在于制作Slack post的方式上。敦促Slack用户将其桌面应用程序更新到版本 ,以修复该漏洞。安全研究的价值 200亿美元的公司 Slack 的价值研究通过其漏洞赏金计划向Vegeris仅支付了1,750美元用于RCE漏洞。
通过绑定机制,可以将 Go 代码作为返回 Promise 的功能公开给前端。这是通过共享的 IPC 机制来实现的。它们都提供了一个简单的接口,从而减轻了开发人员直接处理 IPC 机制的负担。在启动时,Wails 将分析绑定的函数/方法并自动在 Javascript 中提供等效函数。
尽管 Google Translate 从未推出过桌面端版本,但是用户搜索就可能会在结果页面看到一些免费软件网站提供下载。伪装成 Google Translate 和其他 Google 服务的应用程序往往在很大程度上存在恶意,其中最广泛的是用于加密挖矿。
NPM供应链攻击可以追溯到2021年12月,当时使用了几十个包含模糊Javascript代码的恶意NPM模块,破坏了数百个下游桌面应用和网站。
外媒 1 月 24 日报道,流行软件构建框架 Electron 中存在一个严重的远程代码执行( RCE )漏洞(CVE-2018-1000006),可能会影响大量热门桌面应用程序,比如 Skype,Signal,Slack,GitHub Desktop,Twitch 和 WordPress.com 等。 Electron 表示目前只有 Windows 的应用程序会受到漏洞影响。
介绍Outlook是微软Office套件中的桌面应用程序,现已成为世界上最受欢迎的应用程序之一,用于发送和接收电子邮件、安排会议等操作。从安全角度来看,该应用程序是负责将各种网络威胁引入组织的关键“网关”之一。该应用程序中任何微小的安全问题都可能造成严重的损害,并破坏企业的整体安全性。因此,在典型的企业环境中检查Outlook上的攻击向量是必要的,这也是Check Point研究团队此项研究的初衷
漏洞概述 AWS VPN应用程序存以 SYSTEM 身份写入任意文件,这可能导致提权和信息泄露漏洞。该漏洞可能导致用户的 Net-NTLMv2 哈希被VPN 配置文件中的 UNC 路径泄露。这些漏洞已确认影响版本 2.0.0,并已在版本 3.0.0 中修复。 要修复漏洞,请升级到可在此处下载的3.0.0版本 [1]
本月更新中解决的漏洞影响Adobe Flash Player、Creative Cloud桌面应用程序、Adobe Experience Manager、Adobe Acrobat和Reader应用程序
Spring框架是一个开放源代码的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。 Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring
VSole
网络安全专家