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

震驚,使用imba框架,得到比 vue 快50倍的性能基準

開發 前端
imba 是一種新的編程語言,可以編譯為高性能的 JavaScript??梢灾苯佑糜?Web 編程(服務端與客戶端)開發。

 我是標題黨嗎?是,但也不是。以圖為證。

上圖表示了vue, react 以及 imba 在 todo 這個項目中擁有60個 todoItem 不同進行 crud 操作的表現。可以看到 imba 達到了每秒操作5w次以上。如果你也想試一試該測試,可以訪問 Todos Bench。測試使用的是 Benchmark.js。

imba 簡單介紹

imba 是一種新的編程語言,可以編譯為高性能的 JavaScript。可以直接用于 Web 編程(服務端與客戶端)開發。

下面是語法: 

  1. // 自定義標簽  
  2. tag App  
  3.     // 屬性  
  4.     prop items  
  5.     // 方法定義  
  6.     def addItem  
  7.         if @input.value  
  8.             items.push(title: @input.value)  
  9.             @input.value = ""  
  10.     def toggleItem item  
  11.         item:completed = !item:completed  
  12. // 掛載 Imba.mount(element, into)   
  13. // 如果沒有第二個參數,默認掛載到 document.body 上面  
  14. Imba.mount <App.vbox items=[] ->  
  15.     <form.bar :submit.prevent.addItem>  
  16.         <input@input>  
  17.         <button> 'add'  
  18.     <ul> for item in items  
  19.         <li .done=item:completed :tap.toggleItem(item)> item:title 

可以看出作者喜歡 ruby 以及 pug,偏向于縮進類風格(個人并不是很喜歡這種語法風格)。具體語法可以參考 imba 文檔。當然了,因為可以編譯成js,所以服務端編譯成 js 進行node開發也是可以實現的。

imba 框架極速的性能基礎

任何一個實現的性能優化都有其理論基礎,那么 imba 性能那么快的基礎究竟是什么呢?答案也就是 memoized DOM(記憶DOM)。

理論基礎

瀏覽器的 DOM 操作可以說是瀏覽器最終要的功能,無論框架是基于虛擬 DOM 或者是真實 DOM,最終離不開操作 DOM 對象。

HTML DOM 是瀏覽器定義了訪問和操作 HTML 文檔的標準方法。但是操作 DOM 的接口是 JavaScript。但是瀏覽器通常會把 js 引擎和渲染引擎分開實現。也就是頁面實際渲染部分是和解析js部分分開的。 借著《高性能的 JavaScript》話說,如果把 DOM 和 js 各自想象為島嶼。他們需要一座橋進行溝通。所以每一次執行 DOM 操作就過橋一次。

那我們先談談虛擬DOM,虛擬DOM 的性能提升在于是將 DOM 的對比放在了js層。進而通過對比不同之處來進行實際的 DOM 渲染。也就是說,其實虛擬DOM 并沒有“實際”的性能收益,橋仍舊還在那邊。僅僅在 js引擎需要過橋的那邊找到了一位聰明睿智的大叔,對過橋的人和過橋的貨物進行優化和限制(虛擬DOM 高性能的diff算法,狀態批量更新)。

那么 memoized DOM 又是怎么做的呢?把 DOM 節點的控制直接放入內存之中。類似于此類優化。 

  1. function getEls(sel) {  
  2.     // 設置緩存  
  3.     if (!getEls.cache) getEls.cache = {};    
  4.     // 如果緩存中存在 el,直接返回   
  5.     if (getEls.cache[sel]) {  
  6.         return getEls.cache[sel];  
  7.     }  
  8.     // 沒有去通過 DOM 查詢  
  9.     const r = document.querySelectorAll(sel || '☺'),  
  10.         length = r.length;    
  11.     // 緩存并返回元素節點  
  12.     return getEls.cache[sel] = (length == 1) ? r[0] : r;  

我們可以測試一下。這里我寫一個 getElsByDocument 以及 simplePerTest。 

  1. // 直接通過 querySelectorAll 獲取節點  
  2. function getElsByDocument(sel) {  
  3.     const r = document.querySelectorAll(sel || '☺'),  
  4.         length = r.length;  
  5.     return length == 1 ? r[0] : r;  
  6.  
  7. // 簡單性能測試  
  8. function simplePerTest(fn, el) {  
  9.     const fnfnName = fn.name  
  10.     console.time(fnName)    
  11.     // 2000 次操作  
  12.     for(let i = 0,len = 2000; i < len; i++) {  
  13.         fn(el)  
  14.     }  
  15.     console.timeEnd(fnName)  

這個緩存的節點查詢可要比 querySelectorAll 快了 140倍以上啊,隨著 img 節點越多,得到的性能提升也越高啊。如果imba 框架中所有的節點都在內存中呢?同時,我們還會得到一個 js 運行時優化( GC 的大量減少),因為虛擬DOM 要維護一個樹,在進行多次 crud 之后就會產生大量無用對象從而導致瀏覽器進行 GC,而 memoized DOM 在多次 crud 不會進行多次 GC。(可能會在渲染引擎中 GC?但我感覺渲染引擎中GC 要比JS 中影響要小很多。挖個坑,研究完渲染引擎再來探討一下)

框架實踐

實例如下所示: 

  1. tag Component  
  2.     def render  
  3.         <self>  
  4.             <h1.title> "Welcome"  
  5.             <p.desc> "I am a component" 

上面的自定義組件會編譯成下面的js: 

  1. var Component = Imba.defineTag('Component', function(tag){  
  2.     tag.prototype.render = function (){  
  3.         var $ = this.$;  
  4.         // 返回dom  
  5.         return this.setChildren($.$ = $.$ || [  
  6.             createElement('h1',$,0,this).flag('title').setText("Welcome"),  
  7.             createElement('p',$,1,this).flag('desc').setText("I am a component")  
  8.         ]).synced();  
  9.     };  
  10. }); 

仔細觀察一下這里的函數,你會看到該組件在***次調用渲染時,將使用 createElement 創建兩個子節點,并設置它們的屬性并且緩存。第二次或者***萬次調用時,children-array將被緩存,不會發生任何調用。 

  1. // 在***次調用時候 $.$不存在  $.$會等于 后面的數組  
  2. // 第二次調用 $.$ 是存在的,無運行時消耗  
  3. $.$ = $.$ || 數組 

其中查看源碼,我們可以看到 setChildren 函數都是對真實DOM 進行了操作。獲取之前的DOM節點進行一系列操作后將當前節點返回并緩存。 

  1. tag.prototype.setChildren = function (new$,typ){  
  2.     var old = this._tree_;    
  3.     if (new$ === old && (!(new$) || new$.taglen == undefined)) {  
  4.         return this;  
  5.     };  
  6.     if (!old && typ != 3) {  
  7.         this.removeAllChildren();  
  8.         appendNested(this,new$);  
  9.     } else if (typ == 1) {  
  10.         var caret = null 
  11.         for (var i = 0items = iter$(new$), len = items.length; i < len; i++) {  
  12.             caret = reconcileNested(this,items[i],old[i],caret);  
  13.         };  
  14.     } else if (typ == 2) {  
  15.         return this;  
  16.     } else if (typ == 3) {  
  17.         var ntyp = typeof new$;         
  18.          if (ntyp != 'object') {  
  19.             return this.setText(new$);  
  20.         };           
  21.          if (new$ && new$._dom) {  
  22.             this.removeAllChildren();  
  23.             this.appendChild(new$);  
  24.         } else if (new$ instanceof Array) {  
  25.             if (new$._type == 5 && old && old._type == 5) {  
  26.                 reconcileLoop(this,new$,old,null);  
  27.             } else if (old instanceof Array) {  
  28.                 reconcileNested(this,new$,old,null);  
  29.             } else {  
  30.                 this.removeAllChildren();  
  31.                 appendNested(this,new$);  
  32.             };  
  33.         } else {  
  34.             return this.setText(new$);  
  35.         };  
  36.     } else if (typ == 4) {  
  37.         reconcileIndexedArray(this,new$,old,null);  
  38.     } else if (typ == 5) {  
  39.         reconcileLoop(this,new$,old,null);  
  40.     } else if ((new$ instanceof Array) && (old instanceof Array)) {  
  41.         reconcileNested(this,new$,old,null);  
  42.     } else {  
  43.         // what if text?  
  44.         this.removeAllChildren();  
  45.         appendNested(this,new$);  
  46.     };    
  47.     this._tree_ = new$;  
  48.     return this;  
  49. }; 

如果我們使用了動態屬性。代碼如下: 

  1. tag Component  
  2.     def render  
  3.         <self>  
  4.             <h1.title> "Welcome"  
  5.             # 有 50% 幾率 擁有 red class  
  6.             <p.desc .red=(Math.random > 0.5)> "IMBA" 

可以得到如下代碼,詳細查看可以看出,imba 提取了可變量,放入了 synced 函數中,每次渲染中只會執行 synced 里面的數據,所以依然會得到極高的渲染速度。 

  1. var Component = Imba.defineTag('Component', function(tag){  
  2.     tag.prototype.render = function (){  
  3.         var $ = this.$;  
  4.         return this.setChildren($.$ = $.$ || [  
  5.             _1('h1',$,0,this).flag('title').setText("Welcome"),  
  6.             _1('p',$,1,this).flag('desc').setText("Roulette")  
  7.         ],2).synced((  
  8.             $[1].flagIf('red',Math.random() > 0.5)  
  9.         ,true));  
  10.     };  
  11. }); 

精確的抽取不可變量,然后無需虛擬DOM 計算,同時對于真實DOM 還進行了緩存,我們可以看出 memoized DOM 與 虛擬DOM 不同,memoized DOM 是具有實際的性能收益。

imba 框架“虛假”的性能測試

我們在上面看到了 imba 框架的理論基礎,那么他是否真的比vue快50倍?當然不是,這也就是在上面說我是標題黨的原因。

瀏覽器的運行機制

瀏覽器本身只能達到 60 fps( 1 秒刷新了60次 )。當然了,其實對于體驗而言,60fps的體驗已經差不多夠用了,也就是瀏覽器渲染上大概需要 17ms 去渲染一次。事實上無論是每秒操作dom 5w次還是 1000次,瀏覽器渲染引擎也只會記錄當前的臟數據。然后在需要渲染時候再進行重繪與重排。

真實世界的內存限制

面對 memoized DOM 的緩存優化以及更少 GC 帶來的運行時提升,我們需要更多內存來對每一個 dom節點進行緩存。這個在初始化渲染時有大量的消耗。同時我們的瀏覽器執行速度和渲染速度已經足夠快了,虛擬DOM已經完全夠用了。

imba 框架與瀏覽器的暢想

Google io 大會 chorme Portals 技術

單頁應用程序(Single Page Applications,SPA)提供了很好的頁面交互,但代價是構建的復雜性更高,多頁面應用程序(Multi-page Applications,MPA)更容易構建,但最終會在頁面之間出現空白屏幕。

Portals 結合了這兩者的優勢,主要用于改進網頁交互體驗,目標是無縫導航。它類似于 iframe ,內嵌在網頁上,但可以導航到頁面內容上。用戶在一個頁面跳轉另一個內容時,雖然 URL 相應地發生變化,但是不需要打開另一個窗口,此時該內容標記的 Portals 會變成原來頁面的***頁面,同時原來頁面在其后保持主進程地位?,F場演示了這對于購物體驗的極大便利,此外還有對漫畫這類單頁面應用的演示。

[[268439]]

js引擎 與 渲染引擎的關聯

在之前,瀏覽器 js引擎和渲染引擎是沒有任何關聯的,我們去寫動畫只能通過 setTimeout 或者 setInterval,更加沒有辦法知道瀏覽器什么時候處于空閑狀態,但是隨著時間的發展,我們可以通過 requestAnimationFrame 和 requestIdleCallback。requestAnimationFrame 要求瀏覽器在下次重繪之前調用指定的回調函數更新動畫。requestIdleCallback方法將在瀏覽器的空閑時段期間對要調用的隊列函數進行執行。

那么內置DOM 操作是否能夠在js引擎中,是否能夠減少過橋的性能消耗或者完全把橋打通。讓我們拭目以待。

鼓勵一下

如果你覺得這篇文章不錯,希望可以給與我一些鼓勵,在我的 github 博客下幫忙 star 一下。 博客地址:https://github.com/wsafight/personBlog

 

責任編輯:龐桂玉 來源: 中國IDC圈
相關推薦

2022-06-08 09:20:58

Python基準測試編程語言

2022-10-27 08:31:31

架構

2021-05-06 10:52:09

Java Spring Bo框架

2024-03-26 10:13:54

日志引擎SigLens

2021-08-03 06:57:36

Protocol Bu平臺Json

2023-04-07 08:17:39

fasthttp場景設計HTTP

2025-08-11 08:55:30

HTML前端字體異常

2025-08-18 09:21:07

2022-04-26 15:24:03

開源框架

2012-07-31 09:02:49

Apworks

2019-10-14 09:50:52

KeyDBRedis中間件

2021-01-04 09:58:46

5G6G運營商

2015-11-25 14:39:51

LiFiWiFi

2021-07-28 14:20:13

正則PythonFlashText

2022-11-02 08:12:47

TurbopackVite

2022-03-19 10:26:48

Linuxapt 命令

2019-08-06 17:19:22

開源技術 趨勢

2021-06-11 09:21:20

開源SQL Parser詞法語法分析器

2024-03-08 07:58:13

QPShttpsync

2022-12-05 14:50:53

點贊
收藏

51CTO技術棧公眾號

国产日韩视频| 日韩在线免费| 国产**成人网毛片九色| 亚洲成av人综合在线观看| 91青青草免费观看| 可以在线观看av的网站| 人体久久天天| 欧美日韩国产高清一区二区三区 | 欧美国产一区二区在线观看| 国产精品久久久久福利| 欧美日韩中文字幕在线观看| 欧美一级二级三级视频| 欧美日韩午夜在线视频| 99久久国产综合精品五月天喷水| av在线女优影院| 国产精品vip| 日韩av网址在线观看| 久久精品一区二| 不卡视频免费在线观看| 水蜜桃久久夜色精品一区| 欧美大片免费久久精品三p| 美女福利视频在线| 丝袜综合欧美| 亚洲欧洲精品一区二区精品久久久| 欧美一级大片在线免费观看| 手机免费观看av| 久久a爱视频| 51久久夜色精品国产麻豆| 日本免费黄视频| 在线三级中文| 亚洲视频在线观看一区| 日本亚洲欧洲精品| 少妇高潮一区二区三区99小说 | 樱桃视频在线观看一区| 奇米影视首页 狠狠色丁香婷婷久久综合| 国产精品久久久久精| 美女日韩在线中文字幕| 亚洲国产中文字幕久久网| 中文字幕网av| 欧美特大特白屁股xxxx| 亚洲第一在线综合网站| 无码毛片aaa在线| 99免在线观看免费视频高清| 91毛片在线观看| 日韩美女激情视频| 日韩欧美不卡视频| 一区福利视频| 久久久女女女女999久久| 日韩欧美综合视频| 99久久久久国产精品| 一本色道久久综合狠狠躁篇的优点 | 国产成人精品福利一区二区三区 | 亚洲欧美一区二区三区不卡| 午夜av成人| 欧美主播一区二区三区| 久久国产色av免费观看| 黄色成人免费网| 欧美日韩在线视频一区| 黄色av网址在线播放| 草莓视频丝瓜在线观看丝瓜18| 国产黄人亚洲片| 成人黄色大片在线免费观看| 在线观看不卡的av| 亚洲h色精品| 日韩在线观看视频免费| 黄色免费一级视频| 国产大片一区| 欧美成人激情图片网| 青青草手机在线视频| 黄色精品免费| 91国语精品自产拍在线观看性色| 五月婷婷激情网| 水蜜桃久久夜色精品一区的特点 | 免费中文字幕在线| 狠久久av成人天堂| 91av视频在线播放| 色老头一区二区| 久久国产精品露脸对白| 97人摸人人澡人人人超一碰| 俄罗斯嫩小性bbwbbw| 97精品超碰一区二区三区| 日本一区二区久久精品| 秋霞午夜理伦电影在线观看| 亚洲激情网站免费观看| 丰满爆乳一区二区三区| 国产精品高清乱码在线观看| 欧美日韩一区在线观看| 欧洲成人午夜精品无码区久久| 成人激情自拍| 一本色道久久88综合日韩精品| 很污很黄的网站| 在线免费高清一区二区三区| 欧美与欧洲交xxxx免费观看| 亚洲最大成人av| 成人免费高清在线观看| 日韩精品不卡| 欧美日韩经典丝袜| 狠狠色狠狠色综合日日五| 成 人 黄 色 小说网站 s色| 国产白丝在线观看| 欧美日韩免费一区| 五月天婷婷影视| 日韩精品影片| 91精品久久久久久久99蜜桃| 亚洲一区二区三区四区五区六区 | 国产成人免费视频精品含羞草妖精 | 99国产欧美久久久精品| 一区二区三区av| 欧亚在线中文字幕免费| 欧美精品第一页| 国产艳俗歌舞表演hd| 91精品蜜臀一区二区三区在线| 午夜精品在线观看| 国产欧美日韩成人| 国产日产欧产精品推荐色| 成人毛片100部免费看| 成年人在线免费观看| 亚洲最大色网站| 日本爱爱免费视频| 26uuu亚洲电影| 欧美一区二区三区成人| 一区二区三区伦理片| 奇米成人av国产一区二区三区| 给我免费观看片在线电影的| 成人羞羞网站| 51精品在线观看| 精品乱子伦一区二区| 亚洲国产精华液网站w| 久久久久久免费看| 日韩精品三级| 精品一区二区三区中文字幕老牛| 国产乱理伦片在线观看夜一区 | 久久久久亚洲视频| 国产91丝袜在线播放九色| 亚洲欧美日本国产有色 | 成人免费视频在线观看超级碰| 香港一级纯黄大片| 亚洲香蕉伊在人在线观| 欧美性受xxxx黒人xyx性爽| 日韩精品一区二区久久| 国产成人精品视频在线观看| 天堂av在线资源| 99久久精品一区| 欧美人与动牲交xxxxbbbb| 偷拍自拍亚洲| 久久精品国产96久久久香蕉| 少妇一级淫片日本| 欧美国产精品久久| 红桃av在线播放| 在线日韩一区| 欧洲美女免费图片一区| 欧美拍拍视频| 欧美亚洲国产怡红院影院| 人人妻人人澡人人爽人人精品| 亚洲高清资源| 美乳视频一区二区| 中文字幕成在线观看| 亚洲欧美精品一区| 国产精品自拍第一页| 久久久精品黄色| 亚洲蜜桃在线| 久久久久伊人| 亚洲h色精品| 精品国内自产拍在线观看| 一级黄色片在线看| 亚洲人成网站精品片在线观看| 黄色片免费网址| 国产综合欧美| 欧美日韩免费高清| 成人一区视频| 欧美精品在线播放| 三级视频在线看| 色婷婷久久久亚洲一区二区三区| 国产精久久一区二区三区| 青青草原综合久久大伊人精品优势| 亚洲欧美日韩在线综合| 国模大尺度视频一区二区| 欧美激情在线观看视频| 日韩av成人| 自拍偷拍国产精品| 日韩精品在线播放视频| 亚洲久久一区| 视频一区二区三| 日韩亚洲精品在线观看| 68精品国产免费久久久久久婷婷| 国产www.大片在线| 黄色一区二区在线| 91中文字幕永久在线| 麻豆成人久久精品二区三区红 | 国产一区高清视频| 性高爱久久久久久久久| 久久偷看各类女兵18女厕嘘嘘| 欧美少妇bbw| 91官网在线免费观看| 澳门黄色一级片| 久久久久久久久久看片| 欧美性猛交xx| 免费亚洲一区| 中文字幕一区二区三区四区五区人 | 久久久久无码精品国产sm果冻| 狠狠色综合日日| 男女高潮又爽又黄又无遮挡| 99国内精品久久久久久久| 激情视频一区二区| 国产无码精品一区二区| 青青草视频在线免费直播| 欧美日韩国产a| 日产欧产va高清| 高潮精品一区videoshd| 亚洲精品无码久久久久久| 欧美日韩p片| 亚洲国产精品一区二区第四页av| 亚洲一区二区三区在线免费| 久久久精品久久久久| 午夜激情在线视频| 日韩一区二区在线免费观看| 日韩视频在线观看免费视频| 国产美女视频91| 美女网站视频黄色| 免费亚洲一区| 成熟丰满熟妇高潮xxxxx视频| 91精品在线观看国产| 日韩美女一区| 亚洲调教一区| 国产精品中出一区二区三区| 五月天色综合| 国产精品一区二区久久国产| 国产精品伦理| 2021久久精品国产99国产精品| 污的网站在线观看| 久久香蕉国产线看观看av| 电影av一区| 亚洲欧洲激情在线| 在线观看亚洲黄色| 欧美性生交xxxxxdddd| 国产午夜免费视频| 一区二区成人在线视频| 欧美极品aaaaabbbbb| 亚洲人成精品久久久久| www.5588.com毛片| 国产精品久久久久久福利一牛影视| 欧美偷拍一区二区三区| 国产亚洲精品精华液| 三上悠亚影音先锋| 国产亚洲一二三区| 国产高潮呻吟久久| 久久精品男人天堂av| 天堂久久精品忘忧草| 国产欧美一区二区三区鸳鸯浴| aaaaa级少妇高潮大片免费看| 99久久国产免费看| aa一级黄色片| 久久精品夜夜夜夜久久| 手机看片日韩av| 国产精品天美传媒| 国产在线免费看| 亚洲欧美一区二区三区国产精品 | 国产51自产区| 成人av免费观看| 激情婷婷综合网| 国产亚洲网站| 国产xxxxx视频| 免费高清视频精品| 尤物网站在线看| 国产成人av一区二区| 黄色污在线观看| 国产日韩欧美在线一区| 成人无码精品1区2区3区免费看 | 国产无套粉嫩白浆内谢| 午夜影院在线观看欧美| 日本久久综合网| 欧美美女一区二区在线观看| 国产老女人乱淫免费| 欧美精品一区二区三区一线天视频 | 一本一道久久a久久精品综合| 99成人在线视频| 成人网站免费观看入口| 久久久久99| 日韩欧美亚洲另类| gogo大胆日本视频一区| 亚洲欧洲久久久| 亚洲日本韩国一区| 国产精品久久久久久久久久久久久久久久久 | 午夜欧美不卡精品aaaaa| 日本不卡一二三| 91久久嫩草影院一区二区| 精品三级av在线导航| 亚洲精品欧洲精品| 亚洲福利国产| 九九热精品在线播放| 成人午夜激情片| 人妻互换一区二区激情偷拍| 亚洲伦在线观看| 变态另类ts人妖一区二区| 中文字幕在线不卡一区二区三区| 精品无码久久久久| 欧美日韩一区二区在线观看| 人妻无码中文字幕免费视频蜜桃| 亚洲天堂av电影| 久草在线资源站资源站| 国产精品伦子伦免费视频| 成人激情自拍| 天天做天天爱天天高潮| 美女精品网站| 精品1卡二卡三卡四卡老狼| 欧美国产激情一区二区三区蜜月 | 欧美日韩mv| 青青青在线视频免费观看| 成人网在线免费视频| 天堂网av2018| 一本到不卡精品视频在线观看| 精品人妻无码一区二区| 在线观看91久久久久久| 一个人www视频在线免费观看| 91精品久久久久久蜜桃| 日韩免费在线| 午夜免费精品视频| 91亚洲精华国产精华精华液| 成人免费黄色小视频| 欧美日韩一级片在线观看| 免费a在线观看| 97高清免费视频| 一区二区三区四区精品视频| 亚洲欧美日韩在线综合| 日韩精品91亚洲二区在线观看| 亚洲成年人在线观看| 亚洲精品日韩一| 国产精品一级视频| 日韩在线视频网站| 日本一区二区电影| 日韩欧美亚洲日产国| 久久精品一本| 黄色短视频在线观看| 亚洲二区在线视频| 丰满少妇在线观看bd| 九九九久久国产免费| 日韩视频一二区| 黄色一级片国产| 国产精品69毛片高清亚洲| 91日韩中文字幕| 欧美一级欧美三级| 国产乱色在线观看| 亚洲综合在线播放| 欧美精选一区| 中文字幕天堂av| 黄色一区二区在线| 欧洲视频在线免费观看| 日本精品一区二区三区在线播放视频 | 国产伦理久久久| 日韩午夜免费| 成人一级片网站| 91啦中文在线观看| 永久免费无码av网站在线观看| 日韩精品高清在线| 亚洲精品国产嫩草在线观看| 日韩在线第一区| 麻豆精品精品国产自在97香蕉| 国产精品69久久久久孕妇欧美| 欧美视频一区二区三区在线观看| 91电影在线播放| 亚洲一区二区三区777| 欧美三区美女| 人妻熟女aⅴ一区二区三区汇编| 在线视频观看一区| 麻豆传媒在线观看| 国产激情一区二区三区在线观看| 亚洲精品欧美| 亚洲综合色一区| 欧美人xxxx| 草美女在线观看| 日本一区二区三不卡| 国产精品一品二品| 国产 欧美 日韩 在线| 国产一区二区三区在线观看网站| 国产成人精品一区二区三区在线 | 黄色片网站在线播放| 91精品国产综合久久国产大片| 欧美性video| 少妇精品久久久久久久久久| 国内精品伊人久久久久av影院 | 欧美日韩你懂得| 色呦呦在线看| 欧美日韩一区二区三区在线观看免| 免费的成人av| 国产网站在线看| 综合国产在线观看| 国产成人精品福利| 三级在线视频观看| 亚洲国产中文字幕| 在线激情网站| 国产精品视频一区二区三区经| 老妇喷水一区二区三区| 精品99在线观看| 在线观看国产精品日韩av| 一区二区三区在线免费看| 狠狠热免费视频| 亚洲综合999| 日韩伦理在线电影| 狼狼综合久久久久综合网| 韩国午夜理伦三级不卡影院|