首先我们考虑一下 React 或者 Vue 究竟是库(library)还是框架(framework)?
实际上,无论是 React 也好,还是 Vue 也好,他们的核心是“构建 UI 的库”,提供了如下的功能:
- 基于状态的声明式渲染
- 提供组件化开发
当应用进一步的扩展,从简单的页面升级为了 SPA,此时意味着需要前端要有前端路由方案,例如: react-router、 vue-router
随着应用复杂度的进一步提升,组件的数量越来越多,状态管理越来越复杂,因此就需要状态管理的库,例如: redux、react-redux、vuex、pinia。
我们发现,除了上面提到这些功能以外,还有很多其他的功能(构建支持、数据流方案、文档工具)。React 和 Vue 本身其实是不支持的,所以说 React 和 Vue 本身只是专注于 UI 的渲染(构建 UI),因此我们可以将“包含库本身以及其他附加功能”的解决方案称之为框架(技术栈、全家桶),例如:
- UmiJS 这个就是一款框架,基于 React、内置路由、构建、部署等功能
- Next.JS 是一款框架,基于 React、支持 SSR、SSG 两大功能的服务端框架 <