依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 74|回复: 0

基于Go语言的高性能、极简模块化、Web开发脚手架

[复制链接] 主动推送

1万

主题

1万

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12008
发表于 2024-10-17 09:58:04 | 显示全部楼层 |阅读模式
基于Go语言的高性能、极简模块化、Web开发脚手架
技术特性
  • 极致的微内核插件化应用架构
  • 模块应用的前后端代码物理隔离
  • 减少非必要代码包装和依赖
  • 提供应用引擎和模块注册网关
  • 统一配置、统一日志、中间件支持
快速开始
开发应用模块,如 app1 模块,一般步骤如下:
  • 模块目录:强烈建议使用约定的目录结构开发,事半功倍。
  • 入口文件:按框架结构开发本模块的main.go
  • 其他文件:也可以按golang规则开发其他go文件,按需开发ui界面
  • 注册应用:按“应用模块注册”将本模块注册到主入口
  • 启动应用:进入main目录,启动main.go
1. 基本规则
1.1 建议目录结构
  1. - apps              # 应用模块根目录
  2.     - app1          # 应用1根目录
  3.         - ui        # 应用1UI资源目录
  4.         - main.go   # 应用1主程序
  5.     - docs          # 应用2根目录
  6.         - ui        # 应用2UI资源目录
  7.         - main.go   # 应用2主程序
  8.     ...             # 其他应用
  9. - core              # 内核目录
  10.     - engine        # 引擎目录
  11.     - gateway       # 网关目录
  12.     - tools         # 自定义工具库
  13. - main              # 主程序目录
  14.     - config.ini    # 配置文件
  15.     - main.go       # 入口主程序
  16. ...
复制代码
1.2 路由规则
内置DevDoc:http://127.0.0.1:8081/dev/doc
  1. 一、网页内容/由docs应用提供/Markdown自动解析
  2. - /                                                        => 首页 跳转到 /docs/index.html
  3. - /docs/%mdfile.html%                  => markdown文档 /docs/%mdfile.md%
  4. - /docs_root/%static%                  => 静态文件 /docs_root/%static%

  5. 二、网关GateWay相关/开发文档
  6. - /dev/doc                                         => api doc 文档页面
  7. - /dev/api                                         => api json 后端接口

  8. 三、具体应用相关路由
  9. - /app/%appid%                                 => 具体应用首页
  10. - /app/%appid%/%act%                   => 具体应用api json
复制代码
路由规则定义在 "core/gateway/main.go" 中定义
2. 具体模块开发
apps/app1/main.go
  1. package app

  2. import (
  3.         "b0go/core/engine"
  4.         "embed"
  5.         "io/fs"

  6.         "github.com/gin-gonic/gin"
  7. )

  8. // 定义该应用配置项
  9. type AppConfig struct {
  10.         Name string
  11. }

  12. // 定义应用全局变量
  13. var (
  14.         app    *engine.AppConfig
  15.         appId  = "app1"
  16.         config = new(AppConfig)

  17.         //go:embed ui/dist
  18.         uiFS embed.FS
  19. )

  20. // init()在main.go中被调用
  21. func init() {
  22.         uiDist, _ := fs.Sub(uiFS, "ui/dist")
  23.         app = &engine.AppConfig{
  24.                 Name:   appId,
  25.                 Type:   engine.APP_APP,
  26.                 Config: config,
  27.                 UIFS:   uiDist,
  28.                 Run:    run,
  29.         }
  30.         engine.AppInstall(app)
  31. }

  32. func run() {
  33.         engine.GET(appId, "/ping", "{}", "ping", ping)
  34.         engine.POST(appId, "/ping", "{}", "ping", ping)

  35. }

  36. func ping(c *gin.Context) {
  37.         c.JSON(200, gin.H{
  38.                 "message": appId + " pong " + config.Name,
  39.         })
  40. }
复制代码
3. 应用模块注册
main/config.ini
  1. [gateway]
  2. ListenAddr = ":8081"
  3. Live = true

  4. [app1]
  5. Name = "b0go"

  6. [docs]
  7. Live = true
复制代码
注意:
  • 此配置文件至少要配置[gateway]节点,其他为注册应用的配置
  • 每个注册应用(main.go的import定义)都必须在此文件有一个节点,即使没有配置项
main/main.go
  1. package main

  2. import (
  3.         _ "b0go/apps/app1"      //注册app1
  4.         _ "b0go/apps/docs"      //注册docs

  5.         "b0go/core/engine"
  6.         _ "b0go/core/gateway"   //默认必须注册
  7. )

  8. func main() {
  9.         engine.Run("config.ini")
  10.         select {}
  11. }
复制代码
4. 启动或打包
启动项目
  1. go run main/main.go
复制代码
访问 http://127.0.0.1:8081
打包项目
  1. go build main/main.go
复制代码
部署到服务器上
技术选型

  • golang
  • gin
  • gorm


游客,本帖隐藏的内容需要积分高于 2 才可浏览,您当前积分为 0


提取码下载:
文件名称:提取码下载.txt 
下载次数:0  文件大小:12 Bytes  售价:10金钱 [记录]
下载权限: 不限 [购买VIP]   [充值]   [在线充值]   【VIP会员5折;永久VIP免费】
安全检测,请放心下载

















相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|小黑屋|依星资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2024-11-23 23:13

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表