服务端渲染(SSR)主要页面,但 核心业务逻辑通过 API 交互
- 性能优化:
- 首屏加载速度快(SSR优势)
- 后续交互通过API,减少全页面刷新
- SEO友好:
- 主要页面内容由服务端渲染,搜索引擎可以轻松抓取
- 开发效率:
- 使用Gin的模板系统可以快速构建页面结构
- 前后端分离程度适中,便于团队协作
使用 Gin 框架进行 Web 开发时的典型静态资源和模板配置。我们来详细分析它的作用和优势:
1. engine.LoadHTMLGlob(common.StaticDirPath + "templates/**/*")
作用
- 加载 HTML 模板:从
templates/
目录及其子目录(*
/
)加载所有 HTML 模板文件(如.tmpl
、.html
)。 - 支持嵌套目录结构:
*
/
表示递归匹配所有子目录下的模板文件,便于模块化组织代码。
优势
✅ 灵活管理模板:可以按功能模块划分模板目录,例如:
templates/ ├── admin/ │ ├── dashboard.html │ └── users.html ├── web/ │ ├── home.html │ └── about.html └── layout.html
✅ 开发友好:修改模板后(开发模式下)无需重启服务,Gin 会自动重新加载。 ✅ 性能优化:模板预编译,运行时渲染更快。
2. engine.Static("/static", common.StaticDirPath)
作用
- 托管静态资源:将
common.StaticDirPath
目录下的文件(如 CSS、JS、图片)映射到/static
路由。 - 示例:
- 文件路径:
/var/www/static/css/style.css
- 访问 URL:
http://yourdomain.com/static/css/style.css
优势
✅ CDN 友好:静态资源可以单独部署到 CDN 加速。 ✅ 缓存控制:浏览器可以缓存静态资源,提升加载速度。 ✅ 安全隔离:避免直接暴露服务器文件系统路径。
3. engine.Static("/h5", common.RootPath+"/h5")
作用
- 单独托管 H5 页面:将
h5/
目录(如移动端页面)映射到/h5
路由。 - 适用场景:
- 移动端和 PC 端分离开发
- 独立的前端项目(如 Vue/React 打包后的
dist/
目录)
优势
✅ 前后端分离:H5 页面可以独立开发、部署,不影响主站逻辑。 ✅ 按需加载:移动端和 PC 端可以有不同的资源优化策略。
完整架构示例
package main import ( "github.com/gin-gonic/gin" "path/to/common" ) func main() { engine := gin.Default() // 1. 加载 HTML 模板(支持嵌套目录) engine.LoadHTMLGlob(common.StaticDirPath + "templates/**/*") // 2. 托管静态资源(CSS/JS/图片等) engine.Static("/static", common.StaticDirPath) // 3. 托管 H5 页面(移动端专用) engine.Static("/h5", common.RootPath+"/h5") // 示例路由:渲染 HTML 模板 engine.GET("/", func(c *gin.Context) { c.HTML(200, "web/home.html", gin.H{ "title": "Home Page", }) }) engine.Run(":8080") }
最佳实践
- 模板组织:
- 使用
layouts/
存放公共模板(如导航栏、页脚)。 - 使用
partials/
存放可复用的组件(如卡片、表单)。
- 静态资源优化:
- 使用
Gzip
压缩静态文件(Gin 默认支持)。 - 配置
Cache-Control
头,让浏览器缓存 CSS/JS。
- H5 移动端适配:
- 可以使用
Vite
/Webpack
打包前端项目,输出到h5/
目录。 - 通过
nginx
反向代理优化加载速度。
总结
<!--br {mso-data-placement:same-cell;}--> td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}
配置 | 作用 | 适用场景 |
LoadHTMLGlob("templates/**/*") | 加载 HTML 模板 | 服务端渲染(SSR) |
Static("/static", staticDir) | 托管 CSS/JS/图片 | 静态资源加速 |
Static("/h5", h5Dir) | 托管移动端页面 | 前后端分离开发 |
这种配置方式既支持 服务端渲染(SSR),又能托管 静态资源 和 独立前端项目,非常适合混合渲染模式的 Web 应用。 🚀