在浏览器中本地运行Node.js

一切要从收到一封邮件开始

大早上,我收到一封邮件,StackBlitz说正在与Next.js和Google的团队合做开发一项新技术
  • 几年前,StackBlitz意识到网络正朝着关键的拐点发展。WebAssembly和新功能API的出现使编写基于WebAssembly的操做系统彷佛变得可能,该操做系统功能强大到能够彻底在浏览器中运行Node.js。咱们设想了一个比本地环境更快,更安全和一致的高级开发环境,以实现无缝的代码协做而无需设置本地环境

技术名为:WebContainers

  • WebContainers容许您建立完整的Node.js环境,这些环境能够在毫秒内启动,而且一键便可当即联机和连接共享。该环境具备VS Code强大的编辑经验,完整的终端,npm等功能。它还能够彻底在您的浏览器中运行,从而带来一些关键的好处:
  • 比本地环境快。与yarn / npm相比,构建速度最多可提升20%,而卷装安装速度则可快5倍以上。
  • 浏览器中的Node.js调试。与Chrome DevTools的无缝集成可实现本机后端调试,无需安装或扩展。
  • 默认为安全。全部代码执行都发生在浏览器的安全沙箱中,而不是在远程VM或本地二进制文件上。
  • 一样,这些环境不在远程服务器上运行。而是,每一个环境都彻底包含在您的Web浏览器中。没错:Node.js运行时自己第一次在浏览器中本机运行。node

    从如今开始,WebContainers如今处于公开测试阶段。当前支持包括Next.js,GraphQL和Vanilla Node.js,咱们正在与其余开源项目合做以扩展支持

为何会有WebContainers

安全
  • StackBlitz经过利用浏览器中数十年来的速度和安全性创新来解决这些问题。StackBlitz中的全部计算都会在浏览器安全沙箱中当即发生,而且没法爆发到您的本地计算机上。该模型还释放了一些关键的开发和调试优点(在几秒钟内便会提供更多优点)。

释放浏览器的功能
  • 使用Chrome DevTools无缝进行Node.js调试npm

    • 事实证实,浏览器确实很是擅长调试Javascript。我知道,这使人震惊;)经过在浏览器中执行Node.js,与Chrome DevTools的集成即开即用。无需安装,无需扩展,仅在浏览器中进行本机后端调试便可

运行服务器,在你的浏览器中
  • 实际上。WebContainers包含一个虚拟的TCP网络堆栈,该网络堆栈已映射到浏览器的ServiceWorker API,使您能够即时建立实时Node.js服务器,即便您处于脱机状态也能够继续工做。由于它彻底在浏览器安全沙箱中运行,因此服务器响应的延迟比本地主机(!)少,而且能够保护您的Web服务器免受本地主机抓取攻击
  • 毫秒级启动时间
  • 每一个页面加载时都有一个全新的环境后端

    • 再见rm -rf node_modules!WebContainer的内置npm客户端是如此之快,以致于它在每次页面加载时都运行全新的安装,从而确保您每次都能得到一个干净的环境。若是您的环境确实出现问题,则能够像处理其余任何Web应用程序同样恢复到干净的状态:单击“刷新”按钮
  • 借助StackBlitz,不管您是在火车上,在飞机上仍是在雨中后座时,均可以在没有互联网链接的状况下继续工做
使用StackBlitz新颖的计算模型,100%的代码执行发生在浏览器安全沙箱中。与本地相比,这致使了更快,更少限制的开发环境,同时又提供了更高的安全性,这是很是罕见的组合。
  • 实际上,默认的安全情况是如此稳固,以致于咱们的嵌入式软件包管理器是第一个可公开得到的工具,能够解决五年多来未解决的Sam Saccone长期未解决的npm漏洞
  • 一样,这些环境不在远程服务器上运行。而是,每一个环境都彻底包含在您的Web浏览器中。没错:Node.js运行时自己第一次在浏览器中本机运行浏览器

    写在最后

  • WebAssembly强大到足以编写操做系统,可是此次WebContainers把这个技术使用方向放在了Node.js上,我以为是有划时代意义的
  • 在我看来,这个技术在将来最主要应用方向是,可使世界范围内的软件在之前没法运行的地方运行,之后电脑上可能只须要安装一个谷歌浏览器