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

小程序底層架構剖析

開發 前端
我們先拋出一個問題,在沒有小程序的時候,企業們都在微信里怎么運營? 答案就是小程序的“前身”-公眾號,企業們普遍會把H5網站放在公眾號作為流量轉換的入口。但是h5確實讓公眾號遇到了一些問題。

當我們前端切圖崽網上沖浪的時候,會發現有很多技術文章都在分析vue框架,react框架,顯少有分析小程序框架的。那今天就通過這篇短小精悍的文章帶大家了解一下微信小程序的底層架構。(如無特殊說明,下文中提到的小程序都是微信小程序)

小程序的由來

我們先拋出一個問題,在沒有小程序的時候,企業們都在微信里怎么運營? 答案就是小程序的“前身”-公眾號,企業們普遍會把H5網站放在公眾號作為流量轉換的入口。但是h5確實讓公眾號遇到了一些問題。

首先就是白屏過程,對于一些復雜頁面,受限于設備性能和網絡速度,白屏會更加明顯;再就是缺少操作反饋,比如頁面切換生硬以及點擊所帶來的遲滯感等等;

微信團隊內部通過JS-SDK以及后來的增強JS-SDK已經能夠解決一些問題,但是對于上述問題是JS-SDK所處理不了的,急需一個全新的系統來完成,它需要具備以下能力:

  • 快速加載
  • 更強大的能力
  • 原生的體驗
  • 易用且安全的微信數據開放
  • 高效,簡單的開發

于是,小程序誕生了。

雙線程架構

此處點題一下,本文我們討論的是小程序的底層架構,其實,雙線程架構就是小程序的核心。

圖片

那為什么要設計成雙線程架構呢?首先我們來回顧一下瀏覽器的線程模型,瀏覽器是一個單線程架構,主要原因是js允許訪問操作DOM,因此js線程和渲染線程只能互斥運行。

那小程序又是如何做到雙線程的呢,根本原因就是微信小程序禁止js操作DOM。

使用雙線程架構的優勢一目了然:

  • 提高用戶體驗(ui和邏輯分離,避免頁面長時間阻塞和卡頓)
  • 優化應用性能(運行在不同的線程中,可以同時渲染或者計算)
  • 開發效率更高(解耦和松散耦合)

接下來就帶大家了解一下渲染層以及邏輯層的設計思路。

設計思路-渲染層

標簽實現

小程序使用的是Exparser組件模型,Exparser組件模型與Web Components中的shadow DOM高度相似,微信為什么使用自定義組件框架,而不使用Web Components呢?主要還是出于安全考慮,并且方便管控。既然Exparser組件框架與shadow DOM高度相似,那么我們首先來了解一下shadow DOM。

shadow DOM: Web Components的一個重要屬性是封裝-可以將標記結構、樣式和行為隱藏起來,并與頁面上的其他代碼相隔離,保證不同的部分不會混在一起,可使代碼更加干凈、整潔。其中,shadow DOM接口是關鍵所在,它可以將一個隱藏的,獨立的DOM附加到一個元素上。

圖片

shadow DOM允許將隱藏的DOM樹附加到常規的DOM樹中-它以shadow root節點為起始根節點,在根節點的下方,可以是任意元素,和普通的DOM一樣。

以上解釋來源于MDN,其實shadow DOM并不神秘,像我們非常熟悉的video標簽本質上就是用shadow DOM實現的。我們先打開chrome瀏覽器設置中的“打開用戶代理shadow DOM”,然后再點擊video標簽就能看到。

圖片

創建shadow DOM也非常簡單,直接使用attachShadow方法就可以創建。

var shadow = Element.attachShadow({ mode: 'closed'})

Exparser組件模型:Exparser組件模型參考了shadow DOM并進行了一些修改,像事件系統就是完全復刻的,slot插槽,屬性傳遞等都基本一致。但同時它又具有一些特點:

  • 基于shadow DOM模型:模型上與Web Components的shadow DOM高度相似,但不依賴瀏覽器的原生支持,也沒有其他依賴庫;實現時,還針對性地增加了其他API以支持小程序組件編程;
  • 可在純JS環境中運行:這意味著邏輯層也具有一定的組件樹組織能力;
  • 高效輕量:性能表現好,在組件實例極多的環境下表現尤其優異,同時代碼尺寸也較小;

WXML編譯

了解了小程序的組件系統之后,接下來看看WXML的編譯過程。小程序中的DOM編譯流程與vue類似,也會先將代碼字符串編譯為虛擬DOM,小程序中的虛擬DOM結構如下:WXML最終會被編譯為JS文件,然后插入到渲染層的script標簽中。

圖片

圖片


WXSS動態適配

WXSS是小程序中使用的樣式語言,WXSS具有CSS的大部分特性,同時它對CSS進行了擴充以及修改。

小程序中使用的尺寸單位為rpx(Responsive px),不同于h5中對于px的處理,需要使用postcss進行統一的轉換,小程序底層已經為開發者做好了這層轉換,那具體它是怎么做到的呢?

圖片

我們看它的這段源碼,其實它與阿里的flexible.js方案是類似的,不同的是它做了一個精度收攏的優化,主要是為了解決1px的問題。

WXSS同樣會經過編譯,最終的編譯產物為wxss.js,不同于WXML通過script標簽的形式插入到渲染層,wxss.js則是通過eval的方式注入到渲染層代碼中。

渲染層webview

全局變量: 渲染線程中存在著以下全局變量。

  • webviewId:webview的唯一標識,當用戶打開一個小程序頁面的時候,相當于打開了一個webview,不同的webview用webviewid來區分;
  • wxAppCode:整個頁面的json wxss wxml編譯之后都存儲在這里;
  • Vd_version_info:版本信息;
  • ./dev/wxconfig.js:小程序默認總配置項,包括用戶自定義與系統默認的整合結果。在控制臺輸入__wxConfig可以看出打印結果;
  • ./dev/devtoolsconfig.js:小程序開發者配置,包括navigationBarHeight,標題欄的高度,狀態欄高度,等等,控制臺輸入__devtoolsConfig可以看到其對應的信息;
  • ./dev/deviceinfo.js:設備信息,包含尺寸/像素點pixelRatio;
  • ./dev/jsdebug.js:debug工具;
  • ./dev/WAWebview.js:渲染層底層基礎庫;
  • ./dev/hls.js:優秀的視頻流處理工具;
  • ./dev/WARemoteDebug.js:底層基礎庫調試工具;

那小程序是如何快速啟動一個webview的呢?

我們在打開pages/index/index視圖頁面時,發現DOM中多加載了一個__pageframe__/pageframe.html的視圖層。這個視圖層的作用正是小程序提前為一個新的頁面層準備的。小程序每個視圖層頁面內容都是通過pageframe.html模板來生成的,包括小程序啟動的首頁。

下面來看看小程序為快速打開小程序頁面做的技術優化:

  • 首頁啟動時,即第一次通過pageframe.html生成內容后,后臺服務會緩存pageframe.html模板首次生成的html內容;
  • 非首次新打開頁面時,頁面請求的pageframe.html內容直接走后臺緩存;
  • 非首次新打開頁面時,pageframe.html頁面引入的外鏈js資源走本地緩存; 這樣在后續新打開頁面時,都會走緩存的pageframe的內容,避免重復生成,快速打開一個新頁面。

視圖層打開新頁面的流程

在創建每個視圖層頁面的webview時,都會為其綁定了onLoadCommit事件(它會在頁面加載完成后觸發,包含當前文檔的導航和副框架的文檔加載)。初始時webview的src會被指定為空頁面地址http://127.0.0.1:${global.proxyPort}/aboutblank?${c},其中c為對應webview的id。webview從空頁面到具體頁面視圖的過程如下:

  1. 空頁面地址webview加載完畢后執行事件中的reload方法,即設置webview的src為pageframe地址;
  2. 加載完成后,設置其src為pageframe.html, 新的src內容加載完成后再次觸發onLoadCommit事件但根據條件不會執行reload方法;
  3. pageframe.html頁面在dom ready之后觸發注入并執行具體頁面相關的代碼,此時通過history.pushState方法修改webview的src但是webview并不會發送頁面請求;

設計思路-邏輯層

接下來我們看看小程序在邏輯層都做了哪些事情。

邏輯層與視圖層通信

在小程序中,邏輯層只有一個,但是渲染層有多個,渲染層和邏輯層之間是通過微信客戶端進行橋接通信的。那具體是怎么實現的呢?其實它使用的就是WeixinJSBridge通信機制。

在小程序執行的過程中,微信客戶端分別向渲染層和邏輯層注入WeixinJSBridge,WeixinJSBridge主要提供了以下幾個方法:

  • invoke:調用native API;
  • invokeCallbackHandler:Native 傳遞 invoke 方法回調結果;
  • publish:渲染層用來向邏輯業務層發送消息,也就是說要調用邏輯層的事件方法;
  • subscribe:訂閱邏輯層消息;
  • subscribeHandler:視圖層和邏輯層消息訂閱轉發;
  • setCustomPublishHandler:自定義消息轉發;

渲染層如何向邏輯層通信?

圖片

圖片

渲染層向邏輯層通信的方式就是采用事件系統,以上就是完整的事件系統流程。

開發者在DOM上通過@click綁定事件,WXML文件被編譯的時候,會通過$gwx函數生成虛擬DOM,然后小程序執行的時候渲染層底層基礎庫會對虛擬DOM進行解析,事件綁定最終會以attr屬性的形式生成到虛擬DOM中,所以底層基礎庫通過applyPropeties解析事件并通過addEventListener綁定到相應DOM并聲明回調。

用戶點擊相應DOM時,Exparser組件系統接收到這個事件,然后開始執行回調。回調函數在邏輯層,事件的觸發在渲染層,此時,小程序會通過setData發送數據到邏輯層,這個時候WeixinJSBridge就派上用場了,渲染層調用publish方法發送數據,邏輯層通過registercallback進行監聽,并執行相應的回調。此時,渲染層到邏輯層的通信流程結束。

那邏輯層又是如何將改變后的數據回傳給渲染層的呢?邏輯層改變數據之后,同樣是觸發setData方法,然后渲染層通過subscribe進行監聽,從eventname和觸發事件時候記錄的回調函數來判斷是哪個事件被觸發了,從而獲取動態數據。

第三方小程序框架

WXML,WXSS都是小程序的原生開發語言,使用原生語言開發還是存在諸多限制,尤其是17年小程序剛推出那會。因此,第三方小程序框架應運而生。第三方框架可以分為三大類。

第一類是預編譯框架,預編譯框架就是在執行前就進行編譯。像我司在17年開發“轉轉二手交易網”的時候使用的wepy框架就屬于預編譯框架。預編譯框架也有一些顯而易見的缺點,這類預編譯框架要么是類vue,要么是類React,如果后期vue或者React再出一些新特性的話,預編譯框架就要進行擴展編寫;還有一些兼容問題,對于小程序本身不支持的一些屬性,預編譯框架需要進行兼容;

第二類是半編譯半運行框架,像美團的mpvue就是此類框架,半編譯指的是vue的template需要單獨編譯為wxml,半運行講的是vue整體的特性都會在邏輯層中運行。為了符合小程序的渲染框架,修改了vue的框架;

第三類是運行時框架,像Remax就是運行時框架,它可以使開發者使用完整的React語法來開發小程序。因為小程序框架本身是不支持js直接操作DOM的,那Remax框架是如何解決這個問題的呢?其實它自己復刻了一套操作DOM的API,例如appendChild,innterHtml等,但是它真正操作的并不是dom,而是data中的數據結構。從而達到了操作DOM的目的。使得自己真正成了一個運行時框架;

結語

介紹到這里,小程序的底層框架原理基本已經介紹完了,想跟大家分享的是,小程序確實和h5非常類似,其實它相當于一個借助了native強大功能的加強版h5,小程序并不神秘,除了微信小程序之外,現在各大超級APP都已經推出了自己的小程序,原理應該都大差不差。

本篇文章其實相當于一個學習筆記,作者本身非常想搞清楚微信小程序的架構,但是微信小程序并沒有開源,某次偶然的機會逛掘金的時候看到這篇小冊,就整個學習了一下,在此感謝原作者!

參考

https://juejin.cn/book/6982013809212784676?enter_from=course_center&utm_source=course_center

責任編輯:武曉燕 來源: 大轉轉FE
相關推薦

2022-12-14 15:34:33

架構開發雙線程

2022-10-28 10:23:27

Java多線程底層

2022-11-11 10:48:55

AQS源碼架構

2024-05-16 10:30:54

HiveSQL任務

2021-07-20 10:26:53

源碼底層ArrayList

2017-06-09 10:40:00

微信小程序架構分析

2017-06-09 12:58:20

微信小程序架構分析

2017-06-09 10:06:54

微信小程序架構分析

2021-06-10 10:51:27

程序基礎架構

2012-08-31 09:36:01

CSS

2022-08-03 11:00:20

Linux內核

2022-11-29 11:21:20

單體分層應用架構

2016-09-22 16:48:38

微信程序邏輯分析

2011-06-10 11:05:05

Qt Quick QML

2010-01-07 15:07:34

Ubuntu Anju

2010-03-03 13:56:24

2024-03-12 12:57:07

Redis主從架構

2017-07-05 17:47:17

架構DockerContainer

2021-08-10 18:23:38

架構Flink雙維度

2009-12-07 18:43:29

WCF框架
點贊
收藏

51CTO技術棧公眾號

av在线不卡观看免费观看| 视频二区不卡| 日本一区二区视频在线| 国产精品久久久久7777婷婷| 久久久免费看片| 黄色成人在线观看网站| 一区二区在线观看免费视频播放| 国产女主播一区二区三区| 老熟妇仑乱一区二区av| 一区二区三区网站| 亚洲第一区在线观看| 在线观看的毛片| 国产91足控脚交在线观看| 久久久国产精品不卡| 99高清视频有精品视频| 欧美日韩一级黄色片| 欧美在线91| 国产亚洲精品va在线观看| 日本黄色www| 日韩电影av| 亚洲福利国产精品| 一区二区亚洲欧洲国产日韩| 久久久久久久久久久久国产| a欧美人片人妖| 亚洲日本在线天堂| 欧美亚洲爱爱另类综合| www.久久综合| 奇米影视一区二区三区小说| 97国产精品视频人人做人人爱| 天美传媒免费在线观看| 小说区图片区色综合区| 亚洲另类中文字| 欧美精品中文字幕一区二区| 亚洲AV无码精品色毛片浪潮| 看片网站欧美日韩| 中文一区二区视频| 国产麻豆天美果冻无码视频| 中文在线综合| 欧美一区二区三区影视| 在线观看亚洲色图| se01亚洲视频| 91福利小视频| 国产综合免费视频| av影片在线| 一区二区三区自拍| 亚洲国产精品女人| 成人在线直播| 综合在线观看色| 中文字幕乱码一区二区三区| 国产高清一区在线观看| 久久久久亚洲蜜桃| 国产高清在线一区二区| 亚洲第一天堂影院| 成人看片黄a免费看在线| 91精品天堂| www.色日本| 国产aⅴ精品一区二区三区色成熟| 91丝袜美腿美女视频网站| 亚洲视频在线免费播放| 蜜乳av一区二区| 国产日产欧美a一级在线| 中文字幕久久久久| 久色婷婷小香蕉久久| 成人免费在线视频网站| 国产精品无码免费播放| 国产一二精品视频| 99久久精品久久久久久ai换脸| 精品乱子伦一区二区| 福利一区福利二区| 国内精品久久久久久久果冻传媒| 日韩在线视频第一页| 91美女福利视频| 日韩高清dvd| 在线观看精品一区二区三区| 日韩一区有码在线| 日本免费a视频| 男人av在线播放| 在线免费不卡视频| 亚洲综合伊人久久| 韩国精品福利一区二区三区| 亚洲毛片在线看| 激情高潮到大叫狂喷水| 午夜久久久久| 2020国产精品视频| 人妻中文字幕一区二区三区| 国产在线国偷精品产拍免费yy| 91成人理论电影| 无码国产精品一区二区色情男同 | 成久久久网站| 久久国产视频网站| 久久亚洲天堂网| 久久精品国产久精国产| 国产精品入口免费| av影片免费在线观看| 玉米视频成人免费看| 国产日产欧美视频| 国产精品高清一区二区| 亚洲精品av在线播放| 在线观看亚洲大片短视频| 欧美啪啪一区| 国产精品日韩欧美| 人妻妺妺窝人体色www聚色窝| 国产女主播视频一区二区| www.69av| 88xx成人网| 欧美精品一区二区三| 亚洲一级片在线播放| 亚洲经典在线| 91在线观看免费高清| 欧美套图亚洲一区| 亚洲精品乱码久久久久久| 国产精品无码一本二本三本色| 日本一区二区三区视频在线看| 亚洲色图美腿丝袜| 久久免费视频精品| 蜜臂av日日欢夜夜爽一区| 精品国产一区二区三区四区精华| 麻豆视频在线观看免费| 欧美性猛交xxxx偷拍洗澡| 18深夜在线观看免费视频| 日韩精品网站| 日本最新高清不卡中文字幕| 成人久久久精品国产乱码一区二区| 欧美激情中文不卡| 欧美日韩在线中文| 国产欧美三级电影| 色综合久久88| av在线资源观看| 国产精品久久久久久久浪潮网站| 成人一级片网站| 秋霞综合在线视频| 高清欧美性猛交xxxx| 国产后入清纯学生妹| 国产精品美女久久久久久| 国产精品亚洲a| 啪啪国产精品| 538国产精品一区二区在线| 免费a视频在线观看| 一区二区三区四区五区视频在线观看 | 一本色道久久| 国产伦精品一区二区三| 视频在线观看入口黄最新永久免费国产| 欧美三级日本三级少妇99| 亚洲精品国产91| 日韩成人午夜精品| 亚洲精品中字| 日韩毛片网站| 美女国内精品自产拍在线播放| 国产精品久久久久久无人区| 中文字幕日韩欧美一区二区三区| 亚洲一级片网站| 欧美激情电影| 91视频九色网站| 人妖欧美1区| 亚洲福利视频在线| 日本免费一二三区| 91视频国产观看| 粗暴91大变态调教| 精品一区二区三区中文字幕老牛| 国产精品国产福利国产秒拍| 亚洲欧美视频一区二区| 欧美伦理视频网站| 欧美三级小视频| aaa国产一区| 精品久久久久久久无码| 97精品国产福利一区二区三区| 91精品啪aⅴ在线观看国产| av网址在线播放| 精品国产污污免费网站入口 | 欧美日韩高清免费| 成人精品国产亚洲| 欧美精品免费在线观看| 秋霞av鲁丝片一区二区| 欧美午夜电影在线| 四虎影视一区二区| 福利视频网站一区二区三区| 各处沟厕大尺度偷拍女厕嘘嘘| 欧美亚洲国产激情| 亚洲www永久成人夜色| 狠狠躁少妇一区二区三区| 一区二区三区视频免费| 99国产精品久久久久99打野战| 亚洲成人久久影院| 亚洲精品成人av久久| 国产一区二区美女诱惑| 欧美极品欧美精品欧美| 日本久久一二三四| 国产精品免费视频一区二区| 成人做爰视频www| 欧美日本中文字幕| 户外极限露出调教在线视频| 日韩欧美亚洲一区二区| 欧美日韩一级黄色片| 亚洲精品国产精华液| a级在线观看视频| 国产精品12区| 国产av人人夜夜澡人人爽| 欧美久久九九| 手机成人在线| 国产一区二区三区亚洲| 国产欧美亚洲视频| 亚洲精品永久免费视频| 欧美成人精品在线观看| 国产一二在线观看| 精品处破学生在线二十三| 伊人网视频在线| 欧美色播在线播放| 破处女黄色一级片| 国产色综合一区| 亚洲 欧美 日韩在线| 久久99国产精品久久99| 亚洲性生活网站| 亚洲精品日本| 欧美日韩一区二区三区电影| 教室别恋欧美无删减版| 国产在线精品一区二区三区》| 国产人与zoxxxx另类91| 国产精品色悠悠| 伊人久久av| 97av在线视频| 国产99久一区二区三区a片| 色婷婷av一区二区三区gif| 久草福利资源在线观看| 国产精品免费观看视频| 中文字幕免费视频| 99久久精品国产一区| 欧美性猛交乱大交| 免费观看30秒视频久久| 农村妇女精品一二区| 亚洲精品影视| 欧美午夜性视频| 在线观看一区视频| 久久久久久久香蕉| 欧美成人一品| 中文字幕av久久| 婷婷精品进入| 人人妻人人澡人人爽精品欧美一区 | 4438x成人网最大色成网站| 亚洲成人第一网站| 欧美午夜美女看片| 国产九色在线播放九色| 午夜电影久久久| 日韩精品在线免费看| 午夜久久电影网| 亚洲精品午夜久久久久久久| 一区二区成人在线视频| 久久亚洲成人av| 亚洲高清免费观看| 国产成人亚洲精品自产在线 | 欧美猛交ⅹxxx乱大交视频| 国产二区三区在线| 萌白酱国产一区二区| а天堂中文在线官网| 欧美成人精品一区| 男男gaygays亚洲| 久久全国免费视频| 日本黄色免费在线| 青草青草久热精品视频在线观看| 中文字幕在线视频网站| 国产精品9999| 亚洲三级在线| 99在线高清视频在线播放| 国产精品网站在线看| 久久国产精品一区二区三区| 国产精品亚洲人成在99www| 亚洲成人av动漫| 一区二区日韩欧美| 可以看毛片的网址| 欧美专区在线| 午夜啪啪小视频| 国产jizzjizz一区二区| 国产又黄又粗又猛又爽的视频| 久久综合九色综合久久久精品综合| 一区二区三区伦理片| 亚洲色欲色欲www在线观看| 免费中文字幕在线观看| 黑丝美女久久久| 亚洲天堂中文网| 亚洲精品一线二线三线无人区| 青青草超碰在线| 日韩中文字幕在线观看| a毛片不卡免费看片| 欧美主播福利视频| 小说区图片区亚洲| 精品视频一区二区| 日韩精品久久| 久久综合色视频| 精品夜夜嗨av一区二区三区| 国产精品久久久久久久无码| 中文字幕精品综合| 国产在线拍揄自揄拍无码视频| 91国内精品野花午夜精品| 国产精品自拍电影| 国产视频欧美视频| 国产1区在线| 日韩女在线观看| 日韩免费高清视频网站| 秋霞在线观看一区二区三区| 午夜久久黄色| 在线观看国产中文字幕| 不卡av在线免费观看| 国产3级在线观看| 日韩欧美国产激情| 丰满少妇高潮在线观看| 日韩在线中文字幕| 手机在线理论片| 亚洲一区二区中文| sdde在线播放一区二区| 国产男女免费视频| 国产一区二区毛片| 天堂а√在线中文在线鲁大师| 天天av天天翘天天综合网| av男人天堂网| 色悠悠久久88| 欧美18av| 久久国产精品高清| 在线观看不卡| 中文字幕第六页| 中文字幕一区二区三中文字幕| 国产又黄又猛又粗又爽| 亚洲成年人影院在线| 在线看一级片| 国产一区欧美二区三区| 精品国产中文字幕第一页| 日韩中文字幕在线视频观看| a亚洲天堂av| 久久久久亚洲av成人片| 日韩限制级电影在线观看| 麻豆传媒视频在线| 国产精品无码专区在线观看 | 国产精品一二三在线观看| 美女诱惑一区二区| 国产亚洲精品熟女国产成人| 欧美性videos高清精品| 天天摸天天干天天操| 久久久久久美女| 国产精品网在线观看| 亚洲国产成人精品无码区99| 国产成都精品91一区二区三| 成年人一级黄色片| 91精品国产福利在线观看| 欧美激情午夜| 成人啪啪免费看| 91精品亚洲| 午夜性福利视频| 亚洲一区二三区| 亚洲精品国产suv一区| 欧美激情奇米色| 欧美变态网站| 亚洲精品中文字幕无码蜜桃| 国产丝袜欧美中文另类| 国产精品成人久久久| 自拍偷拍亚洲精品| 在线视频成人| 国产精品自拍合集| av影院午夜一区| 波多野结衣在线观看视频| 国产一区二区三区视频在线观看 | 高清一区二区三区视频| 影音先锋亚洲精品| 亚洲天堂成人av| 91福利国产成人精品照片| 成年在线电影| 92看片淫黄大片欧美看国产片| 欧美精品综合| 女尊高h男高潮呻吟| 91高清视频在线| www免费在线观看| 韩日午夜在线资源一区二区| 久久一区亚洲| 日本一级二级视频| 亚洲精品av在线| 欧美一级免费| 精品丰满人妻无套内射| 久久久久久久久久久黄色| 亚洲在线免费观看视频| 欧美精品九九久久| 国产精品欧美日韩一区| 91免费视频污| 欧美日韩另类视频| 欧美三级理伦电影| 国产一区二区三区奇米久涩| 老**午夜毛片一区二区三区| 在线观看亚洲网站| 亚洲国产欧美一区| 国产精品麻豆成人av电影艾秋| wwwwww欧美| 欧美高清在线一区| 蜜桃av中文字幕| 国产精品久久久| 亚洲人成毛片在线播放女女| 超碰人人人人人人人| 亚洲国产成人久久综合| 国产亚洲精品精品国产亚洲综合| 日韩一区二区高清视频| 国产日本亚洲高清| 亚洲免费国产视频| 国产主播精品在线| 美女精品在线观看| 欧美日韩国产精品综合|