从0到1:我的网站开发心路历程与小白路线图

From Zero to One: My Website Development Journey and Beginner's Roadmap

November 29, 2025 Charles Wang Leisure
Web DevelopmentBeginner GuideLearning PathPersonal Journey

给所有想从零开始做网站的小白参考。包含完整的心路历程、技术栈选择、开发阶段详解、部署步骤、踩坑经验和小白学习路线图。

A reference guide for all beginners who want to build a website from scratch. Includes complete journey, technology stack choices, development phases, deployment steps, challenges, and beginner learning roadmap.

🚀 从0到1:我的网站开发心路历程与小白路线图

给所有想从零开始做网站的小白参考

📚 目录

  1. 项目概览
  2. 心路历程
  3. 技术栈选择
  4. 开发阶段
  5. 部署阶段
  6. 踩坑与成长
  7. 小白路线图

📋 项目概览

我的网站是什么?

这是一个个人AI工具集合网站,包含:

  • 前端展示:个人主页、关于我、文章、联系方式
  • 5个AI工具Demo
    • E-Tester:英语测试系统(完整题库、评分、进度跟踪)
    • PMentor:项目管理能力评估(问卷、AI分析、IDP报告)
    • Forge:目标制定工具(目标生成、评估、KPI管理)
    • A3Gen:问题分析工具(5WHY分析、根因挖掘)
    • PM-Learning:项目管理学习系统

技术架构

┌─────────────────────────────────────────┐
│         用户访问层 (Nginx)              │
│      https://charleswang.com.cn         │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│      前端服务 (Astro + React)           │
│      端口: 3000                         │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│      后端API服务集群 (FastAPI)          │
│  ┌──────────┬──────────┬──────────┐   │
│  │ E-Tester │ PMentor  │  Forge   │   │
│  │  :5004   │  :5003   │  :5001   │   │
│  └──────────┴──────────┴──────────┘   │
│  ┌──────────┬──────────┐              │
│  │  A3Gen   │PM-Learning│              │
│  │  :5002   │  :5005   │              │
│  └──────────┴──────────┘              │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│      数据层 (SQLite + 文件存储)         │
└─────────────────────────────────────────┘

💭 心路历程

阶段一:从想法到开始(第1周)

心态:兴奋 + 迷茫

我在想什么?

  • "我想做一个个人网站,展示我的作品"
  • "我想把那些AI工具整合在一起"
  • "但我完全不知道从哪里开始..."

我做了什么?

  1. 搜索"如何做一个网站"
  2. 看了无数教程,但都太复杂
  3. 决定从最简单的开始:先做一个静态页面

关键决定

  • ✅ 选择Astro作为前端框架(简单、快速)
  • ✅ 决定先做前端,后端后面再加
  • ✅ 不追求完美,先做出能用的版本

阶段二:第一个页面(第2-3周)

心态:成就感 + 挫败感交替

我在想什么?

  • "哇,我的第一个页面出来了!"
  • "为什么样式这么丑?"
  • "这个按钮怎么点不了?"

我做了什么?

  1. 跟着Astro官方教程做了第一个页面
  2. 学习Tailwind CSS美化界面
  3. 添加导航栏、页脚等基础组件

遇到的困难

  • CSS样式不知道怎么调
  • 响应式设计完全不懂
  • 每次改代码都要刷新浏览器看效果

解决方案

  • 使用Tailwind CSS的预设样式
  • 参考其他网站的设计
  • 使用浏览器开发者工具调试

阶段三:添加第一个功能(第4-5周)

心态:紧张 + 期待

我在想什么?

  • "我想做一个英语测试工具"
  • "需要后端吗?"
  • "数据库怎么用?"

我做了什么?

  1. 学习FastAPI(Python后端框架)
  2. 设计第一个API接口
  3. 连接SQLite数据库
  4. 前后端联调

遇到的困难

  • 不知道前后端怎么通信
  • CORS跨域问题
  • 数据库操作不熟悉

解决方案

  • 使用fetch API发送请求
  • 配置CORS允许跨域
  • 使用SQLAlchemy简化数据库操作

阶段四:功能扩展(第6-10周)

心态:越来越自信

我在想什么?

  • "第一个功能做出来了,我可以做更多!"
  • "要不要加AI功能?"
  • "怎么让界面更好看?"

我做了什么?

  1. 添加了5个不同的AI工具
  2. 集成DeepSeek API(AI能力)
  3. 优化用户体验
  4. 添加数据可视化(雷达图、图表)

学到的技能

  • 前后端分离架构
  • RESTful API设计
  • 异步编程(async/await)
  • 数据可视化(Chart.js)

阶段五:部署上线(第11-12周)

心态:焦虑 + 兴奋

我在想什么?

  • "本地能跑,服务器能跑吗?"
  • "怎么买服务器?"
  • "域名怎么配置?"

我做了什么?

  1. 购买阿里云ECS服务器
  2. 配置Linux环境
  3. 部署代码到服务器
  4. 配置Nginx反向代理
  5. 申请SSL证书(HTTPS)

遇到的困难(这是最痛苦的阶段):

  • Windows本地开发,Linux服务器部署,环境不一致
  • 代码在本地能跑,服务器报错
  • 不知道问题在哪里,只能一点点排查

解决方案

  • 详细记录每个错误和解决方法
  • 创建部署脚本自动化流程
  • 学习Linux基础命令
  • 使用Git版本控制

阶段六:优化与维护(第13周至今)

心态:成熟 + 持续学习

我在想什么?

  • "网站能用了,但还有很多可以改进"
  • "用户反馈很重要"
  • "要持续更新和维护"

我做了什么?

  1. 优化SEO(搜索引擎优化)
  2. 添加监控和日志
  3. 修复bug和改进功能
  4. 写文档记录经验

🛠️ 技术栈选择

为什么选择这些技术?

前端:Astro + React + Tailwind CSS

Astro

  • ✅ 简单易学,适合新手
  • ✅ 性能好(静态站点生成)
  • ✅ 支持多种框架(React、Vue等)
  • ✅ 官方文档清晰

React

  • ✅ 组件化开发,代码复用
  • ✅ 生态丰富,有很多现成组件
  • ✅ 学习资源多

Tailwind CSS

  • ✅ 不需要写CSS,用类名就行
  • ✅ 响应式设计简单
  • ✅ 样式统一美观

后端:Python + FastAPI

Python

  • ✅ 语法简单,容易上手
  • ✅ 库丰富,AI相关库多
  • ✅ 适合快速开发

FastAPI

  • ✅ 现代、快速
  • ✅ 自动生成API文档
  • ✅ 类型提示支持好
  • ✅ 异步支持

数据库:SQLite

为什么选SQLite?

  • ✅ 不需要单独安装数据库服务器
  • ✅ 文件数据库,简单易用
  • ✅ 适合小型项目
  • ✅ 迁移方便

部署:Nginx + Linux

Nginx

  • ✅ 性能好,稳定
  • ✅ 配置相对简单
  • ✅ 支持反向代理和负载均衡

Linux服务器

  • ✅ 成本低(阿里云ECS)
  • ✅ 稳定可靠
  • ✅ 学习Linux很有用

📖 开发阶段详解

第1阶段:环境搭建(1-2天)

目标:让代码能在本地运行

步骤

  1. 安装Node.js

    # 下载安装Node.js (https://nodejs.org/)
    # 验证安装
    node --version
    npm --version
    
  2. 安装Python

    # 下载安装Python 3.10+ (https://www.python.org/)
    # 验证安装
    python --version
    
  3. 创建前端项目

    npm create astro@latest charles-genai-site
    cd charles-genai-site
    npm install
    npm run dev
    
  4. 创建后端项目

    mkdir english_test_backend
    cd english_test_backend
    python -m venv venv
    venv\Scripts\activate  # Windows
    pip install fastapi uvicorn
    

检查清单

  • Node.js安装成功
  • Python安装成功
  • 前端项目能启动(localhost:3000)
  • 后端项目能启动(localhost:5000)

第2阶段:第一个页面(3-5天)

目标:做出一个能看的页面

步骤

  1. 修改主页
    ```astro
    // src/pages/index.astro

    // 页面逻辑

    我的网站

    欢迎来到我的网站

    ```
  2. 添加导航栏

    • 创建导航组件
    • 添加链接
  3. 美化样式

    • 使用Tailwind CSS
    • 调整颜色、字体、间距

检查清单

  • 主页能正常显示
  • 导航栏能点击跳转
  • 样式看起来不错

第3阶段:第一个API(5-7天)

目标:前后端能通信

步骤

  1. 创建后端API

    # english_test_backend/app.py
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/api/health")
    def health():
        return {"status": "ok"}
    
  2. 前端调用API

    // 在Astro组件中
    const response = await fetch('http://localhost:5004/api/health');
    const data = await response.json();
    
  3. 配置代理(解决跨域)

    // astro.config.mjs
    export default defineConfig({
      vite: {
        server: {
          proxy: {
            '/api/english-test': {
              target: 'http://localhost:5004',
              changeOrigin: true,
            }
          }
        }
      }
    });
    

检查清单

  • 后端API能返回数据
  • 前端能调用API
  • 没有CORS错误

第4阶段:数据库操作(7-10天)

目标:能存储和读取数据

步骤

  1. 设计数据库表

    # 用户表、题目表、答案表等
    
  2. 使用SQLAlchemy

    from sqlalchemy import create_engine, Column, Integer, String
    from sqlalchemy.ext.declarative import declarative_base
    
    Base = declarative_base()
    
    class User(Base):
        __tablename__ = 'users'
        id = Column(Integer, primary_key=True)
        name = Column(String)
    
  3. CRUD操作

    • Create(创建)
    • Read(读取)
    • Update(更新)
    • Delete(删除)

检查清单

  • 能创建数据
  • 能读取数据
  • 能更新数据
  • 能删除数据

第5阶段:完整功能(10-15天)

目标:做出一个完整可用的工具

步骤

  1. 设计功能流程

    • 用户进入页面
    • 选择题目
    • 答题
    • 提交答案
    • 查看结果
  2. 实现每个步骤

    • 前端界面
    • 后端逻辑
    • 数据库操作
  3. 测试和调试

    • 测试各种情况
    • 修复bug
    • 优化体验

检查清单

  • 功能完整可用
  • 没有明显bug
  • 用户体验良好

🚀 部署阶段详解

部署前的准备

需要准备的东西

  1. 服务器:阿里云ECS(2核2GB,年费99元,平均每月约8.25元)
  2. 域名:charleswang.com.cn(约50元/年)
  3. SSL证书:阿里云免费证书

部署步骤

1. 连接服务器(10分钟)

# SSH连接
ssh root@101.37.180.66

# 更新系统
sudo yum update -y

# 安装基础工具
sudo yum install -y git wget curl

2. 安装环境(30分钟)

# 安装Node.js
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs

# 安装Python
sudo yum install -y python3 python3-pip

# 安装Nginx
sudo yum install -y nginx

3. 上传代码(20分钟)

# 方法1:使用Git
git clone <your-repo-url> /var/www/mywebsite

# 方法2:使用WinSCP上传文件

4. 配置服务(40分钟)

配置后端服务

# 创建systemd服务
sudo nano /etc/systemd/system/english-test.service

[Unit]
Description=English Test API
After=network.target

[Service]
WorkingDirectory=/var/www/mywebsite/english_test_backend
ExecStart=/usr/bin/python3 -m uvicorn app:app --host 0.0.0.0 --port 5004
Restart=always

[Install]
WantedBy=multi-user.target

# 启动服务
sudo systemctl enable english-test
sudo systemctl start english-test

配置Nginx

server {
    listen 80;
    server_name charleswang.com.cn;
    
    location / {
        proxy_pass http://localhost:3000;
    }
    
    location /api/english-test/ {
        proxy_pass http://localhost:5004/;
    }
}

5. 配置SSL(30分钟)

# 使用certbot申请证书
sudo yum install -y certbot python3-certbot-nginx
sudo certbot --nginx -d charleswang.com.cn

6. 构建前端(20分钟)

cd /var/www/mywebsite/charles-genai-site
npm install
npm run build

# 配置Nginx指向dist目录

部署后的检查

检查清单

  • 网站能访问(https://charleswang.com.cn)
  • 所有页面正常显示
  • API接口能正常调用
  • HTTPS证书有效
  • 服务自动重启(测试重启服务器)

💥 踩坑与成长

最大的坑:跨平台兼容性

问题:Windows本地开发,Linux服务器部署

遇到的错误

  1. 换行符问题:Windows用CRLF,Linux用LF

    • 错误:syntax error: unexpected token
    • 解决:使用dos2unix转换
  2. JavaScript版本问题:服务器V8版本较旧

    • 错误:Unexpected token 'const'
    • 解决:ES6语法转ES5
  3. Python版本问题:本地Python 3.9+,服务器Python 3.6

    • 错误:'type' object is not subscriptable
    • 解决:使用List[str]而不是list[str]

经验教训

  • ✅ 开发时就要考虑部署环境
  • ✅ 使用Docker可以避免环境差异
  • ✅ 详细记录每个错误和解决方法

第二大坑:前后端通信

问题:不知道前后端怎么连接

遇到的错误

  1. CORS跨域错误

    • 错误:Access-Control-Allow-Origin
    • 解决:配置CORS或使用代理
  2. API路径错误

    • 错误:404 Not Found
    • 解决:检查Nginx配置和API路径
  3. 数据格式不匹配

    • 错误:前端收到数据但解析失败
    • 解决:统一使用JSON格式

经验教训

  • ✅ 使用API代理简化路径
  • ✅ 统一数据格式(JSON)
  • ✅ 使用TypeScript可以避免类型错误

第三大坑:数据库操作

问题:不知道如何设计和使用数据库

遇到的错误

  1. 数据库锁定

    • 错误:database is locked
    • 解决:使用连接池,及时关闭连接
  2. 数据丢失

    • 错误:数据没有保存
    • 解决:确保commit事务
  3. 查询性能问题

    • 错误:查询很慢
    • 解决:添加索引,优化查询

经验教训

  • ✅ 使用ORM(SQLAlchemy)简化操作
  • ✅ 设计好数据库结构
  • ✅ 定期备份数据

最重要的经验

  1. 不要害怕错误

    • 每个错误都是学习机会
    • 记录错误和解决方法
  2. 从小功能开始

    • 不要一开始就想做完整系统
    • 先做出能用的最小版本
  3. 持续学习

    • 技术更新很快
    • 保持学习新技术的习惯
  4. 写文档

    • 记录开发过程
    • 方便以后回顾和分享

🗺️ 小白路线图

如果你是完全小白,按这个顺序学习:

第1周:基础知识

目标:了解Web开发基础

学习内容

  1. HTML基础

    • 标签、属性、结构
    • 练习:做一个简单的个人介绍页面
  2. CSS基础

    • 选择器、样式、布局
    • 练习:美化个人介绍页面
  3. JavaScript基础

    • 变量、函数、事件
    • 练习:添加交互功能(点击按钮)

推荐资源

第2-3周:前端框架

目标:学会使用现代前端框架

学习内容

  1. React基础

    • 组件、Props、State
    • 练习:做一个Todo List
  2. Astro基础

    • 页面、组件、布局
    • 练习:做一个博客网站
  3. Tailwind CSS

    • 工具类、响应式
    • 练习:美化博客网站

推荐资源

第4-5周:后端开发

目标:学会创建API

学习内容

  1. Python基础

    • 语法、数据类型、函数
    • 练习:写一些小程序
  2. FastAPI基础

    • 路由、请求、响应
    • 练习:做一个简单的API
  3. 数据库基础

    • SQL基础、SQLite使用
    • 练习:存储和查询数据

推荐资源

第6-8周:完整项目

目标:做一个完整的项目

项目建议

  1. 个人博客

    • 前端:Astro + Tailwind
    • 后端:FastAPI
    • 功能:文章列表、详情、搜索
  2. 待办事项应用

    • 前端:React
    • 后端:FastAPI
    • 功能:增删改查、分类
  3. 简单聊天室

    • 前端:React
    • 后端:FastAPI + WebSocket
    • 功能:实时聊天

第9-10周:部署上线

目标:让网站能在互联网上访问

学习内容

  1. Linux基础

    • 基本命令、文件操作
    • 练习:在服务器上操作
  2. 服务器配置

    • Nginx配置、服务管理
    • 练习:部署一个简单网站
  3. 域名和SSL

    • 域名解析、证书申请
    • 练习:配置HTTPS

推荐资源

持续学习

建议

  • 每周至少写代码2-3次
  • 参与开源项目
  • 阅读技术博客
  • 参加技术社区

🎯 给小白的话

不要害怕

  • 每个人都是从零开始的
  • 错误是学习的一部分
  • 不要追求完美,先做出能用的

学习方法

  1. 动手实践

    • 只看教程不够,要自己写代码
    • 遇到问题先自己尝试解决
  2. 记录过程

    • 写博客记录学习过程
    • 记录遇到的问题和解决方法
  3. 寻求帮助

    • 加入技术社区
    • 提问时要提供足够的信息
  4. 持续学习

    • 技术更新很快
    • 保持学习的习惯

推荐学习路径

HTML/CSS/JS基础 (2周)
    ↓
选择一个前端框架 (2-3周)
    ↓
学习后端开发 (2-3周)
    ↓
做一个完整项目 (3-4周)
    ↓
部署上线 (1-2周)
    ↓
持续改进和学习

常见问题

Q: 我没有编程基础,能学会吗?
A: 能!只要坚持学习,每天进步一点点,1-2个月就能做出自己的网站。

Q: 需要买服务器吗?
A: 初期可以在本地开发,等做出能用的版本再考虑部署。服务器不贵,阿里云ECS年费99元,平均每月约8.25元。

Q: 遇到问题怎么办?
A:

  1. 先看错误信息,理解问题
  2. 搜索错误信息,看别人怎么解决的
  3. 如果还不行,在技术社区提问

Q: 要学多久才能做出网站?
A: 如果每天学习2-3小时,1-2个月就能做出一个完整的网站。

Q: 需要学哪些技术?
A:

  • 前端:HTML、CSS、JavaScript、React(或Vue)
  • 后端:Python(或Node.js)、FastAPI(或Express)
  • 数据库:SQLite(简单)或MySQL(复杂)
  • 部署:Linux基础、Nginx配置

🌟 最后的话

从0到1做网站,最难的不是技术,而是开始

不要等到"准备好了"再开始,现在就动手

  1. 打开电脑
  2. 安装Node.js和Python
  3. 跟着教程做第一个页面
  4. 遇到问题就解决问题
  5. 持续改进

记住

  • ✅ 每个专家都曾经是新手
  • ✅ 每个错误都是学习机会
  • ✅ 持续学习比天赋更重要
  • ✅ 动手实践比只看教程更有效

祝你成功! 🚀


本文档基于真实项目经验整理,希望能帮助到想从零开始做网站的朋友们。

最后更新:2025年11月