青青草原亚洲精品在线观看,亚洲狠狠婷婷综合日韩高清,ass国产老熟妇pics,久久WWW免费人成看片贰无码,国产精品对白真实在线,青青超最新在线看视频,天天爱天天干天天插,五月婷婷六月婷婷激情网,激情五月激情五月婷婷

每日速看!一起來(lái)聊聊關(guān)于WebIDE的實(shí)現(xiàn)

時(shí)間:2023-01-11 11:40:05來(lái)源:程序員客棧

本期聊聊WebIDE的概念和在各種客戶端的應(yīng)用場(chǎng)景;一起探討在社區(qū)里比較主流的WebIDE實(shí)現(xiàn)的方法模式與對(duì)比,一起來(lái)了解WebContainer思路下的WebIDE。


(相關(guān)資料圖)

(本篇內(nèi)容較多,戳一戳下方點(diǎn)贊收藏,下次不迷路~)

一、什么是WebIDE

IDE基本上技術(shù)同學(xué)每天都會(huì)接觸到,比如VS Code就是一個(gè)比較偏向IDE的產(chǎn)品,因?yàn)閂S Code本身內(nèi)置了很多開(kāi)發(fā)功能,還可以通過(guò)插件來(lái)實(shí)現(xiàn)調(diào)試、代碼補(bǔ)全、代碼提示等各類功能,借助這些功能就可以比較好的做出一個(gè)集成開(kāi)發(fā)環(huán)境(IDE)。

WebIDE相當(dāng)于IDE產(chǎn)品的Web版。把用戶界面這一端放到了瀏覽器里面,通過(guò)導(dǎo)航能夠在瀏覽器里面打開(kāi)的,且界面和本地的客戶端版本幾乎是一樣的。

有一個(gè)WebIDE比較知名的產(chǎn)品是CodeSandBox,同學(xué)寫(xiě)一些demo或者做小的功能需要分享給別人,就會(huì)用類似的網(wǎng)站;和它類似的還有Codepen,也算是一種WebIDE,它也是把主要界面的操作、交互、開(kāi)發(fā)等放在瀏覽器里面去做的,這是在業(yè)界比較出名的兩個(gè)例子。

接下來(lái)從概念上來(lái)看一下構(gòu)成WebIDE的兩個(gè)部分:Web和IDE。

Web更多是從使用它的產(chǎn)品形態(tài)以及技術(shù)實(shí)現(xiàn)上來(lái)界定的。

與它相對(duì)的是像IDEA這種偏客戶端的產(chǎn)品。VS Code雖然也是客戶端產(chǎn)品,但是它本身用了比較多的Web技術(shù)來(lái)構(gòu)建產(chǎn)品的應(yīng)用,里面混合了一些Web技術(shù);CodeSandbox是偏Web端技術(shù)的,是Web端承載的這樣一種產(chǎn)品。那么Web的定義就是在技術(shù)實(shí)現(xiàn)上面去界定的,它也不是兩級(jí)化的,從Desktop到Web我們可以看到它有各種中間狀態(tài),通過(guò)分析哪些組件、哪些部分是如何來(lái)運(yùn)用Web技術(shù),可以讓我們更好地來(lái)分析IDE產(chǎn)品。

IDE是集成開(kāi)發(fā)環(huán)境的縮寫(xiě)。所謂集成開(kāi)發(fā)環(huán)境,包含了平時(shí)會(huì)用的調(diào)試、代碼的高亮、自動(dòng)代碼補(bǔ)全、代碼檢查等;再加上如果做一些面向?qū)ο蟮恼Z(yǔ)言開(kāi)發(fā),還會(huì)看到“類”的瀏覽器,以及“類”的繼承關(guān)系、相互之間的引用關(guān)系;還有構(gòu)建工具等一些東西集成起來(lái)形成一個(gè)集成開(kāi)發(fā)環(huán)境。

與它更相對(duì)的是一個(gè)偏極端的像Editor這種的編輯器,比如我們可以直接用一個(gè)文本編輯器打開(kāi)一個(gè)代碼模塊,這就是一個(gè)最簡(jiǎn)單的Editor。再比如js這種腳本語(yǔ)言,理論上可以用編輯器直接寫(xiě)代碼,寫(xiě)完之后儲(chǔ)存成js放到網(wǎng)站上運(yùn)行就可以了。

更復(fù)雜的IDE產(chǎn)品比如Android Studio,它不僅包含寫(xiě)代碼和各種預(yù)覽功能,還可能會(huì)包含一些監(jiān)測(cè)應(yīng)用的性能等功能。

所以在IDE的維度上,需要考慮產(chǎn)品功能的完備程度,以及在開(kāi)發(fā)過(guò)程中涉及到的各種功能是否都集成在一個(gè)載體里。集成的越來(lái)越豐富,越能形成一個(gè)集成開(kāi)發(fā)環(huán)境,IDE也就更豐富。

二、WebIDE的一些應(yīng)用場(chǎng)景

以上闡述了 WebIDE的相關(guān)概念。從下圖(圖2-1)也可以看到其實(shí)是有一個(gè)過(guò)渡過(guò)程,每一種產(chǎn)品可能會(huì)位于坐標(biāo)軸的某位置。因?yàn)椴煌a(chǎn)品使用的技術(shù)戰(zhàn)略不同、面向?qū)ο蟛煌?,所以處于不同位置。它們并不是一個(gè)兩級(jí)對(duì)立的狀態(tài)。

接下來(lái)再聊聊WebIDE的應(yīng)用場(chǎng)景,之前也會(huì)有很多同學(xué)認(rèn)為有了客戶端的程序來(lái)開(kāi)發(fā)代碼,在本地能開(kāi)發(fā)的東西也很多,那是不是就不需要其他的東西了?這里帶大家看一下業(yè)界有哪些產(chǎn)品以及這些產(chǎn)品是如何去定位的,在它們的場(chǎng)景下做了哪些偏WebIDE方向的事情等。上圖坐標(biāo)軸(圖2-1)代表的是研發(fā)場(chǎng)景的量級(jí)。

輕量級(jí)指的是開(kāi)發(fā)頻次較少,每次開(kāi)發(fā)時(shí)間較短,開(kāi)發(fā)代碼量比較簡(jiǎn)單。比如一個(gè)月開(kāi)發(fā)一兩次左右,每次開(kāi)發(fā)1-1.5個(gè)小時(shí),源碼也不會(huì)出現(xiàn)這種幾十萬(wàn)行的源碼。重量級(jí)的場(chǎng)景是指每天可能都需要迭代開(kāi)發(fā)一些項(xiàng)目,且源碼量非常巨大,代碼也極其復(fù)雜,整個(gè)開(kāi)發(fā)環(huán)境很龐雜。

所以在整個(gè)坐標(biāo)軸上的不同位置都會(huì)有不同的場(chǎng)景和產(chǎn)品。

(一)輕量級(jí)的應(yīng)用場(chǎng)景

最輕量級(jí)的場(chǎng)景第一個(gè)便是Playground。比如我寫(xiě)了一個(gè)庫(kù),或者像Golang之類的各種語(yǔ)言,在推廣給新手運(yùn)用時(shí)會(huì)有一個(gè)Playground,它會(huì)有一個(gè)地方可以直接寫(xiě)代碼片段,然后在旁邊輸出結(jié)果。這實(shí)際上也是一個(gè)非常輕量級(jí)的WebIDE的應(yīng)用場(chǎng)景。

坐標(biāo)軸下面列了一些對(duì)應(yīng)產(chǎn)品,像runkit在NPM會(huì)用到。比如在NPM官網(wǎng)上,每個(gè)包主頁(yè)的右下角應(yīng)該可以看到一個(gè)runkit的按鈕,點(diǎn)擊可以立刻打開(kāi)一個(gè)Playground來(lái)測(cè)試/試用這個(gè)包。

第二個(gè)則是Demo的編寫(xiě)。比如最近新出的一些前端開(kāi)源庫(kù),在它的網(wǎng)站上就會(huì)提供一些輕量級(jí)嵌入的WebIDE,可以直接寫(xiě)代碼,然后用庫(kù)看看效果如何。與之類似的還有很多組件庫(kù),傳統(tǒng)的組件庫(kù)肯定是先在頁(yè)面上直接把組件代碼寫(xiě)好,然后基于這段代碼渲染出可交互的組件,讓用戶能看到。但缺點(diǎn)就是用戶無(wú)法自主修改調(diào)用代碼,如果想試另一個(gè)API或者參數(shù)值,就無(wú)法調(diào)整。所以更好的方式是能夠直接編輯代碼,以及編輯完之后能直接渲染出如何使用這個(gè)組件,那么用戶很快能知道組件是否符合要求,以及組件的展示情況是否能夠滿足要求。

比較常用的產(chǎn)品有CodeSandbox。

類似輕量級(jí)的還有一些做線上代碼教學(xué)的產(chǎn)品。比如學(xué)一些現(xiàn)成的編程課程,或者是做一些線上的面試時(shí),會(huì)需要寫(xiě)代碼、去運(yùn)行等,這些情況其實(shí)都是比較輕量的。

常用的產(chǎn)品有scrimba,這是一個(gè)比較集成性的產(chǎn)品,它有一些可以交互式的視頻,在看視頻過(guò)程中可以隨時(shí)隨地點(diǎn)到視頻里面去編輯代碼,編輯完代碼運(yùn)行后,還可以繼續(xù)回來(lái)補(bǔ)看。

還有一個(gè)replit,能夠?qū)懜鞣N語(yǔ)言的代碼,然后在線上直接執(zhí)行,還可以做一些教學(xué)等。

(二)偏中型的應(yīng)用場(chǎng)景

偏中型的開(kāi)發(fā)場(chǎng)景一個(gè)是靜態(tài)文檔開(kāi)發(fā)站。我們現(xiàn)在常用的是用沒(méi)有plus的、稍輕些的靜態(tài)文檔工具來(lái)開(kāi)發(fā)。

實(shí)際寫(xiě)代碼時(shí)(不是所謂的頁(yè)面代碼),比如markdown類的,再結(jié)合開(kāi)發(fā)一些小的自定義組件,這樣的一個(gè)靜態(tài)站點(diǎn)就出來(lái)了。這個(gè)開(kāi)發(fā)頻率不會(huì)特別高,也不用寫(xiě)太復(fù)雜的代碼,包括幾個(gè)組件或有Markdown的文案就可以。

對(duì)應(yīng)的產(chǎn)品有Nextjs Live和Nextjs Web,Nextjs Web也是應(yīng)用了WebIDE的形態(tài),但是和我們一般看到的編輯器稍有不同,感興趣的同學(xué)可以去深入了解。

還有一個(gè)也稍微輕量級(jí)的場(chǎng)景—開(kāi)發(fā)組件。開(kāi)發(fā)組件相比于實(shí)際項(xiàng)目,代碼量肯定會(huì)更少,又因?yàn)樗拥膬?nèi)聚,所以場(chǎng)景也更加的限定,工具鏈的復(fù)雜度、環(huán)境的復(fù)雜度等也就會(huì)更加簡(jiǎn)單。

可能只需要集中幾十個(gè)源碼文件,且一個(gè)組件的總代碼量一般也不超過(guò)一兩千行。

還有一些low-code的場(chǎng)景,這也可以算是一個(gè)輕量的WebIDE,只是和我們預(yù)想的通用的WebIDE不太一樣,因?yàn)閘ow-code的編輯后面還會(huì)對(duì)接自己的運(yùn)行時(shí)等,集成開(kāi)發(fā)環(huán)境會(huì)更加的定制性,并不是那種通用代碼開(kāi)發(fā)的。

還有像gitpod也是一個(gè)比較輕量級(jí)的產(chǎn)品。

(三)偏重型的應(yīng)用場(chǎng)景

再偏重一些的場(chǎng)景,例如開(kāi)發(fā)FaaS的項(xiàng)目,有很多云廠商會(huì)提供Web端編輯FaaS函數(shù)的方式,同時(shí)也支持在本地用CLI方式或IDE插件的方式去做。

像autocode,它是一個(gè)完全基于云端環(huán)境、瀏覽環(huán)境的產(chǎn)品,用戶可以在Web的環(huán)境里去開(kāi)發(fā)部署,并且它圍繞WebIDE把很多的云服務(wù)在這做了整合。

最復(fù)雜的還是我們平常接觸最多的比如在VS Code里面去開(kāi)發(fā)一個(gè)復(fù)雜的完整項(xiàng)目。

以上是關(guān)于應(yīng)用場(chǎng)景的一些介紹,從上圖(圖2-1)坐標(biāo)軸也可以看出,不同的位置都可能有不同的WebIDE實(shí)現(xiàn)。因?yàn)閷?duì)功能要求的側(cè)重點(diǎn)不同、面向的產(chǎn)品及需求場(chǎng)景也不同,所以WebIDE的產(chǎn)品覆蓋度是比較廣的。

三、WebIDE的主要實(shí)現(xiàn)思路與對(duì)比

接下來(lái)看一下現(xiàn)在開(kāi)源社區(qū)里面主要的實(shí)現(xiàn)思路都是怎樣的,以及大家都是怎么做WebIDE。

首先來(lái)看一下上圖(圖3-1),看看界面核心部分也就是WebIDE需要具備哪些能力。比如把上面的導(dǎo)航欄蓋掉,會(huì)發(fā)現(xiàn)下面的部分和本地IDE(Desktop IDE)很類似,所以來(lái)看一下這樣一個(gè)IDE需要具備哪些必要的功能。

(一)IDE需要具備的必要功能(以前端為例)首先第一個(gè)需要有文件系統(tǒng)。第二部分需要在編輯器非常核心的中部區(qū)域能夠編寫(xiě)代碼。最基礎(chǔ)要有個(gè)編輯器。第三個(gè)部分是需要能支持依賴包的安裝。因?yàn)槲覀冊(cè)趯?xiě)前端項(xiàng)目時(shí),應(yīng)該都不會(huì)編寫(xiě)這種在編譯時(shí)、運(yùn)行時(shí)完全不需要第三方依賴的項(xiàng)目(除非場(chǎng)景極其定制收斂)。像上述(圖2-1)的坐標(biāo)軸右側(cè)偏重型的產(chǎn)品和場(chǎng)景,肯定會(huì)需要依賴安裝。第四點(diǎn)在寫(xiě)代碼時(shí)需要做代碼編譯才能運(yùn)行?,F(xiàn)在寫(xiě)的代碼都已經(jīng)不是原始的js和css,像是vue模板、jsx;也很少有人直接寫(xiě)css,會(huì)選一個(gè)Less或者Sass等;還要做各種編譯、需要兼容各個(gè)瀏覽器及各種版本。所以現(xiàn)在寫(xiě)的代碼一定要做編譯才能運(yùn)行,因?yàn)閹缀醅F(xiàn)在沒(méi)有項(xiàng)目是直接寫(xiě)純粹的最原始代碼。需要頁(yè)面預(yù)覽。左側(cè)中間這里(圖3-1)有一個(gè)瀏覽器,可以用來(lái)預(yù)覽現(xiàn)在寫(xiě)到的頁(yè)面,前端希望能夠?qū)懲旰罅⒖炭吹巾?yè)面上的東西和效果。因?yàn)樵诰帉?xiě)復(fù)雜樣式時(shí),可能無(wú)法準(zhǔn)確完全的一步到位,會(huì)需要通過(guò)不斷調(diào)校,所以這也是很關(guān)鍵的一個(gè)部分。與此相關(guān)的是熱更新。我們現(xiàn)在可能會(huì)有很多種狀態(tài)庫(kù),即使不使用狀態(tài)庫(kù),組件也會(huì)有自己內(nèi)部的狀態(tài),如果頁(yè)面全部reload,就會(huì)造成直接丟失。所以前端標(biāo)配就是能夠做模塊的熱更新,能夠局部刷新某個(gè)模塊,這也是一個(gè)比較標(biāo)配要求。還有一個(gè)是實(shí)時(shí)性。通過(guò)使用Web技術(shù)來(lái)編輯保存,保存完之后刷新頁(yè)面需要及時(shí),頁(yè)面刷新的實(shí)時(shí)性體驗(yàn)是否流暢這點(diǎn)也是比較重要的。在本地編譯器上編譯過(guò)程可能會(huì)稍微慢些,但客戶端上的操作還是比較流暢的,體驗(yàn)還是不錯(cuò)的。(二)業(yè)界內(nèi)WebIDE的實(shí)現(xiàn)思路

下面來(lái)看一下在上述提到的基礎(chǔ)功能上,在業(yè)界的實(shí)現(xiàn)思路上是如何做的。

1、VS Code和Theia

第一個(gè)實(shí)現(xiàn)模式下比較著名的兩個(gè)產(chǎn)品,一個(gè)是左邊(圖3-2)VS Code,另一個(gè)是近幾年稍新一點(diǎn)的Theia產(chǎn)品。這兩個(gè)產(chǎn)品在大體的技術(shù)路線上是類似的,且這兩個(gè)產(chǎn)品也都是開(kāi)源的,完全能看到它的源碼。

這里舉例說(shuō)一下Theia這個(gè)產(chǎn)品,它的設(shè)計(jì)和代碼目錄結(jié)構(gòu)是比較清晰的,VS Code相對(duì)會(huì)更加復(fù)雜,拆分設(shè)計(jì)沒(méi)有那么清晰。因?yàn)樽铋_(kāi)始這兩個(gè)產(chǎn)品的定位不太一樣,像Theia可以看到里面都有很多的Package,每個(gè)Package對(duì)應(yīng)一個(gè)具體的功能模塊,且功能模塊里面目錄結(jié)構(gòu)也是很清晰的,它會(huì)有一個(gè)叫Browser或Node的目錄,模塊的層級(jí)劃分是比較清晰的。

整體實(shí)現(xiàn)上,前端部分主要負(fù)責(zé)UI,每一個(gè)模塊會(huì)對(duì)應(yīng)一個(gè)前端的實(shí)現(xiàn)。比如ternimal里有各種彩色加速應(yīng)該如何展示出來(lái)。同時(shí)還會(huì)負(fù)責(zé)一些交互,比如在ternimal輸入的東西如何拿到。中間會(huì)通過(guò)WebSocket的方式做一個(gè)協(xié)議。像Theia的話就用JSON做了一個(gè)自定義格式的協(xié)議,來(lái)和服務(wù)端通信,讓后端對(duì)應(yīng)的模塊也就是ternimal的Node.js模塊收到對(duì)應(yīng)的執(zhí)行方法。ternimal的后端模塊就會(huì)把輸入的內(nèi)容放到對(duì)應(yīng)進(jìn)行的標(biāo)準(zhǔn)輸入里,把標(biāo)準(zhǔn)輸出取出,再返回給前端來(lái)展示。所以它的層級(jí)劃分是每個(gè)功能模塊,大致分成前端(Browser)和服務(wù)端(Node),中間有一個(gè)標(biāo)準(zhǔn)的協(xié)議來(lái)通信。

所以它的具體實(shí)踐上明顯分為兩層,第一層是上圖(圖3-5)紅框里面的Browser瀏覽器,它主要負(fù)責(zé)Web的UI;第二層的是綠框的Server層,Server會(huì)依托于后端環(huán)境和操作系統(tǒng)環(huán)境。整個(gè)Server為了做資源隔離就把它放在一個(gè)容器里面,相當(dāng)于每次在前端對(duì)應(yīng)打開(kāi)一個(gè)WebIDE,背后就有一個(gè)Container,里面的Server就會(huì)做相關(guān)的事情,所以文件系統(tǒng)實(shí)際在前端主要是展示,最終還是存儲(chǔ)在一個(gè)Container里面。

再來(lái)看代碼編輯器,這是一個(gè)純前端的編輯器,一般不會(huì)直接和后端交互,現(xiàn)在常用的選擇就是三個(gè):Ace、Monaco和CodeMirror6。

Ace是一個(gè)非常老牌的編輯器。已經(jīng)出來(lái)有十幾年了,所以功能不一定特別完備,它的UI樣式也稍微老一些;

Monaco屬于中生代,是VS Code本身用的編輯器,然后后來(lái)把它慢慢獨(dú)立出來(lái)做。這個(gè)東西也是現(xiàn)在做WebIDE,很多人會(huì)去選擇的一個(gè)開(kāi)源的編輯器;

Code Mirror是更新一點(diǎn)的。Code Mirror本身不是一個(gè)特別新的編輯器,也做了也很長(zhǎng)時(shí)間了。但是Code Mirror6它是一個(gè)完全重構(gòu)的新版本,在5的基礎(chǔ)上就幾乎重寫(xiě)了一遍,所以這么一個(gè)新版本算是比較新的編輯器,支持很多新特性。

關(guān)于編輯器這里有一些簡(jiǎn)單的對(duì)比(https://blog.replit.com/code-editors),因?yàn)榫庉嬈鲗儆诒容^高內(nèi)聚低耦合的產(chǎn)品,所以在做WebIDE時(shí),為了快速啟動(dòng),選一個(gè)開(kāi)源的產(chǎn)品會(huì)有比較大幫助的,不會(huì)拉垮整個(gè)WebIDE,且接口也比較簡(jiǎn)潔的。

再下一步是依賴安裝,它有個(gè)服務(wù)端,通過(guò)一個(gè)通信指令在服務(wù)端把安裝包裝上。代碼編譯運(yùn)行也相似,也是在Server端運(yùn)行,然后Server通過(guò)網(wǎng)絡(luò)協(xié)議和Web里的某一頁(yè)面進(jìn)行通信。由于有實(shí)際的服務(wù)端,所以在這個(gè)架構(gòu)下的頁(yè)面預(yù)覽、熱更新等和本地開(kāi)發(fā)基本是一致的,服務(wù)、編譯等都是在Container里面的。

在實(shí)時(shí)性上主要取決于兩點(diǎn):一是通信是否會(huì)有延遲,是否會(huì)有帶寬問(wèn)題,以及服務(wù)穩(wěn)定性如何;第二點(diǎn)是由于涉及前端編譯運(yùn)行,所以分配的資源是否足夠也會(huì)有影響。

2、CodeSandbox

下面再說(shuō)第二個(gè)實(shí)現(xiàn)思路是CodeSandbox。這個(gè)思路和前面的技術(shù)路線和想法差異比較大,所以需要單獨(dú)介紹一下。

CodeSandbox本身是一個(gè)開(kāi)源的產(chǎn)品,它把客戶端的IDE部分開(kāi)源出來(lái)了,所以可以直接看到它的源碼,了解它的各種實(shí)現(xiàn)。在它早期發(fā)表的文章上也介紹了一些他們?cè)趯?shí)現(xiàn)WebIDE上面的關(guān)鍵思考點(diǎn)等。雖然技術(shù)實(shí)現(xiàn)細(xì)節(jié)有了非常多的迭代,但是它整體的技術(shù)思路大致是這個(gè)方向。

上圖(圖3-7)Code Sandbox的圖,可以看到右邊這個(gè)圖上看出,它沒(méi)有像VS Code或Theia分Broswer或Server,因?yàn)檫@些部分全都在 Broswer里,所以它的文件系統(tǒng)是一個(gè)基于瀏覽器內(nèi)存的文件系統(tǒng)。編輯器這塊在技術(shù)路線上沒(méi)有太大的差異,都是直接用開(kāi)源的產(chǎn)品。

在依賴安裝這部分和前兩者也有很大不同,因?yàn)樗鼪](méi)有一個(gè)服務(wù)端環(huán)境,意味著它不能用“正常”的方式安裝,同時(shí)因?yàn)樗且粋€(gè)基于瀏覽器內(nèi)存的文件系統(tǒng),所以即使在某個(gè)server安裝上這些東西,也需要它搬到瀏覽器里面來(lái),然后把它放到這個(gè)文件系統(tǒng)上去才行。所以在這里有一個(gè)服務(wù)(圖3-7最右側(cè)),專門來(lái)處理NPM包,把NPM包代碼處理完后直接給前端瀏覽器返回,再通過(guò)接口的方式返回NPM包里面文件內(nèi)容以及一些其他信息等。

通過(guò)這個(gè)轉(zhuǎn)換服務(wù),在左側(cè)這里(上圖3-7)去搜一個(gè)React時(shí)可以把React的版本列出來(lái),在下拉框里選中目標(biāo)后就會(huì)通過(guò)這個(gè)服務(wù),把所有依賴的NPM包里面的代碼內(nèi)容返回到前端,然后前端把它裝載到文件系統(tǒng)里面,這樣就可以去做依賴安裝。

下一塊代碼的編譯運(yùn)行主要關(guān)注綠色這部分(圖3-8),這也是重度開(kāi)發(fā)的部分。代碼編譯會(huì)基于開(kāi)源工具(babel、vue compiler等)來(lái)手寫(xiě)一個(gè)可在瀏覽器內(nèi)運(yùn)行的打包器。運(yùn)行則會(huì)依托于iframe,把代碼放到iframe里面讓它去運(yùn)行和渲染頁(yè)面。

關(guān)于頁(yè)面預(yù)覽,iframe并不是真正的去某一個(gè)服務(wù)端把資源加載進(jìn)來(lái),它通過(guò)前端的方式,可以是 Service Worker 直接攔截返回,或者直接通過(guò)前端的通信機(jī)制發(fā)送代碼來(lái)加載。熱更新這部分的話,肯定需要自己做一些熱更新的這種操作,因?yàn)樗前压ぞ哝溸@塊自己接管的。

實(shí)時(shí)性上一般沒(méi)有太大差別,上面可以看到它是一個(gè)純?yōu)g覽器內(nèi)部的操作,瀏覽器主線程會(huì)頻繁和web worker進(jìn)行各種通信,所以相比較要去和服務(wù)端通信,它的時(shí)間可能會(huì)要稍微短一點(diǎn)。

這節(jié)的最后給這兩種模式做個(gè)簡(jiǎn)單對(duì)比(圖3-9):

Theia的模式由于需要有服務(wù)端的實(shí)現(xiàn),所以在資源開(kāi)銷和運(yùn)維成本上有劣勢(shì);而CodeSandbox由于需要自研工具鏈,所以在前端這個(gè)新框架迭代頻繁的領(lǐng)域有較大開(kāi)發(fā)成本,同時(shí)由于缺乏服務(wù)端能力,能滿足的場(chǎng)景也有限,主要還是純前端的代碼編譯。

四、WebContainer思路下的WebIDE

最后來(lái)說(shuō)一下 WebContainer的思路下是如何做IDE的。WebContainer是stackblitz公司提出的一種技術(shù)模式,算是第三種模式。目前社區(qū)沒(méi)有開(kāi)源實(shí)現(xiàn),因?yàn)檫@個(gè)是比較核心的技術(shù),所以做這個(gè)的stackblitz公司也沒(méi)有在公開(kāi)的資料里說(shuō)過(guò)具體的技術(shù)細(xì)節(jié),只有一些概念。

可以體驗(yàn)下(https://stackblitz.com/),實(shí)現(xiàn)原理大致是利用了wasm的特性,將node相關(guān)代碼進(jìn)行轉(zhuǎn)換為在瀏覽器work可以執(zhí)行的wasm代碼,這樣在瀏覽器就支持了node的運(yùn)行。

WebContainer的核心目標(biāo)是,既想跑服務(wù)端代碼(跟VS Code一樣),但又不想有服務(wù)端容器。

它在這里提了一個(gè)概念,把服務(wù)端代碼運(yùn)行在一個(gè)所謂的WebContainer里,這個(gè)WebContainer是完全運(yùn)行在瀏覽器里的,這樣就做到了類似這樣一種架構(gòu)。

這種架構(gòu)和Theia對(duì)比層級(jí)結(jié)構(gòu)很像。Web UI這邊可以說(shuō)大致類似,層級(jí)圖的下面這部分,在Theia里面是完整跑在服務(wù)端的Node.js的環(huán)境里的,而在WebContainer 這樣的實(shí)現(xiàn)下面,就要跑在瀏覽器里面(圖4-2)。由于前端相關(guān)的服務(wù)端應(yīng)用基本都依賴Node.js,所以這里非常重要的一個(gè)問(wèn)題就是怎樣讓Node.js程序能夠跑在瀏覽器里面?如果把Node.js跑到瀏覽器的問(wèn)題解決,就解決了很大一部分的技術(shù)問(wèn)題。各種Node.js代碼、應(yīng)用、各種NPM包、構(gòu)建工具就可以直接跑在瀏覽器里面,之前需要一個(gè)Server環(huán)境來(lái)做,現(xiàn)在就不需要了。所以在這樣一個(gè)思路下,就可以把server搬到瀏覽器里面來(lái)做。

它和CodeSandbox不一樣,CodeSandbox在綠色部分(圖4-2)也就是在Web woker的技術(shù)上做了各類技術(shù)棧的構(gòu)建工具鏈,NPM也需要去單獨(dú)做處理。

這個(gè)對(duì)比可以看到二者實(shí)現(xiàn)的事情和層級(jí)上是不同的。理論上基于WebContainer的方式NPM也不需要再單獨(dú)處理。如果實(shí)現(xiàn)了完整的Node.js運(yùn)行環(huán)境,可以把npm install拋到worker里面去,但是可能會(huì)有一些性能和效率的問(wèn)題。所以做 WebIDE需要定制一個(gè)在瀏覽器里面能夠獨(dú)立運(yùn)行NPM CLI工具。

這里要涉及三點(diǎn):第一個(gè)是依賴的解析;第二個(gè)是怎么去把包拉下來(lái);最后是拉到之后你需要去解包解壓。

基于WebContainer模式下的WebIDE能夠較好規(guī)避前兩個(gè)模式的缺點(diǎn)(圖4-4):

由于所謂的server也運(yùn)行在瀏覽器中,所以資源消耗和運(yùn)維成本就降為0,安全隔離也不需要docker container這種技術(shù),瀏覽器自帶了沙箱特性。同時(shí)由于模擬了Node.js運(yùn)行環(huán)境和基礎(chǔ)的shell能力,所以在工具鏈上可以大量服用前端已有工具包,無(wú)需定制開(kāi)發(fā)工具鏈。

最后總結(jié)一下,基于WebContainer的WebIDE在整個(gè)應(yīng)用場(chǎng)景從輕到重上來(lái)說(shuō),屬于是一個(gè)它可以處理從輕到重的產(chǎn)品。在輕量級(jí)場(chǎng)景下,我們可以用它做playgroud,做demo編寫(xiě),都是可以的。然后再偏中量級(jí)上面的話,可以在它上面運(yùn)行vuepress或者vitepress(Vue團(tuán)隊(duì)做的工具)來(lái)進(jìn)行靜態(tài)的站點(diǎn)搭建,你可以在這上面直接去開(kāi)發(fā)你的靜態(tài)站然后聯(lián)通部署服務(wù)。

現(xiàn)在我們是做了一個(gè)產(chǎn)品(暫不對(duì)外開(kāi)放),可以進(jìn)行一些在線Demo的編寫(xiě)、分享,除了運(yùn)行純前端組件、包之外,也可以運(yùn)行一些命令行工具、或者Node.js包。隨著開(kāi)發(fā)體驗(yàn)與周邊工具(例如git)的補(bǔ)齊,它這種技術(shù)模式在這個(gè)場(chǎng)景軸上,所能覆蓋范圍會(huì)更長(zhǎng)一些。然后本身它內(nèi)部的各個(gè)子模塊也可以獨(dú)立輸出出來(lái),像最近CodeSandbox它其實(shí)也有意把自己的Sandbox給摳出來(lái),獨(dú)立出來(lái)做一個(gè)輕量級(jí)的輸出,就不整個(gè)輸出WebIDE這塊東西。

(下方 為文章中提到的技術(shù)產(chǎn)品和文檔鏈接,感興趣的同學(xué)可點(diǎn)擊查閱~)

https://blog.replit.com/code-editors

https://github.com/codesandbox

https://codesandbox.io/post/creating-a-parallel-offline-extensible-browser-based-bundler-for-codesandbox

https://codesandbox.io/post/how-we-make-npm-packages-work-in-the-browser

https://codesandbox.io/post/sandpack-announcement

https://codesandbox.io/docs/environment#container-environment

https://codesandbox.io/post/announcing-codesandbox-containers

https://stackblitz.com/

關(guān)鍵詞: 開(kāi)發(fā)環(huán)境 文件系統(tǒng) 來(lái)看一下

    • 上一篇:
    • 下一篇:
    推薦閱讀
    精華推薦
    一周熱門
    熱門圖片
    99久久精品久久久久久清纯| 伦人伦xxxx国语对白| av中文字幕在线播放| 亚洲妇熟xxxx妇色黄网站| av乱亚洲一区二区三区| 伊人精品在线大香蕉| 漂亮的人妻不敢呻吟被中出| 天天色天天干天天操| 成年人中文字幕视频网| 人妻中文字幕不卡av观看| 久久视频十八岁亚洲精品久久视频 | 美女被弄高潮喷水91视频9| 久久精品亚洲国产一区二区| 亚洲国产精品成人久久动漫| 欧美在线一区日韩国产| 亚洲一区二区综合网| 亚洲三级伦理在线播放| 偷窥老熟女久久久av| 国产美女高清免费av| 动漫av纯肉免费在线观看| 欧美福利专区一区二区三区| 五月桃花网婷婷伊人久久| 久久中文字幕av观看| 四川熟女a一区二区三区| 黄色中文字幕在线观看| 69精品人妻一区二区| 亚洲欧美国产其他二区| 大肉大捧一进一出免费视频网址| 销魂少妇一区二区视频| 老鸭窝最新网址在线| 少妇人妻不满足中文字幕| 成全视频免费观看在线下载| 爱人体-看人体人体摄影| 男生的天堂亚洲男人| 免费观看视频一区二区三区| 成人麻豆免费视频精品区| 亚洲免费国产在线日韩| 青草视频在在线成人av| 精品成人午夜免费看| 一区二区三区四区免费福利视频 | 日韩精选高清大片在线观看| 欧美亚洲天堂不卡视频| 天天日天天添天天爽| 亚洲国产精彩中文乱码av| 香蕉久久av一区二区三区四区| 久久三级片一区二区毛片| 欧美在线免费污污视频| 中文在线字幕第一页| 亚洲国产精品美女久久久av| 男人的天堂av最新| 熟女免费在线观看视频| 在线观看免费黄片欧美| 亚洲天堂一二三四在线播放| 日韩欧美亚洲一区第一| 日本少妇精品bbwbbw| 青青草精品视频在线免费观看| 丝袜美腿视频诱惑亚洲| 操人妻免费视频观看| av中文字幕高清在线| 港台经典一级成人免费av| 精品成人午夜免费看| 操日本裸体美女骚逼| 精品国产污污免费网站aⅴ17| 国产在线免播放器不卡| 特黄特色大片观看免费| 精品无人区高清免费看| 亚洲图片,自拍偷拍| 亚洲人体艺术二区三区视频 | 欧美精品乱码久久久久久| lisaann在线观看| 亚洲av午夜精品一老妈| 欧美黑人性色黄在线视频| 亚洲av永久久久久久久蜜桃 | 天天睡天天摸天天添天天日天天射| 先锋资源在线观看国产精品| 欧美亚洲国产成人免费在线| 在线观看免费a亚洲| 久久久久久久国产精品人妻| 人妻少妇精品视频专区vr| 十八禁视频一区二区三区四区| 最新亚洲成人黄色片| 在线观看国产精品123| 美女诱惑福利在线视频| 东京热av在线播放| 亚洲视频 中文字幕 人妻| 亚洲中文字幕有码电影| 少妇人妻中文字幕专区视频| 天天大香蕉一区二区三区| 骚白虎插入在线观看| 亚洲图片,自拍偷拍| 天天色天天爱天天舔| 精品国产日韩一区三区| 亚洲 网友 在线 观看| 播放灌醉水嫩大学生国内精品| 免费高清视频在线观看不卡男男| av中文字幕在线播放| 超碰超碰超碰超碰超碰情侣| 在线观看免费黄片欧美| 青青操国产精品视频在线| 日本少妇精品bbwbbw| 狠狠躁日日躁夜夜躁2| 精品久久久久aⅴ一区二区| av男人天堂精品久久| 国产三级伦理在线观看| 亚洲一区二区三区免费| 中文字幕日本一本二本三区| 97久久精品熟女超碰| 日韩毛片综合在线观看网站| 亚洲成人一区二区三区av| 在线观看国产精品123| 日本成人午夜电影视频| 隔壁老王国产在线观看| 女人扒开逼逼让男人操| 天天日天天色天天摸| av手机在线免费播放| 亚洲国产精彩中文乱码av| 亚洲图片一区偷拍自拍| 操女人下阴黄色一级视频| 男女精品久久久久久久久久| 99精品视频在线观看专区| 91人妻人人做人人爽九色全集 | 亚洲精久久久久久久久久久久久 | 五月婷婷综合久久久| 国产美女视频在线播放| 99精品视频在线观看专区| 手机视频在线观看99精品视频| 国产美女主播丝袜高潮白浆| 日本av毛片在线播放| 91精品人妻中文字幕| 美女诱惑福利在线视频| 欧美 亚洲 激情 自拍| 亚洲日产av一区二区在线| 顶级销魂极品少妇在线观看| 2020精品国产自在现线官网| 99麻豆精品国产自产在线观看 | 精品一区二区三区四区激情| 无套内谢少妇高潮毛片免费看| 青青操在线视频精品| 国产盗摄女子私密保健视频| 五月桃花网婷婷伊人久久| 亚洲精品少妇蜜桃久久久| 成人熟女一区二区三区| fc2精品成人免费观看| 精品一区二区三区大全| www久久久久久久99| 中文字幕精品av在线观看| 亚洲另类欧美在线观看| 亚洲精品一区二区三区新线路| 久久视频十八岁亚洲精品久久视频 | 一区二区三区国产精选在线播放| 日韩性爱视频无码三级片| 久久久久久久久毛片精品奶炮| 亚洲欧洲自拍他拍av| 国产亚洲精品天堂在线观看| 99久久99久久免费精品蜜臀| 天天日天天透天天操| 亚洲图片一区偷拍自拍| 欧美1234不卡视频| 亚洲综合精品推荐69堂| 97久久精品熟女超碰| 亚洲小说区图片另类春色| 久草免费资源视频在线观看| 91av国产在线观看| 熟女吧国产精品一区二区三区| 亚洲视频专区在线播放| 黄色污污污网站免费观看| 黄色免费2b网页18岁有声音| 正宗欧美在线观看一区二区| 国产精品欧美日韩久久久免费观看| 99久久99久久免费精品蜜臀| 在线看片1024你懂得| 成人性生交大免费三人| 销魂少妇一区二区视频| 中国福利在线黄色片| 99久久免费国产特黄| 欧美丝袜熟女日韩亚洲| 欧美亚洲综合偷拍另类| 欧美激情在线观看新地址| 日韩加勒比东京热二区| 91jk麻豆美女丝袜诱惑| 二根鸡巴日一个穴视频| 成人18禁视频网站在线看| 四川操bb操bb操b| 91精品人人妻人人澡人人爽人人| 亚洲自拍偷拍清纯唯美| 中文在线字幕第一页| 91久久精品视频91| 亚洲情品中文字幕人妻久久久边| 五月激情丁香久久亚洲| 啊啊啊操死我轮操视频免费| 寂寞少妇一区二区三区| 亚洲一区二区三区免费| av 在线 麻豆| 蜜桃视频18在线观看| 四川操bb操bb操b| 国产麻豆在线av| 可以在线观看的黄色网页| 国产一区三区四区五区| 亚洲精品少妇蜜桃久久久| 国产免费一级高清淫日本片| 亚洲美女乱1区2区3区| 一区二区三区四区免费福利视频| 色婷婷亚洲久久97成人| 3D美女高跟鞋插穴| 久久三级片一区二区毛片| 农村女人91熟女熟妇| 91人妻人澡人人爽人人精品| 三上悠亚和黑人665番号| 美国黄色aa特黄色视拼| 成人熟女一区二区三区| 美女草草影院在线观看视频| 超碰在线观看97视频| 国产三级做爰高清在线| 可以直接在线观看的一区 | 黄色免费2b网页18岁有声音| 制服丝袜诱惑综合网| 操人妻一区二区三区| av在线播放网站资源| 亚洲国产图片小说一区二区| 日本日本熟妇中文在线视频| 伊人精品在线大香蕉| 国产精品久久久久白浆| 不卡黄色免费在线观看| 天天操天天湿天天干| 欧美大黑硬鸡巴操骚肥湿逼| 91精品1080部在线播放| 91精品在线播放hd| 日韩中文字幕乱码一区| 欧美在线一区日韩国产| 中文字幕av一区二区三区高| 天天操天天湿天天干| 日本a爱视频二区三区| 精品视频在线视频精品| 中文字幕久久精品亚洲乱码| 亚洲精品久久久久久久久久蜜桃| 十八禁视频一区二区三区四区| 国产熟女一区二区三区四| 国产精品午夜在线观看| 欧美1234不卡视频| 日本av高清免费观看| 久久99精品久久久久久小说| 97精品国产高清在线| 丝袜美腿国产在线观看| 日日躁夜夜躁狠狠久久av| 亚洲 网友 在线 观看| 国产喷水在线免费观看| av网址大全在线播放| 国内精品久久久久久久999| 成av一区二区三区久久| 欧美黄色免费在线网站| 人妻不卡一区二区三区| 国产成人女人毛毛片视频| 偷拍自拍 中文字幕| 久久少妇精品一区二区免费| 人人妻人人妻人人妻精品| 9l九色自拍蝌蚪9l视频| 古典武侠校园春色亚洲| 91精品1080部在线播放| 思思91精品国产综合在线| av在线手机免费观看| 国产三级伦理在线观看| 无人码一区二区三区视频| 一区二区三区国产欧美日韩| 亚洲另类熟女国产精品老| 免费在线观看网址你懂的| 看男破处女人逼黄色片观看| 2022AV天堂免费在线观看| 漂亮的人妻不敢呻吟被中出| 人人妻在线视频97| 日韩精选高清大片在线观看| 天天色天天爱天天舔| 少妇内射的视频一区二区| 国内人人人妻狠狠狠操操| 登录国产黄色一区二区三区| 4个黑人操素人视频网站精品91| 国产粉嫩粉嫩的在线18观看| av色哟哟国产精品| 97色 国产精品综合| av网址大全在线播放| 2022AV天堂免费在线观看| 大秀视频一区二区三区| 丰满人妻被猛烈进入中文字幕四川| 久久少妇精品一区二区免费| 美女草草影院在线观看视频| 色片网站在线看亚洲精品| 两个人午夜免费看视频| 午夜精品久久99蜜桃| 超碰超碰超碰超碰超碰超| 国产av在线一区二区| 92免费视频人妻网| 3D美女高跟鞋插穴| 国内精品久久久久久久999| 国产精品视频白浆免费网站| 在线免费看亚洲精品少妇69式| 一区二区三区精品在线免费视频| 亚洲欧洲另类小说图片| 欧美日韩国产在线观看了| 欧美日韩国产在线观看了| 亚洲av一区视频在线观看| 亚洲伊人av 综合福利| 欧美精品黑人粗大破除| lisaann在线观看| 久草免费资源视频在线观看| 欧美激情在线观看新地址| 人妻寝取少妇乱中文字幕| 国产剧情星空无限传媒| 起碰97视频在线播放| 程嘉美日本全部三级| 在线视频一视频二视频三| 少妇内射的视频一区二区| 中文字幕最新色片av| 四川熟女a一区二区三区| 微拍一区二区在线观看| 男女精品久久久久久久久久| 大秀视频一区二区三区| 亚洲一区二区三区邪恶成人| 不卡黄色免费在线观看| 日韩avapp在线| 久精彩视频免费观看| 欧美一区视频不卡高清| 天天色天天爱天天舔| 亚洲欧洲美洲无码在线| 手机在线免费视频一区二区三区| 日本片免费a在线观看| 免费成人中文字幕电影| 精品欧美一亚洲精品午夜| av网址大全在线播放| 日本老熟妇色狠狠一区| 无人码一区二区三区视频| 精品视频在线观看久久| 精品久久久久aⅴ一区二区| 亚洲人体艺术二区三区视频| 另类图片亚洲图区第一页| www国产精品久久久久久| 干 白虎 少妇 嫩 逼 视频| 国产在线视频国产资源| 中文字幕一区三区二区国产黄色 | 欧美中文字幕综合在线| 久久亚洲伊人99精品影院| 寂寞少妇一区二区三区| 亚洲国产图片小说一区二区| 天天碰天天摸人人看| 国产伦精品三区精品国偷自产在线 | 一区二区三区在线中国| 日韩欧美一区久久久久久| 久久一区二区三区杨幂| 黑人熟女一区二区三区| av精选一区二区久久| 亚洲视频综合在线播放| 163黄页网在线观看,| 五月天开心激情深爱激情| 日本av高清免费观看| 久久精品国产二区AV无码| 操人妻免费视频观看| 亚洲欧美另类激情综合区动漫| 高清日本欧美亚洲视频| 亚洲欧美另类专区第一页| 狂野小农民在线高清| 人人妻人人澡人人爽电台app| 久久久激情视频网站| 韩国一区二区三区在线观看| 污污污视频在线观看91| 2020精品国产自在现线官网| 午夜老司机福利一二三区| 精品国产日韩一区三区| 91精品国产自产在线大长腿| 二亚洲女同性同志熟女| 久久性视频不卡网站| 成人午夜影视在线观看| av手机在线免费播放| 狠狠干狠狠操五月天| 国语对白xxxx乱大交| 亚洲精品国偷自产久色| 成人18禁视频网站在线看| 最新人妻熟女中文字幕| 在线观看免费a亚洲| 久精彩视频免费观看| 国产麻豆在线av| 日本中文字幕人妻一区二区| 男的扒开女的下面狂操视频| 污污污视频在线观看91| 自拍分享国产亚洲欧美| 少妇高潮精品一区二区| 午夜在线看1000集| 18人妻人碰人人做人人爽| 销魂少妇一区二区视频| 92免费视频人妻网| 天天舔天天做天天爱| 亚洲 欧洲 国产 麻豆| 亚洲人成亚洲人成在线观看com | 天天大香蕉一区二区三区| 天天碰天天摸人人看| 天天色天天爱天天日| 亚洲自拍偷拍清纯唯美| 亚洲久久久久久久久久久久久久| 亚洲视频免费观看不卡| 男女精品久久久久久久久久| 亚洲中文有码一区二区| 都市激情校园春色av| 国产白丝美女在线网站| 国产剧情星空无限传媒 | 亚洲 网友 在线 观看| 性色av成年在线观看| 可以免费看的黄页视频| 挺进老妇的肉91九色| 午夜福利久久久国产视频| 欧美成人免费观看黄片| 操人妻视频在线免费观看| 99国国视频在线播放| 在线观看高清日韩av| 亚洲一区 成人在线| 十八禁视频一区二区三区四区 | 国产美女高清免费av| 163黄页网在线观看,| 女人被男人阳具抽插的呻吟视频| 美国黄色aa特黄色视拼| 日本视频免费大片| 天天睡天天摸天天添天天日天天射| 国产国产午夜全部视频| 日韩av中文字幕网址| 51日日夜夜精品视频| 91大神视频在线观看视频| 亚洲综合精品推荐69堂| 91久久综合九色综合欧美98| 99久久国产成人免费网站| 国产av在线一区二区| 91久久国产丁香精品中文| mm在线视频观看免费观看| 91人妻人人做人人爽九色全集 | 五月天开心激情深爱激情| 4个黑人操素人视频网站精品91| 蜜桃aⅴ噜噜一区二区三区网址| 91精品国产国语自拈产在| 北条麻妃制服丝袜在线播放| 91在线视频只有精品| 亚洲欧美精品tv久久久久久久久| 操人妻免费视频观看| 国产熟妇一区二区三区av| 欧美亚洲综合偷拍另类| 久久久国产视频91| 自拍偷拍亚洲黄色照片| 一区二区三区在线中国| 日本成人午夜电影视频| 人妻精品久久久久中文字幕19| 国产成人女人毛毛片视频| 亚洲天堂都市激情av| 成人性生交大免费三人| 99国产精品免费视频观看a| av男人免费的天堂| 亚洲精品成人原创视频| 亚洲精品久久久久久久久久蜜桃| 综合久久天天搞天天]| 一区二区三区极品人妻| 日韩精品一区二区三区中文精 | 成人性生交大免费三人| 96人妻一区=区三区| 日韩精品高清免费视频| 久久综合色——久久综合色88| 东方av在线免费进入| 欧美在线观看一级一区二区| 福利一区二区在线视频| 亚洲中文有码一区二区| 在线视频 国产 日韩 欧美| 久久精品国产9久久综合| 精品99久久久久久www| 欧美在线观看视频一区五区| 一区二区三区极品人妻| 天天干天天操天天日天天射| 男生日女生逼的视频| 中国熟妇丰满大乳大屁股| 91人妻精品动漫一区二区三区| 港台经典一级成人免费av| av色哟哟国产精品| 阿v视频在线观看免费播放| 午夜剧场欧美一区二区| 1717精品视频在线观看| 欧美丝袜熟女日韩亚洲| 二亚洲女同性同志熟女| 一区二区三区极品人妻| 亚洲精久久久久久久久久久久久| 亚洲免费国产在线日韩| 国产av大全网站天堂| 嗯嗯嗯啊啊啊不要好爽视频| 在线理论国产高清在线| 91久久国产丁香精品中文| 91精品1080部在线播放| 老鸭窝在线观看免费观看高清版 | 91高清免费观看在线| 蜜桃精品在线观看一区| 亚洲av网站在线免费观看| 欧美久久久久亚洲综合| 勾引小哥鸡巴操逼视频下载| av乱亚洲一区二区三区| 老鸭窝在线视频国产| av在线播放网站资源| 亚洲人人妻一区二区三区| 久久性视频不卡网站| 成人黄色大片免费网站| 日本免费啪啪啪啪啪啪啪啪啪啪| 亚洲免费观看高清在线| 国产一线女人天堂av| 97午夜精品理论片在线| 国产免费av不卡免费| 国产女人露脸高潮对白视频| 国产精品一品二区三区日韩| 国产av大全网站天堂| 人人妻人人妻人人妻精品| 9797人人妻人人澡| 蜜桃av在线网址观看| 亚洲av日韩一区二区三区四区 | 亚洲国产欧美一区二区三区久久| 亚洲视频 中文字幕 人妻| 丰满人妻被猛烈进入中文字幕四川| 99久久久国产精品美女| 超碰在线观看97视频| 要看tv在线观看欧美日韩| 亚洲免费观看高清在线| 伊人精品在线大香蕉| caoporn香蕉在线观看| 部长侵犯人妻一区二区三区| 91表用白丝脚帮我脚交| 亚洲av日韩一区二区三区四区| 91精品在线播放hd| 久久人人爽人人爽人人亚洲| 自拍偷拍 中文字幕 日韩 | 亚洲天堂欧美中文字幕| 阿v视频在线观看免费播放| mm在线视频观看免费观看| 嗯嗯嗯啊啊啊不要好爽视频| 国产喷水在线免费观看| 亚洲无码成人福利视频| 视频在线播放一区二区| 亚洲精品国偷自产久色| 手机在线免费视频一区二区三区| 91久久香蕉国产熟女| 人妻久久免费视频中文字幕| 老鸭窝在线观看免费观看高清版 | 啪啪啪在线播放视频| 97超碰在线cao| 亚洲国产久久久久久| 日本老太婆老熟妇av| 熟女一区二区三区四区五区视频| 免费观看视频一区二区三区| 国产剧情星空无限传媒 | 青青草手机视频在线观看| 制服丝袜诱惑综合网| 亚洲欧美一区二区精华液| 久久精品国产二区AV无码| 人妻少妇偷人视频一| www国产亚洲天堂| 亚洲国产图片小说一区二区| 国产成人女人毛毛片视频| 午夜国产福利视频一区二区| 欧美综合一区二区三区| 91老熟女连续高潮对白| 99久久精品美女高潮喷水| 日韩av卡一卡二卡三| 丰满雪白人妻人爽16av精品| 丰满的女教师bd视频| 免费观看黄色韩日av| 日本女护士久久精品| 蜜臀 av一区二区| 操日本裸体美女骚逼| 偷窥中国丰满多毛老熟女| 亚洲免费淫网站在线观看 | 大奶子美女免费操逼视频| 黄色中文字幕在线观看| 五月天丁香婷久久爱| 女人样男人用大鸡巴操她的逼逼 | 中文字幕黄色av网址| 欧美综合自拍亚洲综合图区逼欠插| 国产亚洲精品天堂在线观看| 91亚洲情色在线播放| 91麻豆精品国产91久久久平台| 亚洲av一区视频在线观看| 欧美中文字幕综合在线| 寂寞少妇一区二区三区| 9色自拍视频在线观看| 在线播放 国产 真实| 亚洲精品成人a8198| 亚洲人成小说网站色在线| x8x8免费在线观看视频| 女人扒开逼逼让男人操| 真人同房直接做视频免费| 9色自拍视频在线观看| 瑟瑟的网站在线观看| 久精彩视频免费观看| 婷婷丁香花综合激情五月天| 狠狠干狠狠操五月天| 国产免费av不卡免费| 爆操嫩逼黑丝袜美女小骚逼| 亚洲综合一区二区人妻| 亚洲激情视频免费在线| 在线中文字幕综合一区| av手机在线免费播放| 天天日天天透天天操| 极品人妻vide0sss人妻| 丝袜美腿视频诱惑亚洲| 中文字幕av一区二区三区高| 亚洲欧美一区二区精华液| 天天色天天爱天天舔| 福利视频国产在线在线观看| ai给视频自动加字幕| 国产av大全网站天堂| 内射一对幼嫩无毛妹| 在线观看国产精品123| 日本性少妇xxxx| 国产中文字幕在线免费播放| 日韩国产亚洲在线视频| 好男人资源在线视频观看社区| 一区二区三区国产精选在线播放| 亚洲欧美另类激情综合区动漫| 亚洲国产精品日日夜夜| 久久三级片一区二区毛片| 欧美大长腿美女抽插网站| 精品欧美一亚洲精品午夜| 久久久老熟女一区二区| 国产剧情星空无限传媒 | 婷婷色综合久久五月天| 日本大鸡巴乱伦肏屄网| 亚洲一区二区成人综合| 98视频在线免费观看| 高清日本wwwcom| 亚洲一区二区三区免费| 午夜性色福利视频自拍偷拍| 国产精品亚洲综合视频| 操人妻一区二区三区| 91av国产在线观看| 9色自拍视频在线观看| 欧美熟妇搡bbbb水蜜桃| 久精彩视频免费观看| 91久久国产丁香精品中文| 亚洲av综合久久久久久| 亚洲熟妇av一区二区蜜桃第1集| 五月色婷婷在线视频| 免费av区在线观看| 免费在线观看视频色播| 日韩伦理一区二区三区有码| 女人扒开逼逼让男人操| av网址大全在线播放| 教资是不是人人都可以考| 日韩欧美在线一区二区在线| 伊人青操在线观看视频网站| 爆操嫩逼黑丝袜美女小骚逼| 亚洲无码精品中的精品| 人人妻人人妻人人妻人人妻人人人 | 国内精品久久久久久久| 国产成人一区二区三区久| av 在线 麻豆| 99久久99久久免费精品蜜臀| 国产mm视频在线观看| 一区二区三区欧美高清| 国产白丝美女在线网站| 国产精品一品二区三区日韩| 好的一级毛片免费毛片直播| 色视频免费在线观看视频| 中文字幕最新色片av| 亚洲va欧美va人人爽午夜| 超级碰碰碰97免费视频97| 国产熟妇一区二区三区av| 国产成人一区二区三区久| 黄色免费2b网页18岁有声音| 黄色免费2b网页18岁有声音| 蜜桃视频18在线观看| 起碰97视频在线播放| 欧美丝袜熟女日韩亚洲| 蜜桃视频18在线观看| 亚洲图片,自拍偷拍| 国产又黄又粗又硬又大又猛的视频 | 日本电影高清一区二区| 美女主播大奶子黄瓜插逼| 久久性视频不卡网站| Av资源站中文字幕| 蜜臀 av一区二区| 2020精品国产自在现线官网| 啪啪啪免费亚洲精品网站| 色淫骚色色色色色色美女| 91福利精品一区二区| 少妇人妻不满足中文字幕| 免费熟女精品一区二区三区| 一级女人色又黄毛片女人| 欧美中文字幕综合在线| 亚洲精品在线观看高清资源| 中文字幕看日韩精品视频| 欧美亚洲三级色图网站| 亚洲精品超熟女av| 亚洲成年人三级电影| 精品少妇人妻av免费久久胖妇| 特黄特猛aaaaaaaaa片| 丝袜美腿国产在线观看| 天天操夜夜爽夜夜操| 91麻豆精品国产91久久久平台| 男人天堂地址在线播放| 亚洲综合一区二区人妻| 国产剧情swag在线观看| 日韩成人综艺在线播放| 日本老熟妇色狠狠一区| Av资源站中文字幕| 国产精品亚洲综合av| 91精品久久久久久婷婷高清| 日韩成人综艺在线播放| 黄色成人激情福利在线影院| 日韩av一区二区三区久久| 2012在线国语中文字幕| 久草免费资源视频在线观看| 日本视频免费大片| 在线精品亚洲区一区二区| 国产午夜福利精品久久不卡 | 精品人妻欧美一区二区| 视频在线播放一区二区| 亚洲日本欧洲一区二区| 日韩毛片综合在线观看网站| 国产黑色丝袜视频在线观看下| 在线高清视频你懂得| 熟女人妻人妻のhd| 国产精品视频白浆免费网站| 97精品国产高清在线| 亚洲天堂男人的天堂av| 99久久精品免费看蜜桃的推荐词| 91九色在线视频网站| 日韩av卡一卡二卡三| 人妻熟一区二区三区四区不卡 | 一区二区三区欧美高清| 大香蕉人妻少妇av| 一区二区三区极品人妻| 色吊最新在线视频免费观看| 麻豆一区二区大豆行情| 999在线视频一区二区三区| 亚洲少妇av在线播放| 浪荡人妻共32部分黑人| 97色婷婷久久99国产视频| 成年女人毛片免费在线播放| 亚洲一区二区视频在线免费观看| 久久99精品久久久久久小说| 精品成人午夜免费看| 天天色天天爱天天舔| 青青操视频在线免费| 免费在线观看视频色播| 98久久久久98久久久久| 中文字幕不卡av在线播放| 草草影院黄色在线观看| 亚洲天堂男人的天堂av| 亚洲人人妻一区二区三区| 天天扣天天日天天摸| 在线观看免费a亚洲| 在线播放国产免费av| 欧美丰满熟妇高潮xxxx| 人妻熟女一区二区aⅴ佐佐木明希| 日本性少妇xxxx| 男女精品久久久久久久久久| 中文字幕久久久久久人妻| 变态另类97人妻av| 亚洲欧美一区二区精华液| 天天日天天透天天操| 日本很黄很黄的动态视频| av一av一av中文字幕| 国产精品久久久久白浆| 天天天天拍天天天天天天| 亚洲美女乱1区2区3区| 婷婷综合尤物精品国产| 欧美大长腿美女抽插网站| 天天扣天天日天天摸| 日本女护士久久精品| 在线播放国产免费av| 天堂网作爱视频在线播放| 日本中文字幕人妻一区二区| 都市激情校园春色av| 天天操天天射天天综合网| 天天操天天射天天综合网| 亚洲中文字幕在线成人| 人妻精品久久久久中文字幕19| 日本黄页网络站免费| 163黄页网在线观看,| 亚洲视频 中文字幕 人妻| 免费直接观看的麻豆黄色| 成人教育 在线学习| 91久久精一区二区三区大全| 伦人伦xxxx国语对白| 163黄页网在线观看,| 国产av在线一区二区| 亚洲精品乱码久久观看网| 亚洲伊人av 综合福利| 99久久久国产精品美女| 少妇人妻中文字幕专区视频| 国内精品久久久久久久| 在线视频无码理论片| 日韩国产精品高清中文在线| 国产在线视频国产资源| 啊啊啊操死我轮操视频免费| 国产黑色丝袜视频在线观看下| 国产欧美精品va在线观看| 天天色天天干天天操| 成人激情在线一区二区| 亚洲另类熟女国产精品老| 6080日韩伦理片| 亚洲主要位于五带中的什么带? | 国产91精品久久久久高潮| 亚洲一区二区三区免费| 漂亮人妻被强制中出| 欧美丝袜熟女日韩亚洲| 超碰chaopeng 国产| 免费观看视频一区二区三区| 日本免费啪啪啪啪啪啪啪啪啪啪| 国产免费av不卡免费| 婷婷av一区二区三区7| 伦人伦xxxx国语对白| 日韩资源在线中文字幕| 少妇高潮精品一区二区| 青娱乐青青草丁香婷婷| 搡四十路e五十路熟女av| 青春草在线视频播放免费观看网站| 亚洲国产精品国自产拍a∨| 91麻豆精品国产乱码久久久久久| 大秀视频一区二区三区| 欧美一区二区三区乱轮| 中文字幕av网址大全| 久久这里精品视频3| 91精品人妻一区二区三区水蜜桃| 国产三级伦理在线观看| 中文字幕一区三区二区国产黄色| 91精品人妻中文字幕| 五月婷婷免费在线观看视频| 久久精精品久久久噜噜| av一av一av中文字幕| ai给视频自动加字幕| 国产视频在线精品视频| 男女精品久久久久久久久久| 青青操视频在线免费| 99久久夜色精品国产亚洲软件| 熟女人妻人妻のhd| 阿v视频在线观看免费播放| 亚洲自拍偷拍视频二区| 蜜臀 av一区二区| 九月丁香婷婷中文字幕| 天天舔天天做天天爱| 二根鸡巴日一个穴视频| 色一伊人区二区亚洲最大| 欧美日韩国产综合不卡| 欧美亚洲校园春色另类| 成人18禁视频网站在线看| 中文一区二区三区精品视频| 久草免费资源视频在线观看| 四川熟女a一区二区三区| 91人妻人人做人人爽九色全集| 色男人的天堂一区二区三区| 香蕉久久av一区二区三区四区| 丰满的女教师bd视频| 亚洲中文字幕av在线播放| 91免费观看国产精品| 国产欧美精品va在线观看| 日本美国亚洲一区二区| 亚洲精品久久久久久久久久蜜桃| 精品欧美一亚洲精品午夜| 欧美精品黑人粗大破除| 亚洲偷偷自拍视频网| 日韩精选高清大片在线观看| 午夜剧场欧美一区二区| 一区二区三区极品人妻| 亚洲欧美另类专区第一页| 视频在线观看免费99| 婷婷av一区二区三区7| 日韩中文字幕免费大片| 男人天堂在线免费观看| 69精品人妻一区二区| 女人样男人用大鸡巴操她的逼逼| 2018免费天天干夜夜操| 亚洲视频专区在线播放| 亚洲自偷自拍另类18p| 国模视频写真一区二区| 国内精品视频久久久久| 老男人久久青草av高清| 男人把女人捅爽动漫| 国产精品久久久久白浆| 亚洲国产中文字幕在线视频| 色综合久久加勒比高清剧情| 成人熟女一区二区三区| 成人免费视频国产免费麻豆下 | 久久少妇精品一区二区免费| 精品视频在线视频精品| 韩日一级片中文字幕| av在线播放网站资源| 国产熟妇一区二区三区av| 天天操天天色天天天| 久久91精品国产91久久分享| 日本公与妇电影三级| 午夜网在线观看视频| 亚洲永久av午夜福利| 国产精品午夜在线观看| 日本一区二区不卡电影| 日本公与妇电影三级| 国产剧情swag在线观看| 不卡黄色免费在线观看| 亚洲美女乱1区2区3区| 视频在线播放一区二区| 国产又大又粗又硬又爽视频| 欧美亚洲天堂不卡视频| 欧美综合自拍亚洲综合图区逼欠插| 黄色av日韩免费在线观看| Av资源站中文字幕| 欧美激情性做爰视频| 亚洲性趣老熟妇高清| 漂亮人妻被强制中出| 天天操夜夜爽夜夜操| 啪啪啪在线播放视频| 99精品热视频在线观看| 日韩成人在线电影,| 内射一对幼嫩无毛妹| 2018免费天天干夜夜操| 99国国视频在线播放| 国产一区精品在线观看免费| 男人的天堂av最新| 大香蕉伊人免费在线| 日韩加勒比东京热二区| 超碰人妻中文字幕在线| 高清日本欧美亚洲视频| 97超碰在线come| 丁香激情五月天综合网| 深夜亚洲精品免费福利你懂的| 销魂少妇一区二区视频| 中文字幕一区三区二区国产黄色 | www国产精品久久久| 玩弄放荡人妻少妇精品| 涩涩网站在线观看视频| 亚洲欧美一区二区精华液| 91精彩刺激对白露脸偷拍| 99精品老司机免费视频| 91色porny 在线播放| 亚洲人成亚洲人成在线观看com| 最大最全av中文字幕网| 96h久久国产激情| 筱田优在线播放一区二区三区| 亚洲免费国产在线日韩| 亚洲图片一区偷拍自拍| ai给视频自动加字幕| 国产三级av在线免费观看| 亚洲av综合久久久久久| 天天插天天色天天透| 亚洲美女乱1区2区3区| 午夜福利久久久国产视频| 欧美激情性做爰视频| 久久精品国产亚洲a| 色综合久久加勒比高清剧情| 99久久99久久免费精品蜜臀| 妍强被迫伦姧惨叫123| 天堂av在线中文在线新版| 国产精品亚洲综合av| 午夜在线看1000集| 67194久久一区二区| 免费熟女精品一区二区三区| 欧美大黑硬鸡巴操骚肥湿逼 | 国产乱人伦av麻豆网| 国产传媒网址在线观看| 制服丝袜诱惑综合网| 在线视频无码理论片| 欧美黑人抱着强干视频| 女人张开双腿让男人捅视频| 色片免费在线观看喷水| 美国黄色aa特黄色视拼| 亚洲国产aⅴ成人精品无吗| 久久精精品久久久噜噜| 亚洲欧美 在线视频| 久操av在线免费观看| 视频在线观看免费99| 国产av大全网站天堂| 在线看片1024你懂得| 亚洲天堂一二三四在线播放| 青草视频在在线成人av| 都市激情校园春色av| 26uuu天堂在线青青在线视频| 日日夜夜夜操天天干| 黑人精品一区a一二区b| 天天操天天湿天天干| 日韩中文字幕乱码一区| 午夜啪啪啪免费视频网站| 亚洲免费淫网站在线观看| 在线播放 国产 真实| 亚洲国产日韩欧美在线观看| 国产半推半就精品强推视频| 真人同房直接做视频免费| 大香蕉伊人免费在线| 国产国产午夜全部视频| 日本中文字幕人妻一区二区| 亚洲伊人av 综合福利| 人妻天天操avxx| 欧美激情性4一级完整版| 中文字幕精品av在线观看| 成全视频免费观看在线下载| 91亚洲国产成人久久| 蜜桃av在线网址观看| 欧美综合自拍亚洲综合图区逼欠插| 极品国模sm镣铐调教| 欧美一级特黄aaaaaa片| 欧洲日韩视频一区二区三区| 天天日天天透天天操| 丝袜制服 亚洲 国产 91| 亚洲av网站在线免费观看| 77777蜜臀精品久久综合| 99精产国品一二三产区网站| 日韩中文字幕乱码一区| 精品人妻欧美一区二区| 筱田优在线播放一区二区三区| 国产精品久久久久白浆| 久久视频十八岁亚洲精品久久视频| 欧美日韩无卡一二三区| 长久久久久一区二区高清| 精品99久久久久久www| 一区二区三区在线中国| 中文字幕最新色片av| 欧美黑人天天干夜夜操| 97超级碰最新在线视频| 三级三级三级日本99| 91亚洲情色在线播放| 蜜桃视频18在线观看| 日本熟妇wxw日本人妻| 日日夜夜狠狠干干亚洲| 亚洲免费观看小视频| 老师让我插进去69AV| 夜夜操夜夜操夜夜爽| av蜜桃网在线观看| 日韩毛片基地免费看| 日韩破处精品在线观看| 2018免费天天干夜夜操| 夭天曰天天躁东京热天天摸| 涩涩网站在线观看视频| m3u8在线播放91| 美女诱惑福利在线视频| 最新日韩成人毛片在线| 欧美激情性4一级完整版| 婷婷色综合久久五月天| 亚洲精品 国产成人| 国产欧美日韩经典一区| 999在线视频一区二区三区| 狠狠操 在线视频 轻轻草| 日韩欧美亚洲一区第一| 草逼美女逼话多的视频出水| 色淫骚色色色色色色美女| 欧美黄色免费在线网站| 亚洲av综合久久久久久| 日本黄页网络站免费| 999久久久无码精品免费看片| 99久久精品免费看蜜桃的推荐词| 黄片免费观看久久av| 丰满的女教师bd视频| 五月婷婷丁香花激情网| 人妻天天操avxx| 天天日……天天操……天天喷| 国产三级做爰高清在线| 日本少妇人妻久久中文| 乱一区二区三区在线播放| 91久色porny视频在线| 国产精品一品二区三区日韩| 欧美在线一区日韩国产| 日韩毛片综合在线观看网站| 亚洲偷偷自拍视频网| 青青操视频在线免费| 亚洲图片,自拍偷拍| 一区二区三区在线 日韩| 久久亚洲日本精品视频| 人妻夜夜爽av性色大片| 大香蕉大香蕉在线播放| 亚洲激情视频免费在线| 国产一区二区精品蜜臀av| 亚洲日产av一区二区在线| 久久视频十八岁亚洲精品久久视频 | www国产精品久久久| 日本伦理在线免费视频| 欧美丰满熟妇高潮xxxx| 污污污视频在线观看91 | 亚洲少妇av在线播放| 91久色porny视频在线| 午夜男女激情福利视频| 丰满雪白人妻人爽16av精品| 国产在线免播放器不卡| 日日爽夜夜爽夜夜爽精品视频| 亚洲欧美国产其他二区| m3u8在线播放91| 精品一区二区三区四区激情| 欧美丰满熟妇高潮xxxx| 欧美精品乱码久久久久久| 97午夜精品理论片在线| 亚洲自拍偷拍清纯唯美| 九月丁香婷婷中文字幕| 男生日女生逼的视频| 新婚人妻聚会被中出| 欧美熟妇亚洲中文不卡少妇| 3D美女高跟鞋插穴| 欧美一区二区三区乱轮| 国产黑色丝袜视频在线观看下| 97色 国产精品综合| 麻豆一区二区大豆行情| av网址大全在线播放| av男人天堂精品久久| 97精品在线观看视频| 婷婷爱在线视频精品| 97超碰在线视频观看| 五月天丁香婷久久爱| 成人福利视频一区二区| 欧美熟妇搡bbbb水蜜桃| 亚洲欧美综合区丁香六月| 日日爽夜夜爽夜夜爽精品视频| 欧美综合一区二区三区| 欧美 日韩 中文 字幕| 久久三级片一区二区毛片| 天堂av在线中文在线新版| 天天透天天插天天通| 亚洲av一区视频在线观看| 成人激情在线一区二区| 欧美一区视频不卡高清| 国产精品久久久久精品蜜月| 天天色天天爱天天日| 98视频在线免费观看| 亚洲自拍偷拍视频二区| 少妇的激情夜夜爽爽爽爽爽| 色吊最新在线视频免费观看| 国产精品亚洲综合视频| 国产传媒网址在线观看| 亚洲免费观看小视频| 青娱乐青青草丁香婷婷| 欧美福利专区一区二区三区| 亚洲国产图片小说一区二区| 五月天免费在线观看| 日本少妇精品bbwbbw| 在线免费观看欧美激情视频| av网址在线观看日韩| 亚洲小说区图片另类春色| 欧美一区,二区三区高清视频| 北条麻妃制服丝袜在线播放| 男人爽爽女人的视频一区二区三区| 91国内精品视频在线| 欧美精品日韩第一页| 少妇的激情夜夜爽爽爽爽爽| 日韩国产亚洲在线视频| 亚洲精久久久久久久久久久久久 | 亚洲av网站在线免费观看| 中文字幕黄色av网址| 黑人精品一区a一二区b| av乱亚洲一区二区三区| 在线手机免费观看视频| 久久久久久久久久久蜜桃| 日韩最新视频在线播放| 午夜国产福利视频一区二区| 国产女人露脸高潮对白视频| 欧美va久久久噜噜噜久久| 一级女人色又黄毛片女人| av 在线 麻豆| 蜜桃aⅴ噜噜一区二区三区网址| 163黄页网在线观看,| 福利视频国产在线在线观看| 青青青青青青青青青青青青青草| 亚洲性趣老熟妇高清| av精选一区二区久久| 中文字幕黄色av网址| 丰满的女教师bd视频| 亚洲国产精品av久久久| 寂寞少妇一区二区三区| 亚洲自拍偷拍清纯唯美| 中字av在线一区二区中字| 亚洲欧美 在线视频| 东北老熟女疯狂作爱视频| 亚洲欧美另类专区第一页| 亚州 欧美日韩人妻熟女| 程嘉美日本全部三级| 最新亚洲成人黄色片| 在线手机免费观看视频| 久久久999精品在线| 麻豆一区二区大豆行情| 综合另类小说欧美另类图片| 精品人人妻人人澡人人爽| 亚洲永久av午夜福利| 青青草成人免费电影| 日韩精品高清免费视频| 欧美精品乱码久久久久久| 青青操成人免费在线视频| 成人3d动漫一区二区三区91| 人妻a∨在线中文字幕| 人妻不卡一区二区三区| 日日躁夜夜躁狠狠久久av| 起碰97视频在线播放| 偷窥中国丰满多毛老熟女| 日本黄色操碌缬巴| 啪啪啪免费亚洲精品网站| 成人熟女一区二区三区| 午夜剧场欧美一区二区| 9797人人妻人人澡| 国产美女高清免费av| www国产亚洲天堂| 天天日天天透天天操| 97视频人人人人人性| 亚洲视频专区在线播放| 涩涩网站在线观看视频| 91 chinese 在线播放|