前言
对于前端开发而言,循序渐进,基于标准的 HTML CSS JS “前端三剑客”构建,是否是更好的选择?
或者,你是否需要一个“多面手框架”,例如 Next 或 Angular,它们兼具 SSR(服务端渲染)、路由和导航,以及更强大的状态管理等内置功能?
当然,这取决于你要构建的网站的规模。
但如果你是 Vue 爱好者,那其实你已经是渐进式框架的拥护者了。如果你确实需要更复杂的功能,可以使用其他配置或第三方工具。
举个栗子,你可以选择使用 Node 通过 Vue 实现 SSR,或者可以直接使用基于 Vue 构建的 Nuxt 框架。事实上,Nuxt 就是专门为处理 SSR 和其他高级功能而设计的。
本文是一篇关于“Vue 之父”最近活动的新闻稿,包含了尤大在 Vue Live 大会和其他访谈中,共享的关于目前前端框架现状的若干观点,一起来探讨一下吧。
渐进式框架
在 Vue 的官网上,Vue 将自己定位为“渐进式 JS 框架”。
“渐进式”这个术语正在处理某些繁重的需求,但简而言之,这意味着 Vue 适用于各种场景,且诚如官网所言,“Vue 可被渐进式采用”。
在最近的 Vue Live 大会上,“Vue 之父兼首席维护者”尤大强调了渐进式框架概念。
KISS 原则
KISS 原则是“Keep it Simple and Stupid”的首字母缩写,意思是“通俗易懂”。KISS 原则是用户体验的高层境界,把一个产品做得连白痴都会用,因而也被称为“懒人原则”。
KISS 原则源于大卫·马麦特的电影理论,后来被逐渐延伸扩展到编程等领域。
Vue 的关键是其 SFC(单文件组件)功能,这允许开发者“使用驾轻就熟的 HTML CSS JS 语法创作模块化组件”。
Vue 和 React 都是组件筑基模型(component-based models),但语法却一龙一猪。
React 使用 JSX 语法,它糅合了 HTML 和 JS,而 Vue 使用“HTML 筑基的模板语法”。重点在于,“所有 Vue 模板都是语法有效的 HTML,可以被符合规范的浏览器和 HTML 解析器进行解析。”
Vue 的语法旨在让熟悉标准 HTML 的 Web 开发者驾轻就熟 —— 期望服务的目标用户是所有 Web 开发者!而 JSX 要求用户拥有一定的 JS 知识储备。
实际上,Vue 的 KISS 语法是在 2014 年发布早期能够人气爆涨的关键原因。
“实际上,Vue 的唯一功能就是为你提供了这个模板语法。然后你可以使用纯 JS 对象声明状态。当你更改对象时,Vue 会自动更新视图。这就是 Vue 生态系统的开端。”
当被问及在当时已经有 AngularJS 等众所周知的替代品可用时,为什么 Vue 却开始人气爆涨时,尤大的回答极具启发,且提供了一个线索,说明了为什么大家对 React 的复杂性越来越不满。
“AngularJS 当时已经横空出世了,”尤大在谈到十年前发布 Vue 时说道。
“但我认为对于很多用户而言,AngularJS 令人望而生畏,因为在有效使用 AngularJS 之前,你需要先了解所有其他概念。所以我认为 Vue 诞生的时候,我们基本上提炼了任何从事前端的用户都共同关注的部分。本质上,我们只是以此为开端,并做减法“断舍离”。我认为这种简单性确实让用户更容易 get 到 Vue 是什么,也充分理解 Vue 能够解决的问题。”
尤大继续解释道,Vue 在过去十年里日新又新,包含了许多新功能,包括 SPA(单页应用程序)路由器、状态管理工具、CLI 工具链、开发工具、文档等等。
React 还是一个前端框架吗?
尽管 Vue 的工具集已经扩展,但尤大表示 Vue 的使用范围仍然集中在前端,他认为 React 的情况并非如此。
“即使是在 React 中,所有新功能也都以 RSC 为中心,”他说,“这明显扩展了你所认知的前端框架的范围,我认为 RSC 诞生之后,React 不再是纯粹的前端框架。但 Vue,目前我们仍然认为自己聚焦于前端。”
尤大表示使用 HTML 模板的 Vue 方案也吸引了需要做某些前端工作、但又不想处理复杂前端框架的后端开发者。
Angular 和 React 等前端框架通常涉及使用 Node 服务器进行 SSR,这在服务器上生成 HTML,并将其发送到客户端。RSC 是 React 推陈出新的功能,它通过在将内容交付给客户端之前,在服务端处理某些逻辑和渲染,进一步辅助渲染过程。
但根据尤大的说法,后端开发者不一定需要这种类型的功能。
“对于 PHP 开发者或其他后端语言而言,世界观天差地别,”他说。“对它们而言,世界观是后端框架将所有 HTML 发送到前端,然后它们考虑如何使其具备交互性。”
JS 的后遗症
在过去的几年里,JS 框架众口嚣嚣,这不仅仅是因为前端框架与日俱增的复杂性。许多开发者认为现在使用 JS 做了太多事情。
“JS 开发者绝对会想方设法来避免编写非 JS 的代码。它们首先将 CSS 放入 JS 中,然后将 HTML 放入 JSX,现在还要将 SQL 放入 JS 中!”
某些开发者认为,过度依赖 JS 不仅会贬低 Web 生态系统的价值,还会使开发者的工作面临风险。
“React 对于绝大多数制作面向 Web 软件的组织而言,客观上比许多替代方案更糟糕。”
此外,React 和构建在其之上的框架导致了一代开发者“没有接受过排除 DOM 代码故障或使用 CSS 解决问题的培训”。这使得科技公司在就业需求不高时更容易解雇这些员工,比如现在的行业现状。
与 Next 和 Remix 等 React 更现代的框架不同,Vue 不会尝试将所有内容强加到 JS 中。不过,诚如尤大所言,如果 Vue 用户确实需要的话,它们可以进阶使用“万物皆可 JS”的方案。
参考文献
- Blog:https://thenewstack.io/want-out-of-react-complexity-try-vues-progressive-framework
- Vue:https://vuejs.org
- React:https://react.dev