<返回更多

4大顶级零JavaScript Go框架大火,前端凉凉?

2023-10-30  今日头条  高级前端进阶
加入收藏

前言

本文主要和大家讨论全网最火的4个基于Wasm 的 Go生态 Web 框架,使得开发者不用编写一行 JS 代码就可以写前端应用。在年初,我也确实使用 WebAssembly 将客户端应用成功移植到了 Web,这也是为什么我一直对 WebAssembly 充满好奇的原因。我甚至在头条上开了一个合集《WebAssembly 前沿技术》来专门探讨 WebAssembly ,并将持续关注 WebAssembly 的最新动态。

正如大家所看到的,当我们还在迟疑是否要在日常开发中引入 WebAssembly 的时候,很多优秀的应用、工具已经开始吃 WebAssembly 的红利了,而且取得了不错的成就,这可能也是为什么各个浏览器厂商、开发者如此热衷 WebAssembly 的原因吧。

话不多说,直接进入这几个框架的介绍。

vugu

Vugu(发音为 /ˈvuː.ɡuː/) 是一个用 Go 编写并以 webassembly 为目标的 web UI 的实验库。其受到了以 wasm 为目标的 Go 中 VueJS 库的启发。在 Vugu 的世界里,没有前端开发的那些 Node.js、NPM、JS 等等,也没有庞大的 node_modules 占用大量空间。

Vugu 的典型特征包括:

Vugu 框架的基本思路如下:

目前 vugu 在 Github 上通过 MIT 协议开源,有超过 4.6k 的 star,177 的 fork、项目使用量 155、是一个值得关注的跨端项目。

vecty

Vecty 允许开发者使用 WebAssembly 在 Go 中构建响应式和动态的 Web 前端,与 React 和 VueJS 等现代 Web 框架竞争。

通过使用 vecty 框架,开发者可以享受以下诸多好处 :

Vecty 框架的目标是:

Vecty 框架的典型特征包括:

目前 Vecty 在 Github 上通过 BSD-3-Clause 协议开源,有超过 2.6k 的 star,是一个值得关注的跨端项目。

go-App

Go-app 是一个用于使用 Go 编程语言 (Golang) 和 WebAssembly (Wasm) 构建渐进式 Web 应用程序 (PWA) 的软件包。 UI 是通过使用声明性语法完成的,该语法仅通过使用 Go 编程语言创建和组合 HTML 元素。

因为 Go-app 使用声明式语法,因此开发者只需使用 Go 编程语言即可编写可重用的基于组件的 UI 元素。

// 通过与 HTML 元素组合来显示 Hello world 的组件,
// 条件和绑定
type hello struct {
	app.Compo
	name string
}
func (h *hello) Render() app.UI {
	return app.Div().Body(
		app.H1().Body(
			app.Text("Hello, "),
			app.If(h.name != "",
				app.Text(h.name),
			).Else(
				app.Text("World!"),
			),
		),
		app.P().Body(
			app.Input().
				Type("text").
				Value(h.name).
				Placeholder("What is your name?").
				AutoFocus(true).
				OnChange(h.ValueTo(&h.name)),
		),
	)
}

下面使用 Go 标准 HTTP 模型为使用 go-app 构建的应用程序提供服务。

func mAIn() {
    //Go-app组件路由(客户端):
	app.Route("/", &hello{})
	app.Route("/hello", &hello{})
	app.RunWhenOnBrowser()
    // 标准 HTTP 路由(服务器端)
	http.Handle("/", &app.Handler{
		Name:        "Hello",
		Description: "An Hello World! example",
	})
	if err := http.ListenAndServe(":8000", nil); err != nil {
		log.Fatal(err)
	}
}

go-app 框架还包括以下核心特点:

目前 go-app 在 Github 上通过 MIT 协议开源,有超过 7k 的 star,400+的 fork、是一个值得关注的跨端项目。

vue

vue 是 WebAssembly 应用程序的渐进式框架,具有以下核心特点。

比如下面的 hello world 示例,main.go 文件被编译为 .wasm WebAssembly 文件。

package main
import "github.com/norunners/vue"
type Data struct {
	Message string
}
func main() {
	vue.New(
		vue.El("#app"),
		vue.Template("<p>{{ Message }}</p>"),
		vue.Data(Data{Message: "Hello WebAssembly!"}),
	)
	select {}
}

index.wasmgo.html 文件获取并运行一个 .wasm WebAssembly 文件。

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <script src="{{ .Script }}"></script>
    </head>
    <body>
        <div id="app"></div>
        <script src="{{ .Loader }}"></script>
    </body>
</html>

本文总结

本文主要和大家介绍4大顶级零 JavaScript Go 框架崛起。相信通过本文的阅读,大家对 vue、go-app、vecty、Vugu 会有一个初步的了解。

因为篇幅有限,文章并没有过多展开,如果有兴趣,可以在我的主页继续阅读,同时文末的参考资料提供了大量优秀文档以供学习。最后,欢迎大家点赞、评论、转发、收藏!

参考资料

https://github.com/hexops/vecty

https://github.com/vugu/vugu

https://www.vugu.org/doc

https://go-app.dev/

https://github.com/maxence-charriere/go-app

https://github.com/norunners/vue

https://medium.com/the-godev-corner/expand-web-app-development-with-go-fc07d55b41f6

关键词:JavaScript      点击(5)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多JavaScript相关>>>