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

談談我這些年對前端框架的理解

開發 前端
現在前端入門也不會再學物理層的操作 dom 的 jquery 了,而是直接從 vue、react 這種邏輯層的前端框架開始。

最早的時候頁面是服務端渲染的,也就是 PHP、JSP 那些技術,服務端通過模版引擎填充數據,返回生成的 html,交給瀏覽器渲染。那時候表單會同步提交,服務端返回結果頁面的 html。

后來瀏覽器有了 ajax 技術,可以異步的請求,服務端返回 xml 或者 json。ajax 最早是基于 xml 的,這也是它名字的由來。因為 xml 多了很多沒必要的標簽,內容比較多,所以后來 json 流行開來。

網頁和服務端的數據交互變成了異步的,可以服務端返回 json 數據,瀏覽器里拼接 html,之后渲染(瀏覽器里面生成 dom 就等同于渲染)。頁面基本沒啥刷新的必要了,于是后來就逐漸演變出了單頁應用 SPA(single page application)。

早期開發頁面的時候就是基于瀏覽器的 dom api 操作 dom 來做渲染和交互,但是 dom api 比較啰嗦,而且當時瀏覽器的兼容性問題也比較麻煩,不同瀏覽器有不同的寫法。

為了簡化 dom 操作和更方便的兼容各種瀏覽器,出現了 jquery 并且迅速流行開來,那個時代 jquery 是如日中天的。

我一直習慣把網頁分為物理層和邏輯層,dom 就算是物理層,jquery 是操作 dom 的一系列工具函數,也是工作在物理層。

網頁做的事情基本就是拿到數據渲染 dom,并且數據改變之后更新 dom,這個流程是通用的,后來逐漸出現了 mvvm 框架,來自動把數據的變更映射到 dom,不再需要手動操作 dom。也就是 vue、react 等現代的前端框架。我把這一層叫做邏輯層。

前端框架除了提供了數據驅動視圖變化的功能以外,還支持了 dom 的邏輯劃分,可以把一部分 dom 封裝成組件,組件和組件之間相互組合,構成整個界面。物理層依然是 dom,只是實現了數據到 dom 的自動映射之后,我們只需要在邏輯層寫組件就可以了。

現在前端入門也不會再學物理層的操作 dom 的 jquery 了,而是直接從 vue、react 這種邏輯層的前端框架開始。

但是也不是說完全不需要 jquery,前端框架主要解決的是數據到 dom 的綁定,可以變化以后自動更新 dom。如果不需要更新,那么直接操作 dom 即可,比如各種活動頁,沒啥數據更新,用 jquery 操作 dom 還是很方便。

前端框架是 UI = f(state) 這種聲明式的思想,只需要聲明組件的視圖、組件的狀態數據、組件之間的依賴關系,那么狀態改變就會自動的更新 dom。而 jquery 那種直接操作 dom 的工具函數庫則是命令式的。

對于視圖的描述這件事 react 和 vue 用了不同的方案,react 是給 js 擴展了 jsx 的語法,由 babel 實現,可以在描述視圖的時候直接用 js 來寫邏輯,沒啥新語法。

而 vue 是實現了一套 template 的 DSL,引入了插值、指令、過濾器等模版語法,相對于 jsx 來說更簡潔,template 的編譯器由 vue 實現。

vue template 是受限制的,只能訪問 data,prop、method,可以靜態的分析和優化,而 react 的 jsx 因為直接是 js 的語法,動態邏輯比較多,沒法靜態的做分析和優化。

但是 vue template 也不全是好處,因為和 js 上下文割裂開來,引入 typescript 做類型推導的時候就比較困難,需要單獨把所有 prop、method、data 的類型聲明一遍才行。而 react 的 jsx 本來就是和 js 同一個上下文,結合 typescript 就很自然。

所以 vue template 和 react jsx 各有優缺點。

前端框架都是數據驅動視圖變化的,而這個數據分散在每個組件中,怎么在數據變化以后更新 dom 呢?

數據變化的檢測基本只有三種方式:watch、臟檢查、不檢查。

vue 就是基于數據的 watch 的,組件級別通過 Object.defineProperty 監聽對象屬性的變化,重寫數組的 api 監聽數組元素的變化,之后進行 dom 的更新。

angular 則是基于臟檢查,在每個可能改變數據的邏輯之后都對比下數據是否變了,變了的話就去更新 dom。

react 則是不檢查,不檢查難道每次都渲染全部的 dom 么?也不是,不檢查是因為不直接渲染到 dom,而是中間加了一層虛擬 dom,每次都渲染成這個虛擬 dom,然后 diff 下渲染出的虛擬 dom 是否變了,變了的話就去更新對應的 dom。

這就是前端框架的數據驅動視圖變化的三種思路。

vue 是組件級別的數據 watch,當組件內部監聽數據變化的地方特別多的時候,一次更新可能計算量特別大,計算量大了就可能會導致丟幀,也就是渲染的卡頓。所以 vue 的優化方式就是把大組件拆成小組件,這樣每個數據就不會有太多的 watcher 了。

react 并不監聽數據的變化,而是渲染出整個虛擬 dom,然后 diff。基于這種方案的優化方式就是對于不需要重新生成 vdom 的組件,通過 shouldComponentUpdate 來跳過渲染。

但是當應用的組件樹特別大的時候,只是 shouldComponentUpdate 跳過部分組件渲染,依然可能計算量特別大。計算量大了同樣可能導致渲染的卡頓,怎么辦呢?

樹的遍歷有深度優先和廣度優先兩種方式,組件樹的渲染就是深度優先的,一般是通過遞歸來做,但是如果能通過鏈表記錄下路徑,就可以變成循環。

變成了循環,那么就可以按照時間片分段,讓 vdom 的生成不再阻塞頁面渲染,這就像操作系統對多個進程的分時調度一樣。

這個通過把組件樹改成鏈表,把 vdom 的生成從遞歸改循環的功能就是 react fiber。

fiber 節點相對于之前的組件節點來說,沒有了 parent、children 這種屬性,多了 child、sibling、return 屬性。

通過 fiber 鏈表樹,優化了渲染的性能。

可以看到 vue 的性能優化和 react 的性能優化是不一樣的:

vue 是組件級別的數據監聽的方案,問題可能出現在一個屬性太多 watcher 的時候,所以優化思路就是大組件拆分成小組件,保證每個屬性不要有太多 watcher。

react 不監聽、不檢查數據變化,每次都渲染生成 vdom,然后進行 vdom 的對比,那么優化的思路就是 shouldComponentUpdate 來跳過部分組件的 render,而且 react 內部也做了組件樹的鏈表化(fiber)來把遞歸改成可打斷的渲染,按照時間片來逐漸生成整個 vdom。

組件之間難免要有邏輯的復用,react 和 vue 有不同的方案:

vue 的組件是 option 對象的方式,那么邏輯復用方式很自然可以想到通過對象屬性的 mixin,vue2 的組件內邏輯復用方案就是 mixin,但是 mixin 很難區分混入的屬性、方法的來源,比較亂,代碼維護性差。但也沒有更好的方案。

react 剛開始也是支持 mixin 的,但后來廢棄了。

react 的組件是 class 和 function 兩種形式,那么類似高階函數的高階組件(high order component)的方式就比較自然,也就是組件套組件,在父組件里面執行一部分邏輯,然后渲染子組件。

除了多加一層組件的 HOC 方式以外,沒有邏輯的部分可以直接把那部分 jsx 作為 props 傳入另一個組件來復用,也就是 render props。

HOC 和 render props 是 react 的 class 組件支持的兩種邏輯復用方案。

最開始的 function 組件是沒有狀態的,只是作為 class 組件渲染的輔助而存在。

但是 HOC 的邏輯復用方式最終導致了組件嵌套太深,而且 class 內部生命周期比較多,邏輯都放在一起導致了組件比較大。

怎么解決 class 組件嵌套深和組件大的問題呢?而且還不能引入破壞性的更新,不然下場可能會很慘。

于是 react 團隊就瞅準了 function 組件,能不能在 function 組件里面也支持 state,通過擴展一些 api 的方式來支持,也不是破壞性的更新。

function 組件要支持 state,那 state 存在哪里呢?

class 組件節點有 state,變成 fiber 節點之后依然有,function 組件本來就沒有 state,那么 fiber 節點中同樣也沒有。

那在 function 組件的 fiber 節點中加入 state 不就行了?

于是 react 就在 function 組件的 fiber 節點中加入了 memorizedState 屬性用來存儲數據,然后在 function 組件里面通過 api 來使用這些數據,這些 api 被叫做 hooks api。

因為是使用 fiber 節點上的數據,就把 api 命名為了 useXxx。

每個 hooks api 都要有自己存放數據的地方,怎么組織呢?有兩種方案,一種是 map,一種是數組。

用 map 的話那么要 hooks api 要指定 key,按照 key 來存取 fiber 節點中的數據。

用數組的話順序不能變,所以 hooks api 不能出現在 if 等邏輯塊中,只能在頂層。

為了簡化使用, hooks 最終使用了數組的方式。當然,實現起來用的是鏈表。

每個 hooks api 取對應的 fiber.memoriedState 中的數據來用。

hooks api 可以分為 3 類:

第一類是數據類的:

  • useState:在 fiber.memoriedState 的對應元素中存放數據
  • useMemo:在 fiber.memoriedState 的對應元素中存放數據,值是緩存的函數計算的結果,在 state 變化后重新計算值
  • useCallback:在 fiber.memoriedState 的對應元素中存放數據,值是函數,在 state 變化后重新執行函數,是 useMemo 在值為函數的場景下的簡化 api,比如 useCallback(fn, [a,b]) 相當于 useMemo(() => fn, [a, b])
  • useReducer:在 fiber.memoriedState 的對應元素中存放數據,值為 reducer 返回的結果,可以通過 action 來觸發值的變更
  • useRef:在 fiber.memoriedState 的對應元素中存放數據,值為 {current: 具體值} 的形式,因為對象不變,只是 current 屬性變了,所以不會修改。

useState 是存儲值最簡單的方式,useMemo 是基于 state 執行函數并且緩存結果,相當于 vue 的 getter,useCallback 是一種針對值為函數的情況的簡化,useReducer 是通過 action 來觸發值的修改。useRef 包了一層對象,每次對比都是同一個,所以可以放一些不變的數據。

不管形式怎么樣,這些 hooks 的 api 的作用都是返回值的。

第二類是邏輯類的:

  • useEffect:異步執行函數,當依賴 state 變化之后會再次執行,當組件銷毀的時候會調用返回的清理函數
  • useLayoutEffect:在渲染完成后同步執行函數,可以拿到 dom

這兩個 hooks api 都是用于執行邏輯的,不需要等渲染完的邏輯都可以放到 useEffect 里。

第三類是 ref 轉發專用的:

數據可以通過各種方案共享,但是 dom 元素這種就得通過 ref 轉發了,所謂的 ref 轉發就是在父組件創建 ref,然后子組件把元素傳過去。傳過去之前想做一些修改,就可以用 useImperativeHandle 來改。

通過這 3 類 hooks api,以及之后會添加的更多 hooks api ,函數組件里面也能做 state 的存儲,也能在一些階段執行一段邏輯,是可以替代 class 組件的方案了。

而且更重要的是,hooks api 是傳遞參數的函數調用的形式,可以對 hooks api 進一步封裝成功能更強大的函數,也就是自定義 hooks。通過這種方式就可以做跨組件的邏輯復用了。

再回頭看一下最開始要解決的 class 組件嵌套過深和組件太大的問題,通過 hooks 都能解決:

  • 邏輯擴展不需要嵌套 hoc 了,多調用一個自定義的 hooks 就行
  • 組件的邏輯也不用都寫在 class 里了,完全可以抽離成不同的 hooks

react 通過 function 組件的 hooks api 解決了 class 組件的邏輯復用方案的問題。(fiber 是解決性能問題的,而 hooks 是解決邏輯復用問題的)

vue2 中是通過 mixin 的方式來復用邏輯的,也有組件太大的問題,在 vue3 中也可以通過類似的思路來解決。

為了體驗和原生更接近,現在基本都是不刷新頁面的單頁應用,都是從服務端取數據然后驅動 dom 變化的 瀏覽器渲染(csr)方案。但對于一些低端機,仍然需要服務端渲染(ssr)的方案。

但不能回到 jsp、php 時代的那種模版引擎服務端渲染了,而是要基于同一個組件樹,把它渲染成字符串。服務端渲染和瀏覽器渲染都用同樣的組件代碼,這就是同構的方案。

技術從出現到完善到連帶的周邊生態的完善是一個輪回,從最開始服務端渲染,到了后來的客戶端渲染,然后出現了邏輯層的組件方案,最后又要基于組件方案重新實現服務端渲染。

其實物理層的東西一直都沒變,只是邏輯層不斷的一層添加又一層,目的都是為了提高生產效率,降低開發成本,保證質量,這也是技術發展的趨勢。

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2021-09-12 22:22:15

前端

2013-07-26 15:29:56

項目管理

2014-08-06 14:13:30

Windows Pho

2017-06-02 09:47:29

網絡分層協議

2012-08-31 17:13:16

SuSE

2022-01-04 20:52:50

函數異步Promise

2015-02-13 15:00:48

騰訊15年

2012-03-14 15:34:14

PaaS

2023-11-28 12:25:02

多線程安全

2022-06-30 09:10:33

NoSQLHBaseRedis

2022-08-23 12:21:50

Linux命令

2022-05-07 23:54:59

windows操作系統應用軟件

2020-09-02 07:04:03

TS TypeScriptwindow

2014-11-03 10:49:43

程序員技術

2012-02-27 15:56:14

javascript

2022-09-19 07:57:59

云服務互聯網基礎設施

2024-09-20 05:46:00

2024-09-11 16:49:55

2024-06-13 08:01:19

2017-12-25 16:31:33

前端程序員
點贊
收藏

51CTO技術棧公眾號

国产sm调教视频| 黄色影视在线观看| 日韩欧美在线观看免费| 欧美理论视频| 制服丝袜国产精品| 国产真人做爰毛片视频直播| 免费福利在线观看| 精品一区二区成人精品| 97国产精品视频人人做人人爱| 一区二区三区四区免费| 国产亚洲观看| 一本一道久久a久久精品综合蜜臀| 一区二区三区的久久的视频| 亚洲精品无amm毛片| 亚洲综合电影一区二区三区| 久久精品视频在线| aaaaaav| 999精品嫩草久久久久久99| 婷婷亚洲久悠悠色悠在线播放| 亚洲a∨一区二区三区| 国产成人手机在线| 老鸭窝一区二区久久精品| 97超碰国产精品女人人人爽| av在线免费播放网址| 欧美韩一区二区| 777久久久精品| 国产综合免费视频| 性欧美video高清bbw| 国产农村妇女毛片精品久久麻豆| 不卡一卡2卡3卡4卡精品在| 中文字幕网址在线| 亚洲综合三区| 欧美激情高清视频| 午夜激情福利电影| 精品一区二区三区的国产在线观看| 日韩欧美在线影院| 天天操狠狠操夜夜操| 桃花岛成人影院| 性欧美大战久久久久久久久| 免费成人深夜夜行网站视频| av影片免费在线观看| 97久久精品人人做人人爽50路| 91久久精品国产91性色| 最新中文字幕在线观看视频| 国产精品试看| 97精品免费视频| 国产福利久久久| 一区二区三区四区日韩| 日韩视频精品在线| 免费91在线观看| 俺要去色综合狠狠| 亚洲视频第一页| av黄色免费网站| 窝窝社区一区二区| 日韩精品久久久久久福利| 精品久久久久一区二区| 成人精品动漫一区二区三区| 日韩女优电影在线观看| 中文字幕一二三| 久久综合给合| 日韩欧美在线不卡| 宇都宫紫苑在线播放| 精品视频一区二区三区| 欧美一区二视频| 粗大的内捧猛烈进出视频| 欧美电影在线观看一区| 欧美va亚洲va| 亚洲欧美日韩色| 精品少妇一区| 精品亚洲永久免费精品| 魔女鞋交玉足榨精调教| 欧美丝袜激情| 色av中文字幕一区| 国产免费一区二区三区四区| 欧美a级片网站| 性欧美长视频免费观看不卡| 在线免费黄色av| 日本亚洲视频在线| 成人精品视频久久久久| 亚洲产国偷v产偷v自拍涩爱| 波多野结衣精品在线| 欧美极品一区二区| 伊人免费在线| 亚洲国产欧美一区二区三区丁香婷 | 欧美高清69hd| 韩国精品久久久| 春色成人在线视频| 深夜福利在线视频| 国产精品网友自拍| www国产无套内射com| 黑森林国产精品av| 欧美视频你懂的| 亚洲熟女一区二区三区| 猛男gaygay欧美视频| 久久精品国产成人| 亚洲国产精品午夜在线观看| 爽好久久久欧美精品| 91九色在线视频| 日韩精品视频无播放器在线看 | 日本一区二区在线| 成人免费观看视频大全| 欧美日韩国产中文字幕| 国产欧美一区二| 日韩黄色网络| 久久精品国产欧美亚洲人人爽| 日韩欧美亚洲一区二区三区| 免费视频最近日韩| 国产一区二区在线观看免费播放| 高清福利在线观看| 性做久久久久久| 亚洲一二区在线观看| 九一精品国产| 欧美日本国产在线| 性色av一区二区三区四区| 不卡影院免费观看| 精品少妇人妻av一区二区| 黑人巨大精品欧美一区二区桃花岛| 91精品国产色综合久久ai换脸| 成年人免费观看视频网站| 国产综合精品| 91丝袜美腿美女视频网站| 欧美男男同志| 亚欧色一区w666天堂| 久久久久亚洲av无码麻豆| 成人av动漫在线观看| 久久久亚洲网站| 国产日本精品视频| 中文字幕欧美激情一区| 欧美日韩在线视频一区二区三区| 我要色综合中文字幕| 中文字幕亚洲自拍| 无码人妻精品一区二区三区蜜桃91| 丁香另类激情小说| 黄色a级在线观看| 国产亚洲人成a在线v网站| 亚洲欧洲中文天堂| 在线观看日本视频| 99久久综合99久久综合网站| 久久久久久久免费视频| 日韩专区视频网站| 在线丨暗呦小u女国产精品| 日韩欧美成人一区二区三区| jvid福利写真一区二区三区| 国产一线二线三线女| 天堂av一区| 欧美黄色三级网站| www.av日韩| 亚洲自拍另类综合| 特黄特色免费视频| 欧美日本免费| 粉嫩av一区二区三区免费观看 | 奇米一区二区三区四区久久| 欧美一级做性受免费大片免费| 一区二区免费在线| jjzz黄色片| 亚洲国产导航| 国产伦精品一区二区三区照片91 | 日韩成人精品一区| 国产成人涩涩涩视频在线观看| 三区在线视频| 一本久久精品一区二区| 久久只有这里有精品| 另类av一区二区| 日产精品一线二线三线芒果| 欧美色片在线观看| 在线观看日韩av| 国产精品久久久久久久久久久久久久久久久久 | 欧洲不卡av| 欧美日韩www| www欧美com| 成人综合婷婷国产精品久久蜜臀| 黄色一级片黄色| 日本成人7777| 国产成人一区二| 午夜在线小视频| 日韩女优制服丝袜电影| 亚洲精品午夜国产va久久成人| 久久久夜色精品亚洲| 欧美三级午夜理伦三级富婆| 亚洲综合婷婷| 久久精品欧美| 欧美性suv| xvideos成人免费中文版| 亚洲第一成人av| 欧美性猛交xxxxx免费看| 色综合99久久久无码国产精品| 久久国内精品自在自线400部| 国产日产欧美一区二区| 国产亚洲成av人片在线观黄桃| 国产成人精品av在线| 黄色av网站在线播放| 亚洲激情视频在线播放| 国语对白做受69按摩| 一区二区三区在线观看网站| 中出视频在线观看| 久久国产精品露脸对白| 男人添女人下面高潮视频| 日本黄色精品| 精品麻豆av| 青青国产精品| 性欧美长视频免费观看不卡| 日本美女在线中文版| 精品国产91亚洲一区二区三区婷婷| 国产性生活视频| 亚洲激情图片小说视频| 一级黄色片网址| 成人小视频免费观看| 日本中文字幕精品—区二区| 在线成人黄色| 在线成人性视频| 亚洲激情播播| 91福利视频导航| 色猫猫成人app| 78色国产精品| 欧美aaaaaaa| 色偷偷av一区二区三区乱| 性插视频在线观看| 日韩欧美亚洲国产精品字幕久久久 | 91精品亚洲| 三级三级久久三级久久18| 91在线一区| 91久久在线播放| 日本中文字幕一区二区| 69av成年福利视频| 欧美aaaaaaa| 欧美成人精品三级在线观看| www.在线播放| 亚洲欧美国产日韩中文字幕| 人妻精品一区一区三区蜜桃91| 欧美人牲a欧美精品| 99精品人妻国产毛片| 精品久久久久久亚洲精品| 久久免费在线观看视频| 亚洲色图制服丝袜| 日本不卡一区视频| 中文字幕欧美三区| 国产精品一二三区在线观看| 91丨九色丨蝌蚪丨老版| 国产黑丝一区二区| 丁香一区二区三区| 下面一进一出好爽视频| 国产一区二区三区四区五区入口| 女同激情久久av久久| 美腿丝袜在线亚洲一区 | 一区二区三区免费高清视频| 亚洲精选视频在线| 日韩精品一区二区亚洲av性色| 国产精品色哟哟网站| 美女av免费看| 中文字幕制服丝袜一区二区三区| 懂色av粉嫩av浪潮av| 国产精品色呦呦| 在线观看黄网址| 亚洲免费大片在线观看| 国产精品久久久久久久精| 亚洲免费观看在线观看| 玖玖爱免费视频| 亚洲一区二区美女| 日韩欧美亚洲一区二区三区| 欧美日韩一区二区免费视频| 青草视频在线观看免费| 日韩欧美在线网址| 日本成人一级片| 欧美日韩视频在线一区二区| 一级黄色片在线看| 欧美一区二区成人| 丰满少妇高潮在线观看| 亚洲精品国产精品乱码不99按摩 | 最近2019中文字幕在线高清| 好吊日视频在线观看| 欧美大成色www永久网站婷| 欧美videosex性欧美黑吊| 91av在线免费观看视频| 成人做爰视频www网站小优视频| 国产精品福利无圣光在线一区| 色综合天天色| 91在线无精精品一区二区| 999国产精品一区| 欧美日韩精品一区| 久久精品国产大片免费观看| 亚洲精品国产suv一区88| 性xx色xx综合久久久xx| 日韩中文字幕a| 成人激情小说网站| www.狠狠爱| 亚洲乱码国产乱码精品精可以看 | 亚洲综合另类| 亚洲一区精品视频在线观看| 国产成a人亚洲| 亚洲av网址在线| 国产精品国产三级国产普通话三级| 国内偷拍精品视频| 欧美日韩国产限制| 国产欧美熟妇另类久久久| 亚洲丁香婷深爱综合| 丁香在线视频| 欧美极品少妇xxxxⅹ喷水| 影音成人av| 国产三级精品在线不卡| 日产精品一区二区| 国产人妻777人伦精品hd| 奇米影视7777精品一区二区| 日本人妻一区二区三区| 国产欧美日韩久久| 国产精品二区一区二区aⅴ| 欧美色图一区二区三区| 色婷婷激情五月| 久久精品久久久久| 成人做爰视频www网站小优视频| 波多野结衣久草一区| 日韩精品看片| 久久精品免费一区二区| 国产精品一区在线观看乱码| 久久久亚洲av波多野结衣| 亚洲综合在线第一页| 中文字幕第315页| 国产午夜精品理论片a级探花| h片在线观看网站| 国产精品久久久久国产a级| 精品淫伦v久久水蜜桃| 中文字幕黄色大片| 日韩和的一区二区| 在线精品一区二区三区| 亚洲一区二区三区在线| 91禁在线观看| 国产亚洲视频在线| 在线日韩影院| 国内一区二区在线视频观看| 欧美福利在线| 亚洲五月激情网| **网站欧美大片在线观看| 中文字幕天堂在线| 亚洲精品一二区| 男人av在线播放| 国产精品久久久久久久天堂第1集| 图片区亚洲欧美小说区| 男人的天堂日韩| 26uuu亚洲| 国产精品xxxx喷水欧美| 精品国产乱码久久久久久久久| 在线看女人毛片| 亚洲影影院av| 一区二区三区在线电影| 日韩a一级欧美一级| 亚洲视频精选在线| 国产精品久久久国产盗摄| 久久精品在线视频| 亚洲一区有码| av中文字幕av| 国产成人免费av在线| 九九热视频精品| 精品少妇一区二区三区免费观看 | 国产伦理在线观看| 一区二区三区中文字幕电影| 99在线观看免费| 欧美高清第一页| 国产精品毛片视频| 人妻久久久一区二区三区| 99精品国产99久久久久久白柏| 国产女同在线观看| 亚洲欧美国产日韩中文字幕| 88xx成人网| 伊人久久av导航| 国产福利精品一区二区| 精品少妇爆乳无码av无码专区| 欧美精品一区二区高清在线观看| 国模精品视频| 日韩国产一区久久| 美腿丝袜亚洲三区| 五月天婷婷色综合| 亚洲成人中文字幕| 欧美电影免费观看网站| 在线观看欧美一区| 国产成人午夜精品5599| 久久国产视频播放| 在线观看欧美www| 日本一区二区三区播放| 欧美 日韩 激情| 国产欧美一二三区| 国产人妖一区二区| 欧美一区二区三区四区在线| 欧美一区二区三区高清视频| 91日韩精品视频| 亚洲第一综合色| 国内精品在线视频| 91美女福利视频高清| 亚洲美女毛片| 日本一区二区视频在线播放| 日韩欧美一级二级三级久久久| 亚洲欧洲高清| 日本黄色播放器| 99精品国产热久久91蜜凸| 92久久精品一区二区| 97在线看福利| 小处雏高清一区二区三区| 香港三级日本三级| 欧美精品一二三四| 一二三四视频在线中文| 91麻豆天美传媒在线| 国产亚洲一区字幕|