목차
머리말
1. 웹컨테이너란 무엇인가요?
2 WebContainers API의 주요 기능
3.使用 WebContainer API 构建什么?
4.WebContainer的hello-world示例
5.本文总结
웹 프론트엔드 JS 튜토리얼 웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!

웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!

Feb 23, 2023 pm 03:44 PM
webcontainers

머리말

2021년 StackBlitz는 Node.js가 브라우저 내에서 완전히 실행될 수 있도록 하는 WebAssembly 기반의 새로운 운영 체제인 WebContainers를 출시했습니다. 지난 2년 동안 전형적인 애플리케이션인 StackBlitz의 편집기를 비롯한 수백만 명의 개발자가 매달 WebContainers를 사용해 왔습니다.

2023년 2월 14일 StackBlitz는 WebContainer API를 공개적으로 출시하여 전체 JavaScript 및 Node.js 커뮤니티가 WebContainer 위에 애플리케이션을 구축하도록 초대했습니다! 이 기사가 게시된 시점에서 StackBlitz는 WebContainer를 기반으로 StackBlitz Editor, Codeflow IDE 및 Web Publisher와 같은 공개 제품을 구축했습니다.

1. 웹컨테이너란 무엇인가요?

WebContainers는 브라우저 탭 내에서 로컬로 Node.js 서버를 시작할 수 있는 WebAssembly 기반의 작은 운영 체제입니다. 브라우저 내에서 페이지가 로드될 때 원활하게 전달되는 "전자 폴리필"이라고 생각하십시오.

웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!

WebContainers는 헤드리스 액세스를 허용하는 API를 제공하므로 개발자는 기술을 기반으로 자신만의 애플리케이션을 유연하게 구축할 수 있습니다. 동시에 WebContainer의 많은 기능은 오픈 소스로 제공되었으며 기업 사용 사례에 대한 지원 및 라이선스가 제공되었습니다. WebContainers의 주요 기능은 다음과 같습니다.

웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!
  • 기본 패키지 관리자 실행 : 브라우저에서 npm, pnpm 및 Yarn의 기본 버전을 모두 애플리케이션 내에서 기본 시간보다 최대 10배 빠르게 실행합니다.
  • 전체 브라우저 지원: 지원 Chromium 기반 브라우저부터 Firefox 또는 Safari TP까지 모든 주요 브라우저에서 WebContainer 실행
  • 모든 주요 프레임워크 지원:모든 주요 최신 일회용 환경에서 즉시 실행 시작 프레임워크.
  • 즉시 Wasm 실행: 원하는 언어나 프레임워크를 Wasm으로 포팅하여 WebContainers

2 WebContainers API의 주요 기능

2.1 브라우저 내 파일 시스템

WebContainers 메모리에 저장된 임시 가상 파일 시스템을 사용하여 시작되므로 개발자는 프로그래밍 방식으로 파일 및 디렉터리를 로드/로드하고 표준 파일 시스템 작업을 수행할 수 있습니다.

const file = await webcontainerInstance.fs.readFile('/package.json', 'utf-8');
//   readFile文件
const files = await webcontainerInstance.fs.readdir('/src');
// readdir读取目录
await webcontainerInstance.fs.rm('/src', { recursive: true });
// 删除目录
await webcontainerInstance.fs.writeFile('/src/main.js', 'console.log("Hello from WebContainers!")');
// 写文件
await webcontainerInstance.fs.mkdir('src');
// mkdir
로그인 후 복사

2.2 개발 서버

WebContainer에서는 필요에 따라 HTTP 서버를 시작하고 사용자와 공유하거나 iframe을 사용하여 애플리케이션에 직접 표시할 수 있는 미리보기 URL을 받을 수 있습니다. 가상화된 TCP 네트워크 스택은 브라우저의 ServiceWorker API에 매핑되고 완전히 로컬로 실행되므로 사용자가 인터넷 연결이 끊어지더라도 서버는 계속 작동합니다.

async function startDevServer() {
  // 执行 `npm run start` 启动Express服务器
  await webcontainerInstance.spawn('npm', ['run', 'start']);
  // 等待 `server-ready` 事件
  webcontainerInstance.on('server-ready', (port, url) => {
    iframeEl.src = url;
  });
}
로그인 후 복사

브라우저 개발 도구에서 다음 단계에서 startDevServer()를 실행하면 실행 중인 개발 서버를 볼 수 있습니다.

웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!

참고: WebContainers는 서버 준비 이벤트를 노출합니다. 서버가 준비되었을 때 사용됩니다. 요청이 수락되면 방출됩니다. webcontainerInstance.on을 사용하여 이벤트를 수신할 수 있습니다.

2.3 Node.js 명령줄

Node.js 명령은 WebContainers에 직접 전달되어 페이지 로드 시 실행되거나 애플리케이션의 사용자 작업에 의해 트리거될 수 있습니다. 로컬 개발 환경에서와 마찬가지로 npm 설치 패키지를 설치하거나, ​​새 노드 서버를 시작하거나, 애플리케이션을 구축할 수 있습니다.

webcontainerInstance.spawn('npm', ['install']);
webcontainerInstance.spawn('ls', ['src', '-l']);
// 安装依赖
async function installDependencies() {
  const installProcess = await webcontainerInstance.spawn('npm', ['install']);
  return installProcess.exit;
}
// 函数调用
window.addEventListener('load', async () => {
  textareaEl.value = files['index.js'].file.contents;
  webcontainerInstance = await WebContainer.boot();
  await webcontainerInstance.mount(files);
  const exitCode = await installDependencies();
  // 安装依赖
  if (exitCode !== 0) {
    throw new Error('Installation failed');
  };
});
로그인 후 복사
웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!

总之,WebContainer API 为 Web 应用程序提供了更新级别的灵活性、可扩展性和性能!

3.使用 WebContainer API 构建什么?

stackblitz与社区成员密切合作并根据反馈、需求和问题开发了 WebContainers。 目前基于WebContainers的用例也越来越多,比如下面的经典用例:

3.1 交互式编码教程

Rich Harris 主导的 Svelte已经开始使用 WebContainers 。 他们构建了一个令人印象深刻的交互式教程,教您如何逐步使用 SvelteKit。 这是获得框架实践经验并了解其工作原理的好方法,同时获得了一致好评!

웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!

Svelte 是一种全新的构建用户界面的方法。传统框架如 React 和 Vue 在浏览器中需要做大量的工作,而 Svelte 将这些工作放到构建应用程序的编译阶段来处理。

与使用虚拟(virtual)DOM 差异对比不同。Svelte 编写的代码在应用程序的状态更改时就能像做外科手术一样更新 DOM。

3.2 生产级 Web IDE

StackBlitz使用 Webcontainers 构建了 Codeflow IDE,它是桌面 Visual Studio Code IDE 的全功能版本,支持 git 命令、桌面扩展和带终端的 Node.js 开发服务器。

웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!

3.3 人工智能应用

WebContainer API 还解锁了开发人员可以创建的一类新的 AI 应用程序。 想象一下使用 OpenAI 集成来生成完全在浏览器内运行的实时应用程序!

웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!

3.4 无代码/低代码环境

WebContainers 支持以前不可能实现的新型低代码或无代码解决方案。 StackBlitz的用户友好型文档编辑工具 Web Publisher 等工具确实使网络更加开放并打破了进入壁垒。

웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!

4.WebContainer的hello-world示例

应用配置环境:

export const projectFiles = {
  myProject: {
    directory: {
      'package.json': {
        file: {
          contents: '...',
        }
      },
      'index.js': {
        file: {
          contents: '...',
        }
      },
    }
  }
};
로그인 후 복사

hello-world.ts程序:

import { WebContainer, FileSystemTree } from '@webcontainer/api';
import { projectFiles } from './project-files.ts';

async function main() {
  // 首先我们启动一个 WebContainer
  const webcontainer = await WebContainer.boot();
   // 启动容器后,我们复制所有项目文件
   // 进入容器的文件系统
  await webcontainer.mount(projectFiles);
   // 安装文件后,通过生成 `npm install` 来安装依赖
  const install = await webcontainer.spawn('npm', ['i']);
  await install.exit;
  // 一旦安装了所有依赖项,我们就可以生成 `npm`
  // 从项目的 `package.json` 运行 `dev` 脚本
  await webcontainer.spawn('npm', ['run', 'dev']);
}
로그인 후 복사

5.本文总结

本文主要和大家介绍如何在浏览器中运行 Node.js,同时对WebContainer 1.0做了介绍,探讨了什么是WebContainers、WebContainers API 的主要功能 、使用 WebContainer API 应用场景等等!

WebContainers 非常适合交互式编码体验,可以用在生产级IDE,编程教程,下一代文档等场景。虽然看起来功能十分有限,却是从 0 到 1 的突破,尝试在浏览器端运行一个微型的操作系统,相信不久的未来,不仅仅是 nodejs,其他的语言,例如 python、Java等。

위 내용은 웹컨테이너 1.0이 출시되었습니다! WebContainer가 무엇인지 이야기해 봅시다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

내 자신의 JavaScript 라이브러리를 어떻게 작성하고 게시합니까? 내 자신의 JavaScript 라이브러리를 어떻게 작성하고 게시합니까? Mar 18, 2025 pm 03:12 PM

기사는 JavaScript 라이브러리 작성, 게시 및 유지 관리, 계획, 개발, 테스트, 문서 및 홍보 전략에 중점을 둡니다.

브라우저에서 성능을 위해 JavaScript 코드를 최적화하려면 어떻게해야합니까? 브라우저에서 성능을 위해 JavaScript 코드를 최적화하려면 어떻게해야합니까? Mar 18, 2025 pm 03:14 PM

이 기사는 브라우저에서 JavaScript 성능을 최적화하기위한 전략에 대해 설명하고 실행 시간을 줄이고 페이지로드 속도에 미치는 영향을 최소화하는 데 중점을 둡니다.

프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? 프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? Apr 04, 2025 pm 02:42 PM

프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

브라우저 개발자 도구를 사용하여 JavaScript 코드를 효과적으로 디버그하려면 어떻게해야합니까? 브라우저 개발자 도구를 사용하여 JavaScript 코드를 효과적으로 디버그하려면 어떻게해야합니까? Mar 18, 2025 pm 03:16 PM

이 기사는 브라우저 개발자 도구를 사용하여 효과적인 JavaScript 디버깅, 중단 점 설정, 콘솔 사용 및 성능 분석에 중점을 둡니다.

소스 맵을 사용하여 조정 된 JavaScript 코드를 디버그하는 방법은 무엇입니까? 소스 맵을 사용하여 조정 된 JavaScript 코드를 디버그하는 방법은 무엇입니까? Mar 18, 2025 pm 03:17 PM

이 기사는 소스 맵을 사용하여 원래 코드에 다시 매핑하여 미니어링 된 JavaScript를 디버그하는 방법을 설명합니다. 소스 맵 활성화, 브레이크 포인트 설정 및 Chrome Devtools 및 Webpack과 같은 도구 사용에 대해 설명합니다.

Java의 컬렉션 프레임 워크를 효과적으로 사용하려면 어떻게해야합니까? Java의 컬렉션 프레임 워크를 효과적으로 사용하려면 어떻게해야합니까? Mar 13, 2025 pm 12:28 PM

이 기사는 Java의 컬렉션 프레임 워크의 효과적인 사용을 탐구합니다. 데이터 구조, 성능 요구 및 스레드 안전을 기반으로 적절한 컬렉션 (목록, 세트, ​​맵, 큐)을 선택하는 것을 강조합니다. 효율적인 수집 사용을 최적화합니다

초보자를위한 타이프 스크립트, 2 부 : 기본 데이터 유형 초보자를위한 타이프 스크립트, 2 부 : 기본 데이터 유형 Mar 19, 2025 am 09:10 AM

엔트리 레벨 타입 스크립트 자습서를 마스터 한 후에는 TypeScript를 지원하고 JavaScript로 컴파일하는 IDE에서 자신의 코드를 작성할 수 있어야합니다. 이 튜토리얼은 TypeScript의 다양한 데이터 유형으로 뛰어납니다. JavaScript에는 NULL, UNDEFINED, BOOLEAN, 번호, 문자열, 기호 (ES6에 의해 소개 됨) 및 객체의 7 가지 데이터 유형이 있습니다. TypeScript는이 기반으로 더 많은 유형을 정의 하며이 튜토리얼은이 모든 튜토리얼을 자세히 다룹니다. 널 데이터 유형 JavaScript와 마찬가지로 Null in TypeScript

Chart.js : Pie, Donut 및 Bubble Charts를 시작합니다 Chart.js : Pie, Donut 및 Bubble Charts를 시작합니다 Mar 15, 2025 am 09:19 AM

이 튜토리얼은 Chart.js를 사용하여 파이, 링 및 버블 차트를 만드는 방법을 설명합니다. 이전에는 차트 유형의 차트 유형을 배웠습니다. JS : 라인 차트 및 막대 차트 (자습서 2)와 레이더 차트 및 극지 지역 차트 (자습서 3)를 배웠습니다. 파이 및 링 차트를 만듭니다 파이 차트와 링 차트는 다른 부분으로 나뉘어 진 전체의 비율을 보여주는 데 이상적입니다. 예를 들어, 파이 차트는 사파리에서 남성 사자, 여성 사자 및 젊은 사자의 비율 또는 선거에서 다른 후보자가받는 투표율을 보여주는 데 사용될 수 있습니다. 파이 차트는 단일 매개 변수 또는 데이터 세트를 비교하는 데만 적합합니다. 파이 차트의 팬 각도는 데이터 포인트의 숫자 크기에 의존하기 때문에 원형 차트는 값이 0 인 엔티티를 그릴 수 없습니다. 이것은 비율이 0 인 모든 엔티티를 의미합니다

See all articles