精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

這么多人用Codesandbox,他服務器扛得住么?

開發 前端
Codesandbox是如何實現的?他會面臨leetcode一樣的服務器壓力么?這個問題的本質其實是問 —— 用戶在Codesandbox中寫的代碼,究竟是在前端還是后端編譯成靜態資源的?畢竟,如果是在后端完成,會增加服務器壓力。

大家好,我卡頌。

codesandbox是前端工程師經常使用的「代碼在線運行環境」,頁面如下:

他的應用場景很廣,比如:

  • 有代碼邏輯要分享,分享個codesandbox鏈接。
  • 有新想法需要驗證,又不想本地起個項目,用codesandbox。
  • 技術文檔演示Demo,用codesandbox。

作為一個在線運行代碼的編輯器,這么多人天天免費用,他服務器扛得住么?

畢竟,同樣作為在線代碼運行環境(主要是跑算法題)的leetcode[1],如果同時刷題的人多了,提交后都還得排隊:

codesandbox是如何實現的?他會面臨leetcode一樣的服務器壓力么?

codesandbox的分類

這個問題的本質其實是問 —— 用戶在codesandbox中寫的代碼,究竟是在前端還是后端編譯成靜態資源的?畢竟,如果是在后端完成,會增加服務器壓力。

比如,對于下面這段React代碼:

// main.jsx
import { createRoot } from "react-dom/client";
import { Cpn } from "./Cpn";

function App() {
  return (
    <Cpn />
  );
}
createRoot(document.getElementById("root")).render(<App />);

要想在瀏覽器中運行,涉及幾個前置工作:

  • 需要編譯JSX語法,比如將<App/>編譯為_jsx(App, {})。
  • 需要解析并提前下載所有依賴,比如這里的react-dom、react包。
  • 需要解析模塊依賴關系,比如main.jsx導入了Cpn.jsx中的Cpn組件。對于不支持ESM的瀏覽器,需要將代碼打包。對于支持ESM的瀏覽器,需要處理引入路徑。
  • 如果涉及到其他資源,比如圖片、文字、HTML文件,需要有相應的處理。

上述工作,codesandbox是在瀏覽器還是服務器完成的呢?

在這個例子中,這些工作都能在瀏覽器完成,比如:

  • 對于所有第三方依賴,可以在瀏覽器中直接請求CDN。
  • 涉及編譯的工作(比如編譯JSX、模塊依賴分析),本質其實是字符串的解析,可以用瀏覽器版本的babel實現。

上面的例子是一個純前端的React項目。但有些依賴服務端環境的項目沒法采用上述方式運行,比如:

  • 使用了Docker的項目。
  • 類似Next.js這樣的全棧項目。

這種情況就需要一個真實的服務端環境。

兩者的區別可以用下圖概括:

  • 純前端項目:編譯與執行都能在瀏覽器完成。
  • 全棧項目:項目編譯在服務端進行,瀏覽器負責項目執行。

他們分別對應codesandbox的兩種運行環境:

  • Browser Sandbox:基于瀏覽器的本地運行環境。
  • Cloud Sandbox:基于MicroVM的云端運行環境。

當我們通過模板創建codesandbox項目時,可以通過「右上角是否有Cloud標記」區分兩者:

可以發現:

  • 純前端項目(比如React項目、純JS項目)使用Browser Sandbox。
  • 需要服務端運行環境(比如Docker項目、全棧框架項目)使用Cloud Sandbox。

對于Cloud Sandbox,他底層使用亞馬遜開發的Firecracker快速啟動輕量級的MicroVM,這也是AWS Lambda底層使用的庫。

所以,基于Cloud Sandbox啟動的項目確實會占用服務端資源。具體來說,每個項目會分配:

  • CPU:2個虛擬 CPU(vCPUs)
  • 內存:2GB
  • 存儲:6GB

這塊是codesandbox公司的核心業務。畢竟,免費試用滿意后,可能就會上付費的Pro版(更多資源分配),或者團隊定制版。商業模式與Vercel類似 —— 提供免費基礎服務(自擔部分資源費用),通過增值的云服務收費。

而前端開發日常使用codesandbox創建的項目,大多數并不是基于Cloud Sandbox,而是基于Browser Sandbox啟動的。這些項目并不會給codesandbox帶來太多服務端壓力。

兩種sandbox的區別

有個很直觀的方式區分兩種Sandbox —— 當我們新建一個codesandbox項目,在預覽區域可以看到項目臨時url:

新開頁面,訪問這個url,如果請求的資源包括:

  • 項目運行所需的靜態資源

webpack熱更新相關代碼

那代表這是個Cloud Sandbox項目。Cloud Sandbox在云端啟動后端服務與當前頁面通信,就類似我們本地開發時起的后端服務一樣。

如果請求的資源包括:

  • 項目運行所需的靜態資源。
  • sandbox初始化相關代碼。

那代表這是個Browser Sandbox項目。

「sandbox初始化相關代碼」是一個簡化版的webpack,他會在瀏覽器執行,下載依賴、編譯代碼,打包并執行代碼。

我們平時使用codesandbox時看到的如下初始化畫面就代表Browser Sandbox在瀏覽器執行相關操作。

比如,下圖是在通過CDN安裝依賴(@babel/core):

當依賴安裝完成后,下面是編譯代碼:

Browser Sandbox實現原理

Browser Sandbox相關代碼都是開源的,讓我們按照抽象程度從上往下介紹他。

首先是封裝最完整的庫 —— @codesandbox/sandpack-react。這個React庫提供了很多開箱即用的codesandbox模塊。

比如:

  • SandPackCodeEditor:codesandbox左側的代碼編輯區域,底層采用的是codemirror[2]這個代碼編輯器。
  • SandpackConsole:codesandbox中的控制臺。
  • SandackPreview:codesandbox右側的預覽區域,會渲染一個iframe,iframe的地址對應了Browser Sandbox的執行環境。

各個組件通過postMessage與SandackPreview渲染的iframe交互。

我們會發現,codesandbox的核心實際上包含三部分內容:

  • 各種編輯器相關模塊的實現(比如代碼編輯部分、控制臺、預覽)。
  • Browser Sandpack運行環境,是一個獨立的網頁,在預覽模塊(SandackPreview)中通過iframe渲染。
  • 1與2之間通信的協議(即頁面與iframe之間的通信協議)。

@codesandbox/sandpack-react實現了1,他依賴的@codesandbox/sandpack-client[3]實現了3。

2相關的源代碼在codesandbox-client/packages/app[4]中。將這個包的代碼部署上線后,就能獲得一個Browser Sandpack運行環境。

上面已經簡單介紹了Browser Sandpack的工作原理,再將他(2)與1、3結合起來的工作原理如下:

比如,用戶選擇React作為項目模版:

編輯項目代碼后,項目代碼與preset(類似webpack中的preset選項項,不同模版對應不同preset)會通過通信協議傳遞給Browser Sandpack頁面。

Browser Sandpack頁面通過內置的mini webpack與其他工具(比如babel),編譯并執行代碼。

代碼編譯、執行的信息也會通過通信協議傳遞回各個需要的模塊。比如,控制臺模塊可以根據type為console的信息打印消息。

總結

codesandbox有兩種代碼運行環境:

  • Browser Sandpack:針對「編譯與執行都能在瀏覽器完成」的純前端項目。
  • Cloud Sandpack:針對需要服務端運行環境的項目。

這兩種環境會體現為一個獨立網站,這個網站會作為iframe嵌入在codesandbox編輯器的預覽模塊中。

預覽模塊通過定義好的通信協議與其他模塊(比如代碼編輯模塊、控制臺模塊)通信。

對于Cloud Sandpack,會占用一定服務端資源。對于Browser Sandpack,則不會占用什么服務端資源,因為他大部分邏輯都是在前端執行的。

參考資料

[1]leetcode:https://leetcode.cn/problems/two-sum/。

[2]codemirror:https://codemirror.net/。

[3]@codesandbox/sandpack-client:https://www.npmjs.com/package/@codesandbox/sandpack-client。

[4]codesandbox-client/packages/app:https://github.com/codesandbox/codesandbox-client/tree/master/packages/app。

責任編輯:姜華 來源: 魔術師卡頌
相關推薦

2024-05-16 20:48:23

ReactReact 19React 編譯器

2021-10-27 15:23:10

語言PHP開源

2017-11-10 07:08:24

前端優化策略

2020-07-02 14:12:52

C++語言編程

2024-06-14 09:21:32

2023-06-07 15:29:33

MySQL事務面試

2017-03-27 11:29:33

微軟Windows XP安全

2020-06-12 11:05:38

微信微信 ID修改微信號

2021-08-09 11:32:30

左葉子節點二叉樹

2018-10-07 06:30:40

代碼設計模式面向對象原則

2021-12-01 11:50:50

HashMap面試Java

2015-05-29 17:13:30

IT運維管理BTIM

2020-01-02 10:06:16

Java 8Java 14

2025-06-04 11:06:54

比特幣區塊鏈挖礦

2020-06-03 08:15:50

IO軟件

2014-07-16 16:23:41

浪潮服務器

2019-02-18 15:14:03

系統紅包測試

2024-03-11 10:15:29

2016-06-21 17:44:17

阿里云

2021-03-24 08:44:11

代碼內存消耗語言
點贊
收藏

51CTO技術棧公眾號

51精品国产黑色丝袜高跟鞋 | 欧美一卡二卡在线| 成人自拍网站| www.4hu95.com四虎| 老熟妇一区二区三区| 亚洲成人偷拍| 美女视频黄a大片欧美| 日韩精品亚洲视频| 日韩a级在线观看| 国产乱码精品一区二三区蜜臂 | 日韩精品久久一区| 日韩欧美中文字幕一区二区| 国产精品麻豆| 国产精品久久久久久久久晋中| 91a在线视频| 亚洲一级av无码毛片精品| 日本无删减在线| 91一区在线| 91成人免费电影| 日韩hmxxxx| 性网爆门事件集合av| 婷婷综合在线| 91精品视频网| 亚洲激情免费视频| www.天堂av.com| 欧美在线黄色| 日韩视频免费观看高清完整版在线观看| 手机成人在线| 一区二区视频免费观看| 欧美电影一二区| 精品视频在线播放| 国产老头和老头xxxx×| 美足av综合网| 不卡av免费在线观看| 国内精品国产三级国产在线专| 色欲欲www成人网站| 美足av综合网| 亚洲精品欧美专区| 亚洲综合日韩中文字幕v在线| 岛国毛片在线观看| 999久久精品| 亚洲va韩国va欧美va精品| 国产精品一区二区三区在线观| 国产无遮挡aaa片爽爽| 日韩在线你懂的| 色伊人久久综合中文字幕| 欧美日韩系列| 这里只有精品9| 国精品一区二区| 亚洲欧美在线第一页| 熟女人妇 成熟妇女系列视频| 国产美女性感在线观看懂色av| 美女一区二区视频| 国产精品精品视频一区二区三区| 亚洲综合图片一区| 精品国产一区二区三区四区| 欧美一区二区三区在线电影| 亚洲免费看av| 日韩伦理av| 亚洲久草在线视频| 老司机av福利| 欧美一级淫片aaaaaa| 久久精品女人天堂| zzjj国产精品一区二区| 亚洲色偷偷色噜噜狠狠99网| 欧美色网在线| 一区二区三区高清| 欧洲亚洲一区二区| 亚洲欧美另类综合| 青青草国产精品97视觉盛宴| 欧美日韩电影在线观看| 欧美做受xxxxxⅹ性视频| 国产精品亚洲欧美日韩一区在线| 6080午夜不卡| 性一交一黄一片| 成人知道污网站| 日韩精品一区二区三区第95| 中文字幕第4页| 欧洲大片精品免费永久看nba| 日韩一区二区视频在线观看| 日本在线不卡一区二区| 琪琪久久久久日韩精品| 欧美精品自拍偷拍动漫精品| 啊啊啊一区二区| 欧美xxx黑人xxx水蜜桃| 亚洲高清视频中文字幕| 亚洲国产精品女人| 成人在线播放视频| 91丨九色丨国产丨porny| 亚洲自拍偷拍网址| 免费a级片在线观看| 久久午夜免费电影| 狠狠色综合色区| 精品国产伦一区二区三| 成人免费视频一区二区| 92看片淫黄大片看国产片| 亚洲免费一级片| 久久蜜桃一区二区| 强开小嫩苞一区二区三区网站 | 国产精品久久久久久久久久久久久久 | 日韩欧美黄色动漫| bt天堂新版中文在线地址| 永久免费av在线| 欧美国产精品久久| 神马影院我不卡| 亚洲第一图区| 欧美系列亚洲系列| 97公开免费视频| 成人激情久久| 亚洲天堂久久av| 国产一级在线观看视频| 久久国产日韩欧美精品| 国产精品视频播放| 久久这里只有精品9| 久久精品一区二区国产| 91传媒免费看| 国 产 黄 色 大 片| 中文字幕不卡在线播放| 少妇人妻在线视频| 国产理论在线| 欧美日韩另类字幕中文| www.com毛片| 久久99成人| 精品国精品自拍自在线| 催眠调教后宫乱淫校园| 午夜精品久久久久久久四虎美女版| 精品国内亚洲在观看18黄| 国精品无码一区二区三区| 欧美一区二区三区久久精品| 国产精品高潮粉嫩av| 天堂中文在线资源| 久久久久久97三级| 亚洲午夜高清视频| 五月花成人网| 欧美精品v国产精品v日韩精品| 最新中文字幕视频| 久久中文视频| 国产精品国产三级国产aⅴ浪潮| 天天操天天射天天舔| 亚洲一区二区成人在线观看| 乱妇乱女熟妇熟女网站| 成人做爰视频www| 欧美一区二区三区性视频| 国产又粗又猛又爽又黄的视频四季 | 视频欧美精品| 欧美一卡在线观看| 日本精品在线免费观看| 亚洲乱码久久| 国产精品美女午夜av| 九一国产在线| 亚洲乱码一区二区三区在线观看| 国产精品视频中文字幕| 粉嫩一区二区三区四区公司1| 亚洲免费av网址| 少妇aaaaa| 国产乱色国产精品免费视频| 极品尤物一区二区三区| mm视频在线视频| 欧美在线|欧美| 国产真人做爰视频免费| 欧美亚韩一区| 日韩av理论片| 精品国产区一区二| 一个色妞综合视频在线观看| 人妻互换一二三区激情视频| 第一社区sis001原创亚洲| 久久久久久久久爱| 亚洲无码精品国产| 亚洲欧洲成人自拍| 人妻丰满熟妇av无码区app| 国产精品一区二区av日韩在线| 欧美成人午夜影院| 中文字幕永久在线视频| 亚洲欧洲三级电影| 欧美性生交xxxxx| 午夜在线精品偷拍| 国产精品毛片va一区二区三区| 91丝袜在线| 亚洲色图在线观看| 国产口爆吞精一区二区| 亚洲综合激情小说| 四虎影成人精品a片| 久久成人av少妇免费| 欧美日韩一区在线视频| 日本美女久久| 久久久久久综合网天天| 国自产拍在线网站网址视频| 在线播放国产精品二区一二区四区 | 精品国产伦一区二区三区| 偷拍一区二区三区| 中文字幕avav| 7777久久香蕉成人影院| 国产精品制服诱惑| 福利一区二区三区视频在线观看 | 欧美一级片黄色| 日韩精品成人一区二区三区| 成人xxxxx色| 秋霞成人影院| 欧美日韩一区 二区 三区 久久精品| 亚洲制服丝袜在线播放| 亚洲激精日韩激精欧美精品| 日本精品一区二区三区不卡无字幕| www一区二区三区| 日韩一区二区三区国产| 亚洲国产精品二区| 欧美性大战久久久久久久| 国产精品二区一区二区aⅴ| 中文字幕欧美国产| 西西大胆午夜视频| 国产精品一区二区91| 三级在线视频观看| 成人一级毛片| 久久国产精品一区二区三区四区 | 日本成人免费在线| 久久经典视频| 日韩欧美激情一区| 久草成人在线视频| 高清在线成人网| 日韩精品在线视频免费观看| 日韩欧美精品综合| 亚洲a在线播放| 亚洲爱爱视频| 欧洲成人性视频| sm久久捆绑调教精品一区| 久久国产精品影视| 免费在线午夜视频| 中文字幕日韩专区| 国产aⅴ爽av久久久久成人| 亚洲香肠在线观看| 中文字幕美女视频| 国产一区二区三区观看| 日韩成人手机在线| 久久久久电影| 一区二区三区日韩视频| 日韩夫妻性生活xx| 日韩av电影免费在线| 色婷婷av一区二区三区丝袜美腿| 成人欧美一区二区三区黑人免费| 亚洲精品无播放器在线播放| 国产日韩在线观看av| 午夜伦理在线| 在线视频亚洲欧美| 97视频在线观看网站| 日韩午夜激情视频| 99久久夜色精品国产亚洲| 亚洲mv在线观看| 国产一级做a爱免费视频| 亚洲一区影音先锋| 国产一级生活片| 亚洲成av人片在www色猫咪| 国产五月天婷婷| 精品国产乱码久久久久酒店| www.中文字幕在线观看| 国产精品激情偷乱一区二区∴| 日韩免费成人av| 国产精品美女www爽爽爽| 中文字幕永久免费| 粉嫩av亚洲一区二区图片| 亚洲香蕉中文网| 91网站在线观看视频| 国产高清一区二区三区四区| 国产欧美一区二区精品久导航 | 色悠悠久久88| www黄色在线观看| 精品毛片乱码1区2区3区| 天天摸天天碰天天爽天天弄| 亚洲另类图片色| av午夜在线| 色综合导航网站| 香蕉伊大人中文在线观看| 久久久国产一区二区| 最新国产在线拍揄自揄视频| 亚洲欧美日韩国产精品| melody高清在线观看| www.99久久热国产日韩欧美.com| 影音先锋男人在线资源| 2025国产精品视频| 岛国一区二区| 成人自拍网站| re久久精品视频| 日韩中文字幕亚洲精品欧美| 亚洲精品专区| 第四色婷婷基地| 国产99久久久国产精品免费看 | 中文文精品字幕一区二区| 波多野结衣家庭教师| 黑人巨大精品欧美一区免费视频| 久久国产香蕉视频| 精品国产免费一区二区三区香蕉| 国产精品久久久久久免费播放| 精品福利一二区| 日韩伦理在线观看| 欧美精品videosex极品1| 欧美影视资讯| 成人动漫视频在线观看完整版| 免费成人结看片| 久久精品二区| 先锋资源久久| 日韩一级免费在线观看| 久久午夜精品| 成人午夜视频免费在线观看| 精品一区二区国语对白| 国内自拍第二页| 久久国产精品99精品国产| 怡红院一区二区| 中文字幕一区二区三区不卡| 欧美日韩一二三四区| 欧美视频一二三| 999久久久久久| 国产一区二区动漫| 97视频在线观看网站| 国内精品久久影院| 国产精品美女久久久久| 日韩一区二区三区高清| 一本色道久久综合| 国产精品沙发午睡系列| 国产.精品.日韩.另类.中文.在线.播放 | 免费一级欧美在线大片| 亚洲黄色成人久久久| 色综合久久网| 99蜜桃臀久久久欧美精品网站| 玖玖在线精品| 最近日本中文字幕| 亚洲国产一区视频| 精品国产亚洲AV| 久久精品视频一| 精品久久在线| 国产一区视频在线播放| 精品国产一区一区二区三亚瑟| 成年人午夜免费视频| 美女网站久久| 97香蕉碰碰人妻国产欧美| 一区二区欧美国产| 国产美女自慰在线观看| www.欧美精品| 欧美一级做a| 亚洲高清视频在线观看| 日本怡春院一区二区| 2019男人天堂| 一区二区三区四区精品在线视频| 日韩成人免费在线观看| 日本韩国视频一区二区| 99riav国产| 欧美精品少妇videofree| 国产精品美女久久久久人| 无码人妻aⅴ一区二区三区日本| 国产一区二区h| 欧美日韩三级在线观看| 日韩久久久久久| 国产理论电影在线| 国产精品日韩专区| 成人精品久久| 女同激情久久av久久| 91视频免费观看| 久久青青草原亚洲av无码麻豆| 欧美精品高清视频| caopeng在线| 国产精品福利网站| 99久久这里只有精品| 制服下的诱惑暮生| 亚洲午夜免费视频| 青青视频在线观| 九九九热精品免费视频观看网站| 日本综合精品一区| 国产伦精品一区二区三区四区视频_| 99久久99久久综合| 蜜臀久久精品久久久用户群体| 日韩精品在线一区| 亚洲插插视频| 亚洲午夜精品一区二区| 国产一区二区在线看| 国产精品theporn动漫| 亚洲欧洲激情在线| 婷婷激情成人| 久草免费福利在线| 久久久久久久网| 国产伦精品一区二区三区视频痴汉| 久久久久国产精品一区| 亚洲人成网亚洲欧洲无码| 免费在线黄网站| 久久综合精品国产一区二区三区| 中文字幕一区二区三区人妻四季| 欧美高清在线观看| 欧美精品影院| 六月丁香婷婷激情| 中文字幕一区二区三中文字幕| 亚洲乱码在线观看| 国产精品电影在线观看| 国产精品第十页| www久久久久久久| 亚洲第五色综合网| 狂野欧美性猛交xxxxx视频| 欧美大陆一区二区| 翔田千里一区二区| 国产美女福利视频| 亚洲欧美另类在线观看| 一区中文字幕| 国产精品自拍合集| 中文字幕免费不卡| 天堂v在线观看|