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

简介: Node.js 创始人: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 将会继续得到开发和改进”。

网络异常,图片无法展示
|

我们知道,网络是人类信息的基本媒介,脚本语言则像是驱动网络发展的“基石”,这其中,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 容器或许就是一种“先驱”践行者。你是否也这么觉得呢?欢迎在评论区留言互动。

相关文章
|
5月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
8月前
|
Ubuntu 安全 数据安全/隐私保护
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
566 12
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
488 1
|
9月前
|
资源调度 JavaScript 前端开发
Day.js极简轻易快速2kB的JavaScript库-替代Moment.js
dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。
564 24
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
271 32
|
11月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
11月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~