beego 实现 react、vue 应用发布

现代的 web 开发提倡前后端分离,当然 beego 原生支持 web应用开发,但是现在主流 web 开发都是通过 react 或者 vue 实现,和服务直接通过 REST API 交互。于是便想利用 beego 的静态文件发布能力发布 react 或 vue 开发的前端页面,这样,就可以实现简单 web 应用的快速部署和版本一致了。

同时,也相当于提供了一个跨平台操作界面,不需要再利用一些界面库进行 golang 界面开发,而是直接利用 web 界面进行展示。完整代码上传到了 gitee:
https://gitee.com/truthalone/bee-web.git

1. 新建 beego 项目

bee new bee-web
cd bee-web

go mod int bee-web
go mod tidy

2. 修改配置

# conf/app.conf

# 增加配置
AutoRender=false
CopyRequestBody=true

3. 删除多余文件及目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y78kJ4yq-1591524940103)(https://gitee.com/truthalone/blog-image/raw/master/img2/20200606211003.png)]

4. 将编译好的静态文件放到 static 目录下

在这里插入图片描述

5. 修改 router.go 实现静态文件发布

package routers

import (
	"bee-web/controllers"
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/context"
	"net/http"
	"path"
	"strings"
)

func init() {
	beego.InsertFilter("/", beego.BeforeRouter, WebServerFilter)
	beego.InsertFilter("/*", beego.BeforeRouter, WebServerFilter)

	beego.Router("/api/login/account", &controllers.BaseController{}, "post:Test")
}

//静态文件后缀
const staticFileExt = ".html|.js|.css|.png|.jpg|.jpeg|.ico|.otf"

//web 服务过滤器,实现静态文件发布
func WebServerFilter(ctx *context.Context) {
	urlPath := ctx.Request.URL.Path
	if urlPath == "" || urlPath == "/" {
		urlPath = "index.html"
	}
    
    
	ext := path.Ext(urlPath)
	if ext == "" {
		return
	}
	index := strings.Index(staticFileExt, ext)
	if index >= 0 {
		http.ServeFile(ctx.ResponseWriter, ctx.Request, "static/"+urlPath)
	}
}

6. 启动 beego 应用,通过浏览器访问 web 应用

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值