admin管理员组文章数量:1035802
Pagoda:Go 程序员的 Web 开发入门套件
Go 开发者福音!Pagoda 并非框架,而是 Web 开发启动套件,集成 HTMX、Alpine.js、Bulma 等前端库,后端选用 Echo、Ent、Gomponents。告别 JavaScript 困扰,快速构建现代 Web 应用,亦可灵活替换 Postgres、Redis 等组件,更有 GoShip 衍生,拥抱 SaaS 和 AI。
译自:Pagoda: A Web Development Starter Kit for Go Programmers 作者:Loraine Lawson
2020 年,Mike Stefanello 爱上了 Go。
这位软件工程师说:“这是我第一次说我爱上了一种编程语言,甚至是某种技术或工具,但确实是那种反应 —— 我真的非常非常喜欢它。我知道我想用它工作。”
Stefanello 还以个人项目的形式做了很多 web 开发,当时,大多数 web 开发都是基于 PHP 的。有一天,他看到一篇 Hacker News 的帖子,询问开发者他们个人项目的首选 web 技术栈是什么。
他说:“我坐在那里思考,‘我实际上没有这个问题的答案’。我不想回到以前使用的 PHP 中的所有东西。我喜欢 Go。我非常执着,我不能没有这个问题的答案。”
出于这种挫败感和探索,Pagoda 诞生了。
他说:“更多的是对 Go 和对 web 开发的热爱。这不像我在考虑应该使用哪种语言来进入 web —— 我是从 web 开发开始的。”
Pagoda:Go 的启动套件
Pagoda 不是一个框架 —— Stefanello 多次强调这一点。它是一个 web 开发的启动套件,提供了由 Go 代码粘合在一起的前端和后端库。Go 生成服务器端的 HTML 来创建网页。
对于习惯于 JavaScript 框架 世界的前端开发者来说,启动包方法可能看起来很奇怪,但 Stefanello 告诉 The New Stack,后端开发者如果必须使用前端,则希望保持简单。
他说:“我们大多数人不想切换语言,特别是如果你不在后端使用 JavaScript 的话。我可以理解如果你使用 JavaScript,那么你已经习惯了那个生态系统。但如果你不习惯它 —— 而我真的不习惯,我已经很长时间没有真正接触过 JavaScript 了 —— 它感觉像一个有点混乱的生态系统,而且真的很难掌握。”
但这让他陷入了一个困境,即如何在不 打开 JavaScript 并致力于大型框架(如 React 和 Vue)的情况下构建一个现代、时尚的 web 应用程序。
他补充说:“完全没有反对它们的意思。显然,它们都是很棒的项目,但这只是个人选择的问题。如果你是后端开发者,你希望尽可能少地关注前端。”
但是为什么不将 Pagoda 制作成 Go 框架呢?他说,因为 Go 社区似乎对此不感兴趣。他说,虽然在 PHP 中有一个大型的单一框架 —— Laravel —— 但在 Go 中并没有真正的等价物。
Mike Stefanello 在 Pagoda 中制作的示例主页。该功能性网站包含在 repo 中。
Stefanello 说:“如果你是 Go 的新手,这会让人感到困惑:为什么没有一个框架,为什么人们不喜欢它?但我认为你使用 Go 的次数越多,你就越开始欣赏它。”
Pushup 是一个例外,因为它是一个 Go web 开发框架。还有 GoBuffalo,它在其网站上指出它可能是一个框架,但相反,它将自己描述为一个“Go web 开发生态系统”,它“主要是 Go 和 JavaScript 库的生态系统,这些库经过精心设计以协同工作。” Stefanello 早在早期就做出了不创建框架的选择,因为他不喜欢被单一的大型框架束缚的想法。
他说:“它们往往过于臃肿。它们往往会强制你必须遵循的模式。”
他还补充说,开发者往往会超越框架,但随后会被框架锁定。然后存在框架作者将停止维护它的风险。
相比之下,他补充说,启动套件可以让 web 开发者 快速启动 web 开发,而没有完整框架的缺点。 “这个启动套件的好处在于它解决了所有这些问题,”他说。“没有严格的模式需要遵循。我提供了一些想法和模式,并将它们粘合在一起,只是为了让事情变得简单,让你快速启动并运行。但这些都不是强制性的。没有任何严格的要求。”
即使他停止维护 Pagoda,Web 开发者也能拥有他们所需的一切,以便继续。
“我基本上只是为你做了很多工作,然后你可以从那里接手,”他说。“你不必担心我是否停止维护它,因为一旦你复制了启动套件,它就是你的了——100% 是你的。”
Pagoda 前端
Pagoda 包括三个用于前端的库:
- HTMX,它直接在 HTML 中提供对 AJAX、CSS 转换、WebSockets 和服务器事件的访问。“HTMX 的美妙之处在于它使你能够拥有 Ajax 类型的行为,而无需进行整页重新加载,”他说。“这是你在 JavaScript 驱动的 单页应用程序 中期望或看到的很多功能。你可以根据需要使用任意数量的功能,而无需编写一行 JavaScript,你可以使用常规 HTML 并在你的网站上创建非常好的交互性。”
- Alpine.js,Stefanello 说它很像 JQuery,但适用于现代 Web。它是一个最小的工具,用于直接在标记中组合行为。“真正好的是,它在很大程度上都在你的 HTML 中工作,所以你甚至不必实际编写独立的 JavaScript,”他说。“你可以只添加一堆 Alpine 标签和一些声明,并告诉 HTML 该怎么做。而且你可以用它做到的程度非常显著。这是一个我非常喜欢使用的项目。”
- Bulma,一个易于使用的 CSS 框架。“它非常容易——你只需扔一些类,你就会得到一个相当不错的 UI,”他说。
如果你不喜欢这些库,你可以将它们换掉。例如,Tailwind 可以取代 Bulma,他说,并且可以在几分钟内完成。
Pagoda 后端
在后端,Pagoda 包括:
- Echo:一个高性能、可扩展、极简的 Go Web 框架。
- Ent:一个强大的 ORM,用于建模和查询数据。
- Gomponents:用纯 Go 编写的 HTML 组件。它们渲染为 HTML 5,并且可以轻松构建可重用的组件。
Stefanello 再次强调,这些库中的任何一个都可以被替换——事实上,本月,他用 Gomponents 替换了 Go 模板。
“如果你浏览任何 Go 社区,无论是 Reddit、Slack 还是 Discord,或者其他任何地方,都会发现很多人对模板感到沮丧——尤其是在 HTML 方面,它们确实有很多不足之处,”他说。
他列举了这些问题:它们不是类型安全的;如果代码有错误,你必须运行应用程序才能发现;在不同的模板之间传递数据很困难;最后,很难以一种易于在 Web 应用程序中使用的方式编译它们。
Gomponents 是由 Markus Wüstenberg 创建的库,它渲染为 HTML 5,可以轻松构建可重用的组件。
“这可能是我自项目启动以来,在该项目中做出的最大的代码更改 […],”他说。“这是一个很大的根本性变化,即从 Go 标准库模板转向使用第三方解决方案。”
根据文档,SQLite 提供了主要的数据存储以及持久的后台任务队列。但是,如果开发人员更喜欢使用 Postgres 或 Redis,则可以将其换掉。
该项目甚至被 Fork 以创建 GoShip,这是一个 Go 加 HTMX 样板,包含 SaaS、AI 工具或 Web 应用程序的所有必需品。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-192,如有侵权请联系 cloudcommunity@tencent 删除开发入门goweb程序员Pagoda:Go 程序员的 Web 开发入门套件
Go 开发者福音!Pagoda 并非框架,而是 Web 开发启动套件,集成 HTMX、Alpine.js、Bulma 等前端库,后端选用 Echo、Ent、Gomponents。告别 JavaScript 困扰,快速构建现代 Web 应用,亦可灵活替换 Postgres、Redis 等组件,更有 GoShip 衍生,拥抱 SaaS 和 AI。
译自:Pagoda: A Web Development Starter Kit for Go Programmers 作者:Loraine Lawson
2020 年,Mike Stefanello 爱上了 Go。
这位软件工程师说:“这是我第一次说我爱上了一种编程语言,甚至是某种技术或工具,但确实是那种反应 —— 我真的非常非常喜欢它。我知道我想用它工作。”
Stefanello 还以个人项目的形式做了很多 web 开发,当时,大多数 web 开发都是基于 PHP 的。有一天,他看到一篇 Hacker News 的帖子,询问开发者他们个人项目的首选 web 技术栈是什么。
他说:“我坐在那里思考,‘我实际上没有这个问题的答案’。我不想回到以前使用的 PHP 中的所有东西。我喜欢 Go。我非常执着,我不能没有这个问题的答案。”
出于这种挫败感和探索,Pagoda 诞生了。
他说:“更多的是对 Go 和对 web 开发的热爱。这不像我在考虑应该使用哪种语言来进入 web —— 我是从 web 开发开始的。”
Pagoda:Go 的启动套件
Pagoda 不是一个框架 —— Stefanello 多次强调这一点。它是一个 web 开发的启动套件,提供了由 Go 代码粘合在一起的前端和后端库。Go 生成服务器端的 HTML 来创建网页。
对于习惯于 JavaScript 框架 世界的前端开发者来说,启动包方法可能看起来很奇怪,但 Stefanello 告诉 The New Stack,后端开发者如果必须使用前端,则希望保持简单。
他说:“我们大多数人不想切换语言,特别是如果你不在后端使用 JavaScript 的话。我可以理解如果你使用 JavaScript,那么你已经习惯了那个生态系统。但如果你不习惯它 —— 而我真的不习惯,我已经很长时间没有真正接触过 JavaScript 了 —— 它感觉像一个有点混乱的生态系统,而且真的很难掌握。”
但这让他陷入了一个困境,即如何在不 打开 JavaScript 并致力于大型框架(如 React 和 Vue)的情况下构建一个现代、时尚的 web 应用程序。
他补充说:“完全没有反对它们的意思。显然,它们都是很棒的项目,但这只是个人选择的问题。如果你是后端开发者,你希望尽可能少地关注前端。”
但是为什么不将 Pagoda 制作成 Go 框架呢?他说,因为 Go 社区似乎对此不感兴趣。他说,虽然在 PHP 中有一个大型的单一框架 —— Laravel —— 但在 Go 中并没有真正的等价物。
Mike Stefanello 在 Pagoda 中制作的示例主页。该功能性网站包含在 repo 中。
Stefanello 说:“如果你是 Go 的新手,这会让人感到困惑:为什么没有一个框架,为什么人们不喜欢它?但我认为你使用 Go 的次数越多,你就越开始欣赏它。”
Pushup 是一个例外,因为它是一个 Go web 开发框架。还有 GoBuffalo,它在其网站上指出它可能是一个框架,但相反,它将自己描述为一个“Go web 开发生态系统”,它“主要是 Go 和 JavaScript 库的生态系统,这些库经过精心设计以协同工作。” Stefanello 早在早期就做出了不创建框架的选择,因为他不喜欢被单一的大型框架束缚的想法。
他说:“它们往往过于臃肿。它们往往会强制你必须遵循的模式。”
他还补充说,开发者往往会超越框架,但随后会被框架锁定。然后存在框架作者将停止维护它的风险。
相比之下,他补充说,启动套件可以让 web 开发者 快速启动 web 开发,而没有完整框架的缺点。 “这个启动套件的好处在于它解决了所有这些问题,”他说。“没有严格的模式需要遵循。我提供了一些想法和模式,并将它们粘合在一起,只是为了让事情变得简单,让你快速启动并运行。但这些都不是强制性的。没有任何严格的要求。”
即使他停止维护 Pagoda,Web 开发者也能拥有他们所需的一切,以便继续。
“我基本上只是为你做了很多工作,然后你可以从那里接手,”他说。“你不必担心我是否停止维护它,因为一旦你复制了启动套件,它就是你的了——100% 是你的。”
Pagoda 前端
Pagoda 包括三个用于前端的库:
- HTMX,它直接在 HTML 中提供对 AJAX、CSS 转换、WebSockets 和服务器事件的访问。“HTMX 的美妙之处在于它使你能够拥有 Ajax 类型的行为,而无需进行整页重新加载,”他说。“这是你在 JavaScript 驱动的 单页应用程序 中期望或看到的很多功能。你可以根据需要使用任意数量的功能,而无需编写一行 JavaScript,你可以使用常规 HTML 并在你的网站上创建非常好的交互性。”
- Alpine.js,Stefanello 说它很像 JQuery,但适用于现代 Web。它是一个最小的工具,用于直接在标记中组合行为。“真正好的是,它在很大程度上都在你的 HTML 中工作,所以你甚至不必实际编写独立的 JavaScript,”他说。“你可以只添加一堆 Alpine 标签和一些声明,并告诉 HTML 该怎么做。而且你可以用它做到的程度非常显著。这是一个我非常喜欢使用的项目。”
- Bulma,一个易于使用的 CSS 框架。“它非常容易——你只需扔一些类,你就会得到一个相当不错的 UI,”他说。
如果你不喜欢这些库,你可以将它们换掉。例如,Tailwind 可以取代 Bulma,他说,并且可以在几分钟内完成。
Pagoda 后端
在后端,Pagoda 包括:
- Echo:一个高性能、可扩展、极简的 Go Web 框架。
- Ent:一个强大的 ORM,用于建模和查询数据。
- Gomponents:用纯 Go 编写的 HTML 组件。它们渲染为 HTML 5,并且可以轻松构建可重用的组件。
Stefanello 再次强调,这些库中的任何一个都可以被替换——事实上,本月,他用 Gomponents 替换了 Go 模板。
“如果你浏览任何 Go 社区,无论是 Reddit、Slack 还是 Discord,或者其他任何地方,都会发现很多人对模板感到沮丧——尤其是在 HTML 方面,它们确实有很多不足之处,”他说。
他列举了这些问题:它们不是类型安全的;如果代码有错误,你必须运行应用程序才能发现;在不同的模板之间传递数据很困难;最后,很难以一种易于在 Web 应用程序中使用的方式编译它们。
Gomponents 是由 Markus Wüstenberg 创建的库,它渲染为 HTML 5,可以轻松构建可重用的组件。
“这可能是我自项目启动以来,在该项目中做出的最大的代码更改 […],”他说。“这是一个很大的根本性变化,即从 Go 标准库模板转向使用第三方解决方案。”
根据文档,SQLite 提供了主要的数据存储以及持久的后台任务队列。但是,如果开发人员更喜欢使用 Postgres 或 Redis,则可以将其换掉。
该项目甚至被 Fork 以创建 GoShip,这是一个 Go 加 HTMX 样板,包含 SaaS、AI 工具或 Web 应用程序的所有必需品。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-192,如有侵权请联系 cloudcommunity@tencent 删除开发入门goweb程序员本文标签: PagodaGo 程序员的 Web 开发入门套件
版权声明:本文标题:Pagoda:Go 程序员的 Web 开发入门套件 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748207676a2269261.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论