精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美国产成人精品一区二区三区| 人妻激情偷乱频一区二区三区| 91社区在线观看| 久久99精品国产91久久来源| 欧美激情久久久久久| 国产精品无码久久久久久| 99久久精品一区二区成人| 一区二区三区美女| 日本不卡一区二区三区视频| 国产视频一区二区三| 亚洲片区在线| 色噜噜狠狠狠综合曰曰曰| 东京热av一区| 91精品一久久香蕉国产线看观看| 亚洲成av人**亚洲成av**| 日韩免费三级| 手机av免费在线观看| 日韩精彩视频在线观看| 欧美激情精品久久久久久| 色一情一交一乱一区二区三区| 日本一区二区三区播放| 91久久精品国产91性色tv| 日韩欧美视频免费在线观看| 嫩草精品影院| 成人福利视频在线看| 91免费看片在线| 中文字幕av第一页| 亚洲国产婷婷| 久久综合伊人77777| x88av在线| 欧美久久香蕉| 欧美白人最猛性xxxxx69交| 中文字幕第36页| 黄色大片在线| 亚洲色图视频网| 亚洲高清资源综合久久精品| 男人天堂资源在线| av中文字幕不卡| 91丨九色丨国产在线| 五月婷婷六月婷婷| 久久中文字幕一区二区三区| 久久久久久美女| 欧美三级免费看| 午夜激情久久| 色悠悠久久久久| 成熟人妻av无码专区| 免费av一区| 国产偷亚洲偷欧美偷精品 | 国产乱码精品一区二区三区av | 97成人超碰免| 波多野结衣欲乱| 精品国内自产拍在线观看视频 | 欧美一级免费观看| 亚洲综合123| 亚洲精品aaa| 欧美丰满少妇xxxbbb| 五月天av在线播放| 白嫩亚洲一区二区三区| 69av一区二区三区| 三级黄色片播放| 97精品久久| 亚洲第一区第一页| 欧美狂猛xxxxx乱大交3| 国产精品片aa在线观看| 国产午夜精品一区二区三区| 女人十八毛片嫩草av| 久久要要av| 久久久国产精品亚洲一区| 潘金莲一级黄色片| 国产综合色产| 2019中文字幕全在线观看| 欧美日韩综合一区二区三区| 日韩二区三区四区| 成人亲热视频网站| 亚洲精品一区二区三区新线路| 国产suv精品一区二区三区| 国产精品一区二区欧美黑人喷潮水| 免费观看国产精品| 久久久久9999亚洲精品| 亚洲免费在线精品一区| www在线视频| 欧美日韩国产在线播放| 99久久国产宗和精品1上映| 国产极品久久久久久久久波多结野| 欧美性感一区二区三区| 中文字幕在线观看第三页| 国产亚洲字幕| 日韩av影片在线观看| 午夜精产品一区二区在线观看的| 欧美色图国产精品| 欧美高清第一页| 少妇高潮av久久久久久| 国产精品99久久久久久似苏梦涵| 国产精品免费一区二区三区| 国产福利电影在线| 一区二区三区在线观看国产| 成年人免费在线播放| 青青久久精品| 日韩精品极品视频免费观看| 快灬快灬一下爽蜜桃在线观看| 在线精品国产| 国产精品av电影| av免费观看在线| 久久五月婷婷丁香社区| 欧美亚洲视频一区| av资源亚洲| 欧美v国产在线一区二区三区| 国产熟妇搡bbbb搡bbbb| 综合视频在线| 国产精品久久久久久久电影| 亚洲欧美另类视频| 国产精品久久久久久久久免费桃花 | 欧美日韩在线一区二区| 你懂的在线观看网站| 999视频精品| 国产99久久久欧美黑人| 亚洲精品一级片| 亚洲欧美区自拍先锋| 老熟妇仑乱视频一区二区| 成人盗摄视频| 美女av一区二区三区| 亚洲天堂视频在线播放| 99国产麻豆精品| 妞干网视频在线观看| 午夜精品久久久久久毛片| 亚洲午夜未删减在线观看| 久久久久久久伊人| 国产成人精品免费一区二区| 国产精品av免费| av一区在线播放| 亚洲欧美在线磁力| 欧美一区二区激情视频| 国产风韵犹存在线视精品| 中国一区二区三区| 91福利精品在线观看| 亚洲人成电影网站色| 日韩特黄一级片| 成人免费视频国产在线观看| 男女裸体影院高潮| 精品成人18| 久久综合久久88| 国产女人18毛片水真多| 亚洲三级在线播放| 思思久久精品视频| 97久久夜色精品国产| 国产精品永久免费观看| 888av在线| 欧美三电影在线| 久久日免费视频| 免费欧美日韩国产三级电影| 日韩精品久久一区| 日本成人福利| 亚洲视频第一页| 最好看的日本字幕mv视频大全| 国产婷婷色一区二区三区四区| 成人精品视频一区二区| 神马电影久久| 国产精品久久久久久久久男 | 久久香蕉网站| 日本老师69xxx| 不卡在线视频| 在线不卡一区二区| 免费在线视频一区二区| 成人丝袜视频网| 美女av免费在线观看| 一道本一区二区三区| 国产精品久久久久aaaa九色| 永久免费av在线| 51久久夜色精品国产麻豆| 欧美性猛交xxxxx少妇| 福利电影一区二区三区| 久久久999视频| 成人久久电影| 亚洲综合社区网| 九色porny自拍视频在线播放| 亚洲天堂精品在线| 国产又粗又黄视频| 亚洲成人精品在线观看| 日本少妇高潮喷水xxxxxxx| 蜜桃视频第一区免费观看| 黄色成人在线免费观看| 少妇高潮一区二区三区| 国产欧美精品在线| 免费男女羞羞的视频网站在线观看| 亚洲精品久久久久久下一站| 亚洲午夜无码久久久久| 亚洲欧美成aⅴ人在线观看| 国产xxxxxxxxx| 麻豆国产精品777777在线| 少妇一晚三次一区二区三区| 欧洲亚洲视频| 成人免费看黄网站| 国产在线美女| 久久久精品欧美| 亚洲AV第二区国产精品| 欧美日韩激情一区二区三区| 日本熟妇毛茸茸丰满| 亚洲国产精品av| 95视频在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 欧美一区二区激情| 日韩美女一区二区三区在线观看| 国产精品午夜av在线| 日韩毛片网站| 奇米影视亚洲狠狠色| 99在线视频观看| 一二美女精品欧洲| 日本国产在线观看| 欧美一区二区日韩一区二区| jizz国产在线观看| 性做久久久久久免费观看| a级黄色免费视频| 91丨porny丨国产入口| 日韩av影视大全| 美女免费视频一区二区| 国产二区视频在线播放| 欧美天天视频| 中文字幕一区二区三区有限公司| 免费av一区| 精品久久久久久综合日本| 一区二区三区四区视频免费观看 | 亚州综合一区| www.av一区视频| 91麻豆精品国产综合久久久| 国产精品高潮呻吟视频| 美女高潮视频在线看| 欧美激情久久久久久| 国产黄色在线观看| www.日韩.com| 91se在线| 日韩在线免费高清视频| 啊v在线视频| 亚洲天堂色网站| 日韩有码电影| 亚洲跨种族黑人xxx| 天天干天天操av| 亚洲精品999| 天天干天天舔天天射| 精品国产1区二区| 精品国产黄色片| 日韩欧美一区二区在线视频| av观看在线免费| 日韩精品一区二区三区三区免费| 国产人妻精品一区二区三| 337p亚洲精品色噜噜| 国产精品呻吟久久| 91精品国产综合久久蜜臀| 国产免费黄色片| 精品日韩99亚洲| 日韩一级片免费| 日韩av一区二区在线| 男人天堂综合| 在线播放日韩专区| avav免费在线观看| 久久精品美女视频网站| bt在线麻豆视频| 久久久久免费视频| 三妻四妾完整版在线观看电视剧| 91成人性视频| av高清一区| 成人网在线免费观看| 日韩成人在线观看视频| 国产精品久久久久久久久久久久冷 | 黄色小网站在线观看| 欧美精品在线免费播放| heyzo中文字幕在线| 国产91精品久久久久久久| 欧美日韩电影免费看| 国产欧美日韩高清| 在线播放一区二区精品视频| 国内精品久久国产| 日韩精品久久| 久久久久福利视频| 亚洲视频播放| 日韩中文字幕a| 成年人网站91| 纪美影视在线观看电视版使用方法| 国产精品理论在线观看| 青青草偷拍视频| 日韩欧美999| 国产男女猛烈无遮挡| 亚洲精品国产精品国产自| jizz日韩| 久久久亚洲福利精品午夜| 日本电影欧美片| 亚洲一区二区三区久久 | 日韩一区二区电影在线观看| 亚洲女同中文字幕| www.中文字幕在线| 精品一区二区三区在线播放 | 久久久久久97| 欧美日韩尤物久久| 成人动漫在线观看视频| 欧美裸体在线版观看完整版| 国产在线视频在线| 蜜臀av在线播放一区二区三区| 免费在线观看日韩av| 国产亚洲精品aa| 午夜免费激情视频| 欧日韩精品视频| 午夜一区在线观看| 久久久精品日本| 亚洲天堂1区| 久久久久se| 国产综合自拍| 亚洲精品午夜在线观看| 91麻豆国产香蕉久久精品| 中文字幕人妻一区二| 欧美亚洲国产怡红院影院| 欧美一级淫片免费视频魅影视频| 色诱女教师一区二区三区| 英国三级经典在线观看| 97se在线视频| 国产精品久久天天影视| 日韩欧美黄色大片| 91婷婷韩国欧美一区二区| 欧美黑人猛猛猛| 欧美欧美欧美欧美首页| 男人天堂网在线| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲码欧美码一区二区三区| youjizz.com亚洲| 麻豆高清免费国产一区| 精品熟妇无码av免费久久| 色网综合在线观看| 天堂а在线中文在线无限看推荐| 九九精品视频在线观看| 99er精品视频| 一区不卡视频| 美美哒免费高清在线观看视频一区二区| 少妇精品一区二区三区| 动漫精品一区二区| 亚洲 欧美 激情 小说 另类| 国内偷自视频区视频综合| 91午夜精品| 国产精品一色哟哟| 粉嫩绯色av一区二区在线观看 | 欧美视频四区| 午夜av中文字幕| 亚洲视频小说图片| 国产精品无码久久av| 久久精品视频在线观看| 高清久久精品| 肉大捧一出免费观看网站在线播放 | 美国黄色a级片| 欧美日韩亚洲国产一区| 牛牛影视精品影视| 国产va免费精品高清在线| 久久93精品国产91久久综合| 男人天堂999| 国产欧美一区二区三区鸳鸯浴| 中文字幕永久在线| 日韩在线视频网站| 国产视频一区二| 久艹视频在线免费观看| 91丨国产丨九色丨pron| 潘金莲一级淫片aaaaaa播放| 亚洲香蕉成视频在线观看| 日韩午夜电影免费看| 日本中文字幕一级片| 成人黄色小视频在线观看| 日韩黄色精品视频| 亚洲欧美激情视频| 国产精品黄色片| 国产a级黄色大片| 国产99久久久国产精品免费看| 国产无遮挡又黄又爽在线观看| 日韩精品免费在线播放| 国产电影一区二区三区爱妃记| 亚洲欧美日韩综合一区| 国产麻豆9l精品三级站| 国产精品18p| 在线日韩中文字幕| 玖玖精品一区| av天堂永久资源网| 中文字幕中文字幕在线一区| 午夜精品久久久久久久爽 | 久久亚洲精品毛片| 国产精品tv| 午夜两性免费视频| 亚洲一区免费视频| 国产h在线观看| 超碰97在线播放| 日韩电影网1区2区| 青春草免费视频| 国产一区二区三区视频在线观看| 国产精品一站二站| 成人羞羞国产免费网站| 亚洲精品国产一区二区精华液| 青青青草原在线| 97视频资源在线观看| 久久婷婷av| 久久综合加勒比| 上原亚衣av一区二区三区| 成人高潮视频| 一级黄色片在线免费观看| 日韩欧美国产激情| 毛片大全在线观看| 亚洲成人一区二区三区| 91亚洲午夜精品久久久久久|