当前位置: 首页 > news >正文

网站app软件大全免费最彻底的手机优化软件

网站app软件大全免费,最彻底的手机优化软件,济南中建设计院网站,外贸网站建设哪家公司比较好Gin 打包vue或react项目输出文件到程序二进制文件 背景解决方案1. 示例目录结构2. 有如下问题要解决:3. 方案探索 效果 背景 前后端分离已成为行业主流,vue或react等项目生成的文件独立在一个单独目录,与后端项目无关。 实际部署中,通常前面套…

Gin 打包vue或react项目输出文件到程序二进制文件

  • 背景
  • 解决方案
    • 1. 示例目录结构
    • 2. 有如下问题要解决:
    • 3. 方案探索
  • 效果

背景

前后端分离已成为行业主流,vuereact等项目生成的文件独立在一个单独目录,与后端项目无关。
实际部署中,通常前面套一个nginx,根据请求返回静态资源或者代理到后端go服务上。
安装配置一套环境繁琐,加上有时需要部署在windows上,希望借助go的夸平台编译运行+embed嵌入文件能力,实现单个文件部署即可。

Created with Raphaël 2.3.0 用户请求 nginx 是否是静态资源? dist目录文件 go-app yes no

nginx配置样例

server {listen 80;root /usr/share/nginx/html;location / {try_files $uri $uri/index.html /index.html;}location /api {proxy_pass http://localhost/to-go-app-server;proxy_set_header   X-Forwarded-Proto $scheme;proxy_set_header   X-Real-IP         $remote_addr;}
}

解决方案

1. 示例目录结构

  • app.go为代码文件,同dist一个目录
  • app-server为编译后的单个exe
.
├── app.go
├── app-server
└── dist├── assets│   ├── index-43d6e8d0.css│   └── index-f5e49ae2.js├── CNAME├── element-plus-logo-small.svg├── favicon.svg├── index.html└── vite.svg

2. 有如下问题要解决:

  • http://exmpale.com/跟路由如何定向到dist/index.html
  • http://exmpale.com/xx.svg 以及 http://exmpale.com/assets/xxxxx.js 这些动态路由如何生成
  • http://exmpale.com/正常业务路由与上面静态文件路由冲突如何处理

3. 方案探索

经过参考gin官方github.com/gin-contrib/static的插件,找出以下简单有效的解决方案

  • 使用embed将整个文件夹嵌入
  • 所有请求增加一个中间件, 判断embed.FS总是否存在url中路径的文件
  • 存在使用http.fileserver处理,并中断处理链
  • 不存在处理正常的逻辑
package mainimport ("embed""io/fs""net/http""github.com/gin-gonic/gin"
)//go:embed dist
var dist embed.FSfunc main() {r := gin.Default()r.Use(ServerStatic("dist", dist))r.GET("/ping", func(ctx *gin.Context) {ctx.String(http.StatusOK, "pong")})r.Run("localhost:81")
}/*
假设vue/react项目输出文件夹名字为dist,拷贝到该go文件所在目录下
注意"dist"前后不能有 /
r.Use(ServerStatic("dist", dist))
*/
func ServerStatic(prefix string, embedFs embed.FS) gin.HandlerFunc {return func(ctx *gin.Context) {// 去掉前缀fsys, err := fs.Sub(embedFs, prefix)if err != nil {panic(err)}fs2 := http.FS(fsys)f, err := fs2.Open(ctx.Request.URL.Path)if err != nil {// 判断文件不存在,退出交给其他路由函数ctx.Next()return}defer f.Close()http.FileServer(fs2).ServeHTTP(ctx.Writer, ctx.Request)ctx.Abort()}
}

效果

  • 访问http://localhost:81/ 返回的是vue页面
  • 访问http://localhost:81/ping 返回的是逻辑处理结果pong
http://www.tj-hxxt.cn/news/76445.html

相关文章:

  • 手机移动端网站建设今日新闻国家大事
  • 通辽网站开发如何让百度收录自己信息
  • 学校网站建设意义google开户
  • 网站做产品的审核移动端seo关键词优化
  • 做普通网站需要多少钱网站开发费用
  • 视频类网站如何做缓存买外链
  • 做网站一定要云解析吗广州百度推广电话
  • 网站假设公司排名网络推广与推广
  • 路桥做网站的公司网络推广员一个月多少钱
  • 网站建设课程设计心得国内打开google网页的方法
  • 公司网站如何做优化网站推广排名服务
  • Html5做旅游网站的设计思路天津关键词优化专家
  • 做网站订阅号百度竞价关键词查询
  • 女生化妆品网站建设规划书河北优化seo
  • 做生物卷子的网站百度口碑
  • 红酒公司的网站建设找资源的关键词有哪些
  • wordpress评论通知站长百度推广和优化有什么区别
  • 百度商桥在网站百度广告标识
  • 学院网站建设与管理办法市场营销师报名官网
  • 给别人做网站别人违法经营6有没有可以代理推广的平台
  • 手表网站那个好seo优化一般包括哪些内容
  • 怎样才能做一个手机网站东莞seo建站哪家好
  • 做网站实例公司在百度怎么推广
  • 可以看国外网站的dns英文谷歌优化
  • 海外网站建设青岛网络seo公司
  • html5做网站心得体会搜索引擎优化技术都有哪些
  • ftp发布asp.net网站优化网站排名需要多少钱
  • 做境外域名网站百度竞价推广流程
  • 广州海珠区赤岗 新港网站建设公司推销产品怎么推广
  • 杭州网站设计推荐柚米洛阳市网站建设