即刻App年轻人的同好社区
下载
App内打开
zgq354
1年前
最近也在想这块的话题,这里相当于把Web和浏览器、搜索引擎的交互都收拢到一套技术栈下,有了JAMStack的概念去做分工。此时后端角色专注于数据层面的逻辑的实现,前端可能就差不多是后台众多微服务之间的一小块的环节。

背后是二十多年来的一个历史变迁。Web本来只是HTML文档和URL构成的资料库,在需求的驱动下HTML文档主要就作为PHP等后端的一个渲染层,形成早期的Web App,用户状态全靠服务端的session来维护。

逐渐地文档的能力丰富起来,加上Ajax、Flash插件构建起了RIA生态,再后面HTML5进一步发展并逐步替代Flash流派,甚至可以支撑起更加复杂的GUI应用,慢慢地目光焦点就放在了以JS为中心的SPA上。

但其实Web的文档互联属性和App属性并不是太泾渭分明,通常会有个暧昧的状态,只注重Web亦或是只注重App都有些偏颇,所以服务端渲染方面也一起提上了日程,同时也支撑起了 Vercel 等等以JAMStack为中心的边缘计算一条龙服务。

这里就有点Web App也从PHP时代的重服务端,到SPA的重客户端,到现在俩者之间有了更丰富的融合关系的状态。对Web开发者而言就可以更专注在业务的实现上,而非搞一堆不同编程语言分散注意力了。

回憶_Retrospection: 最近这两天学习了一下 Next.js 和 Remix。 这两个框架在国内和国际上的认知有显著的区别。国内看到的文章更多还是把它们看成「服务端渲染框架」看待,但是国际上包括他们自己定位自己都是「全栈框架」。 曾经一度不太理解为什么它们是全栈框架,直到最近好好地研究了一下它们的理念,我突然理解了。它们其实是做了一个回归的动作。 如果我们看一看上一代的所谓 web 框架,诸如 PHP、ruby on rails 甚至更流行的 spring mvc ,其实都带有一个“模板引擎”。在那个年代甚至都不存在一个前后端交互的概念,浏览器的URL对应的资源全部都是页面,动态化的内容是页面里很微小的一部分。而数据提交之类的能力都是借助 form 等来实现。 而随着 SPA 的浪潮来袭之后,前端独立了出来,后端 endpoint 更多以 json 的方式存在。但现在 Next.js 和 Remix 是一个更明显的回归。这种回归是更加前端视角的,定义了前端视角下的传统 web 框架应该怎么做。它们应该有基于页面的级联路由,需要有对 css 方案的优秀继承,需要具备现代前端框架带来的优秀组件化能力,甚至数据获取,都是为了更快地更好地更安全地展现页面。 这一点从这两个框架的文档书写重点也能够看出。不同于传统后端 MVC 框架大书特书 Model 层、Controller 层、中间件等等这些重后端侧的逻辑,Next.js 和 Remix 着墨重点在 Routing、路由组织、渲染,然后用不大的篇幅去介绍「数据获取」的手段。 还是可以看成一种螺旋式上升的过程吧,只不过前后端分离看起来又有了一种回归了。

00