从零开始构建一个现代化前端项目:React + Go 全栈初体验
大家好,我是掘金上常写教程的全栈工程师小陈,985科班出身,带过不少零基础转行的同学。最近有朋友问我:“我想做个自己的网站,但连命令行都没用过,能学会吗?”——这让我想起自己刚学编程时,面对一堆英文术语、黑底白字的终端窗口,手都在抖。
今天这篇教程,就是为完全没接触过开发的朋友写的。我们将一起从零搭建一个前后端分离的小项目:前端用 React,后端用 Go(Golang)。别被“全栈”吓到,我会用最直白的语言、最完整的步骤、最真实的踩坑经验,带你走完第一圈。
为什么选 React 和 Go?
很多新手会问:“为啥不用 Vue 或 Node.js?”
其实 React 是目前企业级前端的主流选择,生态强大;而 Go 语法简洁、性能高、部署简单,特别适合做 API 后端。两者组合,既能学到现代前端思想,又能避开 JavaScript 后端的复杂配置。
我当初学的时候,先用 Express 写后端,结果光是
package.json和中间件就折腾了三天。后来改用 Go,一个文件就能跑起服务,省心太多!
第一步:环境准备(别跳过!)
安装 Node.js(前端依赖)
- 打开 https://nodejs.org,下载 LTS 版本(长期支持版,更稳定)
- 安装时一路“下一步”,别改路径
- 安装完成后,打开终端(Mac 用 Terminal,Windows 用 PowerShell 或 CMD),输入:
如果显示版本号(如node -v npm -vv18.17.0),说明安装成功!
⚠️ 坑点提醒:不要用
nvm管理 Node 版本!零基础同学先别碰版本管理工具,容易把自己搞晕。
安装 Go(后端依赖)
- 访问 https://go.dev/dl/,下载对应你操作系统的安装包
- 安装后,在终端运行:
能看到go versiongo1.21.x之类的输出,就 OK 了。
💡 小技巧:Go 安装后会自动配置环境变量。如果报“command not found”,重启终端试试。
安装代码编辑器
推荐 VS Code(免费、轻量、插件多):
- 下载地址:https://code.visualstudio.com/
- 安装后,建议装两个插件:
ESLint(检查 JavaScript 错误)Go(官方 Go 语言支持)
第二步:创建你的第一个 React 项目
我们用官方脚手架 create-react-app,它能自动生成所有配置。
在终端执行:
npx create-react-app my-frontend
cd my-frontend
npm start
稍等片刻,浏览器会自动打开 http://localhost:3000,看到一个旋转的 React logo —— 恭喜!你已经跑起了第一个前端项目。
🙋♂️ 新手常见问题:
Q:卡在Installing packages...怎么办?
A:国内网络慢,可以换淘宝源:npx create-react-app my-frontend --registry https://registry.npmmirror.com
第三步:理解 React 的核心思想
React 的核心就两点:
- 组件化:把页面拆成小积木(比如 Header、Button、List)
- 状态驱动:数据变了,界面自动更新
我们打开 src/App.js,这是主组件:
function App() {
return (
<div className="App">
<header className="App-header">
<p>Hello, React!</p>
</header>
</div>
);
}
export default App;
试着把 <p>Hello, React!</p> 改成 <p>我的第一个项目</p>,保存后浏览器会自动刷新!这就是热更新,超方便。
第四步:用 Go 写一个简单的后端 API
现在我们让前端能“说话”——需要一个后端接口返回数据。
新建一个文件夹 my-backend,里面创建 main.go:
package main
import (
"encoding/json"
"net/http"
)
type Message struct {
Text string `json:"text"`
}
func helloHandler(w http.ResponseWriter, r *http.Request) {
msg := Message{Text: "Hello from Go!"}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(msg)
}
func main() {
http.HandleFunc("/api/hello", helloHandler)
http.ListenAndServe(":8080", nil)
}
在终端进入 my-backend 目录,运行:
go run main.go
如果看到没报错,说明服务已启动!打开浏览器访问 http://localhost:8080/api/hello,你会看到:
{"text":"Hello from Go!"}
✅ 踩坑经验:
我第一次写 Go 接口时,忘了设置Content-Type,前端收到的是纯文本,解析 JSON 报错。记住:API 必须声明返回 JSON 格式!
第五步:前端调用后端接口(关键!)
回到 my-frontend 项目,修改 src/App.js:
import React, { useState, useEffect } from 'react';
function App() {
const [message, setMessage] = useState('');
useEffect(() => {
fetch('http://localhost:8080/api/hello')
.then(res => res.json())
.then(data => setMessage(data.text))
.catch(err => console.error('请求失败:', err));
}, []);
return (
<div className="App">
<header className="App-header">
<p>{message || '加载中...'}</p>
</header>
</div>
);
}
export default App;
保存后,页面会从“加载中...”变成“Hello from Go!”。
🔒 跨域问题预警!
如果你看到控制台报错CORS error,别慌!这是因为浏览器阻止了跨域请求(前端 3000 端口,后端 8080 端口)。
解决方案(开发阶段):
在 my-frontend/package.json 中添加一行:
{
"name": "my-frontend",
"proxy": "http://localhost:8080",
// ...其他内容
}
然后重启前端项目(npm start)。这样所有 /api 开头的请求都会自动代理到 Go 服务。
💡 这招我用了三年,比配 Nginx 简单一百倍!
第六步:完整项目结构梳理
现在你有两个独立项目:
| 项目 | 端口 | 作用 |
|---|---|---|
my-frontend |
3000 | 用户看到的界面 |
my-backend |
8080 | 提供数据和逻辑 |
开发时要同时运行两个终端:
- 终端1:
cd my-frontend && npm start - 终端2:
cd my-backend && go run main.go
🧠 学习建议:
初期不要追求“一个命令启动全部”。分开管理更清晰,也更容易排查问题。
新手高频问题解答
Q1:为什么不用 TypeScript?
A:零基础先掌握 JavaScript 核心逻辑。TypeScript 是进阶工具,后面再加不迟。
Q2:Go 需要学很多语法吗?
A:不需要!本教程只用了结构体、HTTP 处理函数、JSON 编码,不到 20 行代码。Go 本身就是为“简单”设计的。
Q3:能不能把前后端合并?
A:可以,但不推荐初学者这么做。前后端分离是现代开发标准,早点适应更好。
Q4:部署怎么办?
A:前端用 Vercel(免费、拖拽上传),后端用 Render 或 Railway(Go 应用一键部署)。这些等你项目做完再说!
下一步学习路径建议
你已经完成了“从 0 到 1”的跨越!接下来可以:
前端深化:
- 学习 React 的
useState、useEffect - 尝试用
axios替代原生fetch - 了解组件 props 传值
- 学习 React 的
后端扩展:
- 在 Go 中连接数据库(推荐 SQLite,零配置)
- 实现 POST 请求(提交表单)
- 添加路由(用
gorilla/mux库)
工程化:
- 学会用
.gitignore忽略 node_modules - 用 GitHub 托管代码
- 写 README 说明如何运行项目
- 学会用
🌟 最后一句真心话:
我见过太多人卡在“环境配置”就放弃了。但只要你跑通一次,后面的路会越走越顺。编程最难的不是技术,而是迈出第一步的勇气。
附录:常用命令速查表
| 场景 | 命令 |
|---|---|
| 创建 React 项目 | npx create-react-app 项目名 |
| 启动前端 | npm start |
| 启动 Go 服务 | go run 文件名.go |
| 查看 Node 版本 | node -v |
| 查看 Go 版本 | go version |
| 安装 Go 包 | go get 包名(本教程未用到) |
如果你跟着做完了,恭喜你!你已经比 80% 只看不练的人走得更远。
欢迎在评论区留言你的运行结果,或者遇到的卡点——我会一一回复。
下期预告:《用 Go + React 实现一个待办事项 TodoList》。
记得关注我,前端路上不迷路!

评论 0