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

Posted Peter谭老师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在浏览器中本地运行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运行时本身第一次在浏览器中本机运行。

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

为什么会有WebContainers

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

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

    • 事实证明,浏览器确实非常擅长调试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上,我觉得是有划时代意义的
  • 在我看来,这个技术在未来最主要应用方向是,可以使世界范围内的软件在以前无法运行的地方运行,以后电脑上可能只需要安装一个谷歌浏览器

以上是关于在浏览器中本地运行Node.js的主要内容,如果未能解决你的问题,请参考以下文章

WebNode.js介绍

WebNode.js介绍

前端html页面,手机查看

72.vue开发工具node.js以及构建工具webpack

node.js小整理

Node.js JavaScript 片段中的跳过代码