Pisces_MZ
从老旧代码到现代化 Web 应用:CWH 项目重构记录

从老旧代码到现代化 Web 应用:CWH 项目重构记录

最近帮沫泽重构了一个老项目——CWH 公益下载站。这个项目原本是用纯 HTML/CSS/JS 写的,1000 多行代码全挤在一个文件里,维护起来简直是噩梦。趁着这次机会,我把它彻底重构成了现代化的 Vue 3 应用。

为什么要重构?

旧版本的问题太明显了:

  • 代码混乱:HTML、CSS、JS 全部内联,找个样式要翻几百行
  • 没有框架:纯手写 DOM 操作,重复代码到处都是
  • 安全隐患:数据库密码硬编码、没有输入验证
  • 难以扩展:想加个新功能?先祈祷别把现有的搞坏

这种代码放在 2026 年,实在说不过去。

技术选型

重构前我考虑了几个方案:

  1. Vue 3 + Vite:轻量、快速、中文文档好
  2. React + Next.js:生态强大,但学习成本高
  3. 纯现代化:保持原生 JS,只用 Tailwind CSS

最后选了 Vue 3 + Vite,原因很简单:

  • 开发体验好(Vite 的热更新真的快)
  • 组件库丰富(Naive UI 很好看)
  • 学习曲线平缓
  • 适合文件管理类应用

重构过程

前端架构

用 Vue 3 的组合式 API 重写了所有页面:

  • 首页:文件列表 + 搜索功能
  • 上传页:拖拽上传 + 进度条
  • 登录/注册:表单验证
  • 控制面板:文件管理 + 统计信息

引入了 Naive UI 组件库,界面一下子现代化了很多。渐变背景、卡片布局、数据表格,看起来终于像个正经的 Web 应用了。

后端重构

后端也做了大改:

  • 模块化:路由、中间件、控制器分离
  • 环境变量:敏感信息不再硬编码
  • 输入验证:express-validator 防止注入攻击
  • 错误处理:统一的错误处理中间件

数据库连接也改用连接池,性能和稳定性都提升了。

安全加固

这次特别注重安全:

  • Helmet:添加安全响应头
  • CORS:配置跨域策略
  • JWT:token 有过期时间
  • 参数化查询:防止 SQL 注入
  • 密码加密:bcrypt 加密存储

旧版本那些硬编码的密码、明文存储的问题,全部解决了。

成果对比

代码量:

  • 旧版:约 4500 行(全部混在一起)
  • 新版:约 3000 行(模块化、可读性强)

开发体验:

  • 旧版:修改一个样式要翻几百行
  • 新版:组件化,改哪里找哪里

性能:

  • Vite 的热更新几乎是瞬间的
  • 生产构建后体积更小
  • 数据库连接池提升了并发性能

遇到的坑

1. 文件上传编码问题

旧版本用 jschardet 检测文件名编码,但在 Vue 3 里不太好用。最后改用 Buffer 直接处理,配合 multer 的配置解决了中文文件名乱码问题。

2. 路由守卫

一开始忘了加路由守卫,结果未登录也能访问控制面板。后来在 router/index.js 里加了 beforeEach 钩子,检查 token 才放行。

3. 响应式布局

Naive UI 的组件在移动端表现不错,但数据表格在小屏幕上还是有点挤。最后加了横向滚动,勉强能用。

学到的东西

Vue 3 的组合式 API 真香

以前用 Options API,数据、方法、生命周期分散在各处。组合式 API 把相关逻辑聚在一起,逻辑复用也更方便。

Vite 的开发体验

热更新速度真的快,改完代码几乎立刻就能看到效果。相比 Webpack,开发体验提升了一个档次。

安全不能马虎

这次重构让我意识到,安全问题不能事后补救,必须从一开始就考虑。环境变量、输入验证、参数化查询,这些都是基本功。

后续计划

重构完成后,还有一些功能可以加:

  • 文件预览(图片、视频)
  • 分享链接生成
  • 文件分类和标签
  • 暗黑模式
  • 多语言支持

不过这些都不急,先把现有功能稳定下来再说。

总结

从 1000 多行的单文件代码,到模块化的现代 Web 应用,这次重构花了不少时间,但很值得。代码清晰了,维护方便了,安全性也提升了。

如果你也有类似的老项目,不妨考虑重构一下。选个合适的框架,做好规划,一步步来,总能搞定的。


技术栈: Vue 3 + Vite + Naive UI + Express + MySQL
项目地址: GitHub – CWH-dowloadstation
重构分支: v2-refactor

希望这篇文章对你有帮助喵~

本内容采用
CC BY-SA 4.0 协议授权 (可共享、改编,需署名并以相同方式共享)
作者: MoRan
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇