今天在Hacker New上看到了一篇称赞Raisl的文章Why Rails Still Matters。
原文用黑胶唱片做为引子,说明以rails为代表的老旧web技术是ok的,不比 新的Next.js之类差很多,大家的应用场景不同而已.
个人顾个人的场子,井水不犯河水就好.
我的想法
我是从Rails入行的软件开发,入职了在一个很小的微型企业.
从Rails开始,我慢慢接触并且使用了Vim, Linux, Ruby, ORM, SQL, Postgresql, Python(在大学只是理论学习), Lua, Javascript, CSS, Markdown, Docker, Go, Kubernetes, Rust等等各种各样的技术.
可以说Rails是我从事IT行业的引路人.
最后从事和Ruby相关的工作是2016年的时候,负责给一个稍微大一点的 初创公司运维那些web服务器,数据库之类的.
时间过得很快,我很久没接触Rails或者Ruby了.
记不清是哪一个时间段,我非常喜欢静态强类型的编程语言.
估计是被Ruby的 method call chian链路搞烦了,也可能是被class搞烦了.
现在我也不喜欢Python的class 和所有的oop编程语言(java为代表, C++也不喜欢).
web/http
整个web开发说白了基本上是面向浏览器开发,包含前后端技术.
前端不多多说,html/css/javascript三个加起来本质上就是浏览器的DSL.
最新的wasm稍微可以说自己脱离了浏览器的控制,但也没脱离多少.
Node.js/deno也不敢完全说自己和浏览器没少关系
后端方面,屁股决定脑袋,也受到了浏览器不小的制约,看看Nginx和Header相关配置有多少就知道我在说什么了.
HTTP协议这么多年了,也是受到浏览器的控制的,毕竟协议谁都可以写.
市场支持不支持,支持的多不多,是和协议本身的各项指标关系不大的.
浏览器本身是一个很复杂而软件,复杂程度不输操作系统.
越是靠近用户层就越复杂,因为用户/人类是变数最多的.
相反,越靠近物理硬件,软件就可以设计的越简单.
比如网络传输的物理层,网络层,传输层,是一层复杂过一层,一层包一层, 像俄罗斯套娃一样.
操作系统,管好4大件,处理好中断,调度就好了. 浏览器光是html的渲染(想象一下一个动态的window size)就够复杂了, 别提那些音/视频API、网络请求、安全策略了
Gemini
最后用gemini总结一下这篇文章,并介绍一下Rails和Next.js的背景,以及现在的web开发趋势。
我基本认同gmini的说法。
文章主要思想
这篇文章的核心观点是,虽然像Next.js这样的新兴前端框架提供了更高级的功能和更精美的界面,但Ruby on Rails仍然是一个有价值的web开发工具,尤其是在注重简单性、开发速度和可维护性的项目上。作者认为,现代JavaScript框架的复杂性实际上会增加开发难度,而Rails的抽象和对web基础的关注使其成为许多应用程序的强大选择,即使在AI和动态web体验的时代也是如此。他用黑胶唱片类比,说明了为什么旧技术在新的创新出现后仍然存在并有价值。本质上,这篇文章推崇Rails是一种实用、高效且具有成本效益的解决方案,即使它不是“最新潮”的技术。
Rails 和 Next.js 的背景
Ruby on Rails (Rails):是一个基于Ruby语言的web应用开发框架。它由David Heinemeier Hansson于2003年创建,旨在提高开发效率和简化web应用开发过程。Rails遵循“约定优于配置”的原则,提供了一系列工具和约定,帮助开发者快速构建功能丰富的web应用。它在过去二十年中一直是流行的后端框架,许多知名公司如Airbnb、Shopify、Github等都使用Rails构建。
Next.js:是一个基于React的开源前端框架。它由Vercel公司开发,旨在提供更好的开发者体验和更高的性能。Next.js支持服务器端渲染(SSR)、静态站点生成(SSG)、API路由等功能,使得开发者可以构建更快速、更具交互性的web应用。Next.js现在是构建初创公司的最常用工具之一,许多流行的web应用如Spotify、Netflix、Facebook等都使用Next.js或其底层技术React构建。
现在Web开发的趋势
前后端分离:现代web开发越来越倾向于前后端分离的架构。前端负责用户界面和交互,后端负责数据处理和业务逻辑。这种分离使得团队可以更专注于各自的领域,提高开发效率和代码质量。
JavaScript 全栈:由于Node.js的出现,JavaScript不仅可以用于前端开发,还可以用于后端开发。这使得开发者可以使用同一种语言进行前后端开发,降低了学习成本和沟通成本。Next.js就是JavaScript全栈开发的一个例子。
微服务架构:为了应对大型应用的需求,web开发越来越倾向于微服务架构。将应用拆分成多个小型服务,每个服务负责特定的功能。这种架构提高了应用的可扩展性、可维护性和可靠性。
无服务器计算:无服务器计算(Serverless)是一种新兴的计算模式,开发者无需关心服务器的管理和维护,只需关注业务逻辑。无服务器计算可以降低运维成本,提高应用的可扩展性。
AI 和机器学习:人工智能(AI)和机器学习(ML)在web开发中扮演着越来越重要的角色。例如,可以使用AI来提供个性化推荐、智能搜索等功能。
总结 总的来说,现代web开发呈现出多样化和快速发展的趋势。Rails和Next.js作为两种不同的web开发框架,都有其独特的优势和适用场景。开发者应该根据具体项目需求选择合适的框架。