当前位置:主页 > 健康云 >

js调用go

  • 健康云
  • 2025-06-19
  • www.shiguanyingerw.cn
  • 健康新闻

一、利用Wails框架(桌面应用场景)

Wails框架提供了一种机制,使得Go和JavaScript能够直接互操作。在开发桌面应用时,这一特性显得尤为重要。

1. 在Go侧定义导出函数

在Go中,我们可以定义一个结构体并导出函数供JavaScript调用。例如:

```go

type App struct{} // 结构体需包含在Wails初始化流程

func (a App) JSCallGo(data string) string {

return "处理结果:" + data

}

```

2. 在JavaScript侧调用Go函数

在JavaScript中,我们可以通过导入或全局对象的方式来调用Go函数。Wails会在构建时自动生成前端调用接口。以下是两种调用方式的示例:

导入调用(推荐):

```javascript

import { JSCallGo } from "../../wailsjs/go/main/App";

JSCallGo("参数").then(result => console.log(result));

```

全局对象调用:

```javascript

window.go.main.App.JSCallGo("参数").then(result => {});

```

二、基于WebAssembly (Wasm)技术(浏览器环境)

WebAssembly技术允许我们将Go代码编译为Wasm模块,然后在浏览器中由JavaScript调用。这一技术在浏览器环境中实现了Go代码的直接运行。

1. 将Go代码编译为Wasm模块

我们可以编写一个Go函数,并将其编译为Wasm模块。例如:

```go

package main

import "syscall/js"

func add(this js.Value, args []js.Value) interface{} { return args[0].Int() + args[1].Int() }

三、通过HTTP/WebSocket接口实现前后端分离架构中的数据传输

在构建现代Web应用程序时,后端服务通常由Go语言提供API接口,而前端则通过JavaScript发出HTTP请求与之交互。让我们深入这一过程。

让我们看一下如何在Go中实现HTTP服务。下面是一个简单的示例代码,演示了如何创建一个HTTP处理器并响应来自前端的请求。

```go

package main

import (

"net/http"

"encoding/json"

)

func handler(w http.ResponseWriter, r http.Request) {

result := map[string]string{"data": "来自Go的响应"}

json.NewEncoder(w).Encode(result)

}

func main() {

http.HandleFunc("/api", handler) // 设置路由处理器

http.ListenAndServe(":8080", nil) // 启动HTTP服务,监听端口8080

}

```

在前端,JavaScript代码可以使用Fetch API发出请求并处理响应。以下是一个简单的Fetch请求示例:

```javascript

fetch('/api') // 请求Go后端服务的API路径

.then(response => response.json()) // 将响应为JSON格式数据

.then(data => console.log(data)); // 打印获取的数据到控制台

``` 这一段展示了典型的通过HTTP接口进行数据交互的模式,适用于标准Web应用场景。在实际应用中,可以构建复杂的路由和API接口以满足不同需求。这种方案的优势在于其灵活性和可扩展性。WebSocket可以在需要实时通信的场景下提供更好的用户体验。前端和后端之间还可以通过跨域请求处理、身份验证等手段增强安全性。在这种架构下,Go的并发处理能力得以充分发挥,为应用程序提供高性能的后端支持。JavaScript的异步特性和丰富的库资源使得前端开发变得轻松灵活。这种方案适用于大多数现代Web应用程序的开发需求。接下来让我们另一种集成方式——通过CGO扩展实现Node.js与Go的本地混合开发。

下一篇:没有了

第三代试管婴儿




微信公众号