开发模式

摘要:简要记录前后端分离和后端渲染学习,关注两者的特点以及实现代码的方式

1. 前后端分离项目 (Modern SPA - Single Page Application)

  • 架构:

    • 前端 (Client-Side): 一个独立的项目,通常使用 Vue, React, Angular 等框架构建。它可以被部署在任何静态文件服务器上(如 Nginx, Vercel, Netlify)。
    • 后端 (Server-Side): 另一个独立的项目,只负责提供 RESTful API 或 GraphQL API。它不关心页面长什么样,只关心数据的增删查改 (CRUD) 和业务逻辑。
  • 通信方式:

    • 前端通过 AJAX/Fetch 请求后端的 API 接口。
    • 后端返回的数据格式通常是 JSON
  • 渲染方式:

    • 页面骨架 (一个空的 index.html 和一些 JS/CSS 文件) 先被加载到浏览器。
    • 然后,前端的 JS 代码执行,向后端 API 请求数据。
    • 拿到 JSON 数据后,前端使用 JS 在浏览器端动态地生成 HTML 内容并渲染出来(这被称为客户端渲染, CSR)。
  • 代码特征 (Go 后端):

    • gin 框架中的 handler 函数结尾通常是 c.JSON(200, gin.H{...})c.JSON(200, someStruct)
    • 几乎看不到任何 template.ParseFilesind.Execute 这样的代码。
    • 没有 HTML 文件在后端项目的目录里(或者只有一个用于部署的静态文件服务配置)。

2. 后端渲染项目 (你的 ginchat 项目)

  • 架构:

    • 前端和后端紧密耦合在一个项目中。
    • HTML 模板文件 (.html) 和后端逻辑代码 (.go) 存放在同一个代码仓库里。
  • 通信方式:

    • 浏览器直接向后端服务器请求一个URL
  • 渲染方式:

    • 后端接收到请求后:
      1. 执行业务逻辑(比如从数据库查数据)。
      2. 加载 HTML 模板文件。
      3. 将查到的数据**“塞进”**模板里。
      4. 服务器端生成一个完整的、包含所有内容的 HTML 字符串。
      5. 将这个完整的 HTML 页面发送给浏览器。
    • 浏览器只需要直接显示这个 HTML 即可,不需要再用 JS 去请求数据和构建页面(当然,页面上可能还会有一些 AJAX 用于局部刷新)。
  • 代码特征:

    • 大量使用 template.ParseFiles 来加载 HTML 模板。
    • handler 函数的结尾是 ind.Execute(c.Writer, data)
    • viewstemplates 目录下存放着大量的 HTML 文件。

总结

特性 前后端分离 (e.g., Vue + Gin API) 后端渲染 (你的 ginchat 项目)
项目结构 前端和后端是两个独立的项目 前后端代码和模板在一个项目里
后端职责 提供纯粹的 JSON API 渲染并返回完整的 HTML 页面
数据交换格式 JSON 后端直接将数据嵌入 HTML
渲染地点 浏览器 (客户端) 服务器
Go 代码特征 c.JSON(...) template.Execute(...)
Author

Cofeesy

Posted on

2025-11-07

Updated on

2025-11-07

Licensed under

Comments