听说现在是前端王朝?前端路由 & 后端路由 & MVVM,彻底整明白!一篇给小白看的硬核干货

148 阅读5分钟

前端后端吵吵吵,谁才是路由的爸爸?
RESTful、MVC、MVVM、单页面、接口文档……
这些词面试老是蹦出来,到底怎么搞懂?
今天我就用一篇文章,把这坨概念一次性讲明白,保证你面试顺得像丝儿一样~


先放一张脑图(文字版)

  • URL 组成
  • 动态路由 & RESTful 规范
  • 后端路由(传统 MVC)
  • 前端路由(SPA)
  • 前后端分离 & API
  • MVVM 是啥
  • 大前端是怎么来的

别急,我们一步步来。


URL 到底长啥样?

看这个例子:

https://juejin.cn/users/123?a=1&b=2#hash

这串玩意拆开是这样的:

部分叫啥干啥用
https协议跟服务端说“咱用安全的 HTTP 聊”
juejin.cn域名找到服务器
(443)端口https 默认 443,http 默认 80
/users/123路径表示我要哪个资源
?a=1&b=2查询字符串额外条件
#hash哈希网页内定位(浏览器自己用)

你面试的时候,HR 出道题:“来,说说 URL 里这几个玩意怎么区分?”
别怂,这张表一背,稳了。


动态路由 + RESTful 是啥?

动态路由:就是路径里有变量。

  • /users/:id
    访问 /users/123id 就是 123

这可不光前端,后端也玩得飞起,比如 Express、Django、Spring MVC 都支持。


RESTful 风格,这是后端最爱考你的名词之一。

核心是两个点:

  • URL 定位资源
  • HTTP 方法表示动作
动作方法URL干啥
GET/post/:id查某篇文章
POST/post新建文章
改(全量)PUT/post/:id替换整篇文章
改(部分)PATCH/post/:id改一部分
DELETE/post/:id删除文章
查头HEAD/post/:id查元信息

还有个彩蛋:

上传头像? PUT /avatar/:id

也是 RESTful 的精神体现。


早期后端路由:全是后端爸爸说了算

最早的网站开发,堪称后端爸爸统治全局:

浏览器发请求 -> 服务器路由(后端匹配 URL)
-> 调用 Controller(控制器) -> 找 Model(数据库)
-> 用 View(模板引擎)拼页面 -> 返回完整 HTML

来个例子:

/users/123

后端路由:匹配 /users/:id
控制器:查数据库找这个 ID 的用户
View:用模板(JSP、EJS、Thymeleaf……)拼个 <h1>Hello, Allen</h1>
完事,一整个页面扔回去。


✅ 优点

  • 够简单,浏览器啥都不用管,后端全包办
  • SEO 友好,搜索引擎一看就是现成 HTML

❌ 缺点

  • 每次换个页面都得刷新整个浏览器
  • 前端和后端紧紧捆一起,俗称“耦合”
  • 前端写页面还得学后端模板语法,想单飞都飞不了

MVC:后端路由背后的分层秘密

为啥后端路由要搞 Controller、Model、View 这么啰嗦?
为了分工明确嘛,这套叫 MVC

负责啥
Model跟数据说话(查库)
View跟用户说话(HTML 页面)
Controller跟两边说话(路由+逻辑)

然后前端不乐意了:咱分开干吧!

随着 Ajax、React、Vue 这些神器出现,前端发现:

“后端你别给我拼页面了,给我 JSON 就行!我自己用 JS 拼!”

于是:

  • 后端只要写接口,遵守 RESTful,暴露资源。
  • 前端拿 fetch / axios 去调。
  • 数据回来后,自己拼页面,想咋炫就咋炫。

这就是:

/api/user/123  -> 返回 {"id":123,"name":"Allen"}

前端拿到后在浏览器里渲染。


前端路由登场:SPA 单页面的秘密武器

以前换页面,要刷新整个页面。
单页面应用(SPA)说:

“我全都要在浏览器里搞定!”

前端路由就诞生了。

它干两件事:

  1. 监听 URL 的变化(/users/123
  2. 找到对应的页面级组件(<UserPage />)渲染出来

常用库:

  • React → react-router-dom
  • Vue → vue-router

所以现在:

  • 后端路由:只关心 API
  • 前端路由:自己切换页面,浏览器无感刷新

MVVM:前端这锅饭咋分工?

有了前端路由,前端自己得有分层。

这时候来了个词:

MVVM = Model + View + ViewModel

干啥React 里咋体现
Model数据(后端接口给的 JSON)fetchaxios
View页面(长啥样)JSX
ViewModel连接两者(状态管理)useStateuseEffect

举个栗子:

function UserPage() {
  const [user, setUser] = useState(null);

  useEffect(() => {
    fetch('/api/user/123')
      .then(res => res.json())
      .then(data => setUser(data));
  }, []);

  return <div>{user?.name}</div>;
}
  • Model:/api/user/123 回来的 JSON
  • View:<div>{user?.name}</div>
  • ViewModel:useState 管数据,useEffect 拉接口

前后端分离:API 开发文档就是圣旨

既然前端要自己拼页面,后端只给数据,那两边得靠啥对接?

靠接口文档!

文档里写:

  • 路径:GET /api/user/:id
  • 请求参数:id
  • 返回值:{ id, name, age }

前端对着写 fetch,后端照着返回,谁也别甩锅。


大前端:不仅仅是网页

前端发展到现在,已经不只是写个 PC 页面了:

场景干啥
PC 网页React、Vue
Mobile H5浏览器里跑的响应式页面
AppReact Native、Flutter、uni-app
小程序微信/支付宝小程序
桌面端Electron,QQ 音乐、VSCode 都是 Electron 做的

现在的前端程序员:

一个接口拉到底,PC/手机/App/小程序/桌面都能用,
不叫前端,叫大前端


✅ 全文一句话总结

以前后端爸爸统治一切(后端路由 + MVC)
现在前端要当家做主(前端路由 + MVVM)
RESTful 让接口更优雅
前后端分离靠 API 文档当红娘
前端自己写路由,写状态,拿接口拼页面,
一套技术打天下,PC、Mobile、小程序全都要!


面试这么说,面试官只会点头

你只要把这套:

“现在都是前后端分离,后端只写 RESTful API,前端自己做路由和渲染,框架一般用 MVVM,比如 React 用 useState/useEffect 实现数据驱动,前后端通过接口文档连调,一套代码可以适配 PC、H5、App、小程序,典型的大前端。”

背下来,面试稳了。


如果觉得有用,请你动动发财的小手,点个赞赞。

这篇文章字数不多,但全是血肉干货。
收藏就是赚到,面试临时抱佛脚,就翻出来背背就行。
有用?别忘了点赞 + 收藏 + 关注我


要是想看:
✅ 前后端分离实战 DEMO
✅ 前端路由代码示例
✅ MVVM 手写版

在评论区告诉我,我给你安排!


完结!感谢阅读 🫡