Node.js 创始人:Javascript 容器是简化服务器抽象的“先驱”践行者

简介: Node.js 创始人:Javascript 容器是简化服务器抽象的“先驱”践行者

近日,Node.js 创始人 Ryan Dahl 在社区以“JavaScript Containers”为题发文谈论了自己对 Javascript 容器的看法 —— Javascript 是通用脚本语言的“未来”,而 Javascript 容器则是简化服务器抽象的“先驱”践行者。

众所周知,大多数服务器程序都运行的是 Linux 系统,它们由一个文件系统、一些可执行文件、一些共享库组成,它们可能与 systemd 或 nsswitch 等系统软件接口。

但由于服务器软件通常依赖于许多系统资源和配置,因此在过去部署它一直是一项挑战。而 Linux 容器的出现,就很好的解决了这个问题。特别是 Docker 进一步让 Linux 容器的使用得到普及后,操作系统级的虚拟化为分发服务器软件提供了极好的机制,每个容器映像都是一个无依赖性的随时可以运行的软件包。

Ryan Dahl 表示,尽管是在更高的抽象级别上,但 browser JavaScript 中也依旧能找到类似的封闭环境。直到 2018年,Cloudflare 的 Zack Bloom 推出了 Workers 服务,这才“促使我们思考 JavaScript 本身能否能提供一种新型的自给自足的服务器容器” —— “我们越能消除不必要的抽象,就越能接近‘The Network Is the Computer’的概念。

JavaScript 是通用脚本语言的“未来”

Ryan Dahl 认为,技术很难预测,但 World Wide Web (万维网、广域网)肯定会在 10 年后出现。随着越来越多的人类基础设施通过网络应用连接在一起,10 年后 HTTP、HTML、CSS、JavaScript 这些构成网络的标准肯定也会出现。因此,“我相信 JavaScript 将会继续得到开发和改进”。

image.png

我们知道,网络是人类信息的基本媒介,脚本语言则像是驱动网络发展的“基石”,这其中,JavaScript 不同于其他编程语言,因为它与这个基础设施紧密相连。

脚本语言对于解决许多服务器端问题很有意义,它允许更快、更便宜地编写业务逻辑,但大多数正在编写的代码不受计算的限制,而是受生产力的限制 —— 编写速度和开发人员的金钱成本。

脚本语言(Python、Ruby、Lua、Shell、Perl、Smalltalk、JavaScript)非常相似,在语法和 API 方面存在差异,但几乎没有其他可以与之对比的地方。这一点,相信每一位在 Rust 或 C 中工作过的人都能理解脚本语言的感受。

Ryan Dahl 总结称,脚本语言很有用,但它们几乎都是一样的,其中 “JavaScript 的使用要广泛得多,而且是未来的证明。因此,将 JavaScript视为通用脚本语言是有道理的”。

服务器软件高级别容器:JavaScript 沙箱

Javascript 中的沙箱并非传统意义上的沙箱,它是一种语法上的 hack 写法,指 Javascript 中处理模块依赖关系的闭包。

image.png

JavaScript 沙箱本身这个“容器”并非为了解决 Linux 容器所针对的问题,它的出现是其简单化的结果 —— 最小化了 web 服务业务逻辑的样板文件,它与浏览器共享概念,并减少程序员需要知道的概念(如在编写web服务时,很可能任何 systemd 配置都只是不必要的样板)。

提起 JavaScript browser API,相信每个网络开发者都知道,因为 JavaScript 容器抽象是在相同的 browser API 上构建的,所以开发者需要的经验总量减少了,这恰恰是 Javascript 的通用性降低了其复杂性。

在这个新服务器抽象层中,JavaScript 取代了 Shell,且比 Bash/Zsh 更适合编写脚本。JavaScript 沙箱可以调用 Wasm,而非像 Shell 那样调用 Linux 可执行文件。

综述

不可否认,JavaScript 是通用的脚本语言,也正是由于 JavaScript 的普遍性,一种新的类似容器的抽象正在出现 —— JavaScript 容器,它简化了服务器。

JavaScript 容器的出现并非意味着 Linux 容器正在“消亡”,这种抽象层次总是有用的。特别是对于编写的许多“业务逻辑”的开发者来说,当你建立一个网站的时候,或许大多数“web服务”可以通过使用 JavaScript 容器而不是 Linux 容器来简化。

目前,为了试图从根本上简化服务器抽象,为了进一步探索这些想法,JavaScript 容器或许就是一种“先驱”践行者。你是否也这么觉得呢?欢迎在评论区留言互动。

相关文章
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
645 1
|
11月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
416 9
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
348 8
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
数据采集 JavaScript 搜索推荐
服务器端渲染(SSR)(Nuxt+Next.js)
服务器端渲染(SSR)技术在服务器上生成页面HTML,提升首屏加载速度和SEO效果。Nuxt.js和Next.js分别是基于Vue.js和React.js的流行SSR框架。Nuxt.js提供自动化路由管理、页面级数据获取和布局系统,支持SSR和静态站点生成。Next.js支持SSR、静态生成和文件系统路由,通过`getServerSideProps`和`getStaticProps`实现数据获取。SSR的优点包括首屏加载快、SEO友好和适合复杂页面,但也会增加服务器压力、开发限制和调试难度。选择框架时,可根据项目需求和技术栈决定使用Nuxt.js或Next.js。
|
JavaScript
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
1138 1
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍