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

日韩网红少妇无码视频香港| 国产欧美激情视频| 头脑特工队2在线播放| 中文欧美日韩| 色天天综合狠狠色| 成人啪啪18免费游戏链接| 波多野结衣视频一区二区| 久久蜜桃av一区二区天堂| 国产精品入口日韩视频大尺度| 黄色录像二级片| 红杏成人性视频免费看| 欧美调教femdomvk| 欧美视频在线观看视频| 在线观看免费黄视频| 成人网男人的天堂| 国产精品流白浆视频| 国产午夜精品一区二区理论影院| 精品国产aⅴ| 日韩精品一区二区三区在线 | www.51色.com| h片在线观看下载| 国产精品久久久久毛片软件| 国产一区二区视频在线免费观看 | 91九色国产在线播放| 欧美经典一区二区三区| 国产在线视频欧美一区二区三区| 夜夜狠狠擅视频| 午夜亚洲视频| 欧美精品福利视频| 一区二区三区影视| 国产伦一区二区三区| 精品av久久707| 三级av免费看| 亚洲精品66| 欧美在线不卡视频| 欧美性久久久久| 成人看片免费| 国产精品久久久久久久浪潮网站| 国产午夜精品在线| av中文字幕观看| 久久国产视频网| 国产精品678| 久久露脸国语精品国产91| 牛牛国产精品| 久久精品国产亚洲精品2020| 人妻少妇无码精品视频区| 国产欧美啪啪| 亚洲成色777777在线观看影院 | 成人午夜碰碰视频| 3d精品h动漫啪啪一区二区| 一级特黄aaa大片| 日韩电影一区二区三区| 国产激情久久久久| 无码人妻一区二区三区线| 亚洲永久免费| 欧美一级视频在线观看| 久久久久99精品成人片三人毛片| 影音先锋久久资源网| 久久久久久亚洲| 亚洲国产精一区二区三区性色| 欧美日韩综合| 欧美极品美女视频网站在线观看免费 | 亚洲小说欧美另类激情| 菠萝菠萝蜜在线视频免费观看| 亚洲视频在线一区二区| 黄色一级视频播放| 牛牛精品在线| 亚洲成人免费观看| 动漫av网站免费观看| 日韩pacopacomama| 欧美午夜视频网站| av中文字幕网址| 亚洲精品一区二区三区中文字幕| 精品国产人成亚洲区| 欧美在线一级片| 亚洲精品播放| 日韩中文在线观看| 九九在线观看视频| 99国产精品久久久久久久| 欧美综合在线观看| 中文字幕乱码在线观看| 精品一区二区三区在线观看| 91免费观看| 亚洲欧美色视频| 国产女人aaa级久久久级| 99re99热| 超碰97国产精品人人cao| 欧美午夜xxx| 亚欧美在线观看| 亚洲国产aⅴ精品一区二区| 亚洲国产成人精品久久久国产成人一区| 久久亚洲AV成人无码国产野外 | 国产特黄大片aaaa毛片| 久久字幕精品一区| 亚洲一区二区三| 天堂中文在线8| 国产精品美女久久久久久久久久久| 警花观音坐莲激情销魂小说| 久久久男人天堂| 欧美日韩日日摸| 一级黄色片毛片| 操欧美老女人| 欧美激情亚洲综合一区| 丰满人妻一区二区三区四区| 成人午夜av影视| 奇米影视首页 狠狠色丁香婷婷久久综合 | 亚洲人成电影网| 黄色在线观看免费| 日韩精品乱码av一区二区| 91精品久久久久久蜜桃| 国产youjizz在线| 亚洲国产精品久久人人爱蜜臀| 久久久久久久少妇| 福利电影一区 | 欧美精品videossex少妇| 在线日韩av片| 特级西西人体4444xxxx| 国产精品88久久久久久| 日本aⅴ大伊香蕉精品视频| 精品久久久免费视频| 国产午夜精品一区二区| 丝袜人妻一区二区三区| 国产成人久久精品一区二区三区| 亚洲男人第一av网站| 国产一级做a爰片在线看免费| 蜜臀av性久久久久av蜜臀妖精| 久久久99国产精品免费| 日本在线视频www鲁啊鲁| 欧美三级午夜理伦三级中视频| 国产精品探花一区二区在线观看| 牛牛国产精品| 亚洲一区亚洲二区| 婷婷激情在线| 欧美亚洲国产一区二区三区va| 中文字幕一区二区久久人妻网站 | 久久视频精品在线| 中日韩在线观看视频| 久久久久久久综合色一本| 亚洲 自拍 另类小说综合图区| 精品中文在线| 久久视频这里只有精品| 在线观看视频二区| 国产清纯白嫩初高生在线观看91| 丰满少妇被猛烈进入高清播放| 国产精品玖玖玖在线资源| 欧美激情国产精品| 亚洲欧美激情国产综合久久久| 亚洲另类色综合网站| 五月天婷婷影视| 一个色综合网| 91国产丝袜在线放| 牛牛精品在线视频| 精品国产伦一区二区三区观看方式 | 国产女人18毛片18精品| 亚洲色图制服诱惑| 亚洲国产欧美91| 中文字幕亚洲精品乱码| 99re热精品| 成人性生交大片免费看网站| 精品国产凹凸成av人导航| 日韩av片在线播放| 99re亚洲国产精品| 欧美激情成人网| 成人aaaa| 91亚洲精品久久久| 色呦呦在线观看视频| 亚洲成人网在线观看| 黄色在线观看国产| 国产精品视频在线看| 色网站在线视频| 海角社区69精品视频| 国内不卡一区二区三区| 台湾佬中文娱乐久久久| 在线一区二区日韩| av高清一区二区| 午夜精品福利一区二区三区蜜桃| 青青青国产精品一区二区| 国产熟女精品视频| 亚洲小说欧美激情另类| 欧美 变态 另类 人妖| 老妇喷水一区二区三区| 亚洲精品无人区| 韩国三级大全久久网站| 久久久久久久久久久免费精品 | 精品视频在线观看日韩| 久久久久久在线观看| 国产精品久久一级| 伊人av在线播放| 午夜一级久久| 国产四区在线观看| 激情小说亚洲图片| 国产精品高潮在线| 日本一本在线免费福利| 亚洲国产精品电影| 一级片免费网站| 亚洲成av人片一区二区三区 | 久久91精品| 成人免费网站在线| 麻豆免费在线| 日韩视频免费看| 手机在线观看免费av| 在线视频国内自拍亚洲视频| 国产探花在线播放| 国产欧美日韩视频一区二区| 亚洲成人激情小说| 日韩精品一二三区| 久艹在线免费观看| 欧美肥老太太性生活| 久久久久高清| 国产一区二区三区国产精品| 国产精品777| 国产桃色电影在线播放| 日韩在线观看免费av| 青青青草原在线| 欧美成人精品高清在线播放| 最新国产中文字幕| 欧美视频一二三| 国产大学生自拍| 国产精品国产三级国产aⅴ原创| xxxxxx黄色| 国产精品自拍三区| 久久这里只精品| 新狼窝色av性久久久久久| 无码毛片aaa在线| 日本一区二区高清不卡| 欧美精品七区| 国产suv精品一区| 91视频国产精品| 丁香婷婷久久| 亚洲男人的天堂网| 国产青草视频在线观看| 成人午夜av| 免费成人av网站| 久久夜色电影| 国产亚洲第一区| 澳门久久精品| av噜噜色噜噜久久| 欧美经典一区| 亚洲综合一区二区不卡| 高清一区二区| 95av在线视频| 国模大尺度视频一区二区| 国产日韩精品入口| 欧美日韩伦理一区二区| 国产成人综合久久| 朝桐光一区二区| 欧洲成人午夜免费大片| 竹内纱里奈兽皇系列在线观看 | 性欧美.com| 成人vr资源| 午夜一区二区三区| 久久影视一区| 一区二区免费在线视频| 久久精品久久久| 亚洲第一精品区| 亚洲91中文字幕无线码三区| 欧美日韩在线免费观看视频| 天天综合一区| 国产盗摄视频在线观看| 欧美日韩爆操| 很污的网站在线观看| 亚洲欧美日韩一区在线观看| 情侣黄网站免费看| 日本不卡123| 高清av免费看| 国产精品一卡二卡在线观看| 91成人在线观看喷潮蘑菇| a级精品国产片在线观看| 亚洲永久无码7777kkk| 国产视频一区二区三区在线观看| 精品熟妇无码av免费久久| 1000精品久久久久久久久| 欧美三级小视频| 午夜电影一区二区三区| 国产精品久久久久久人| 欧美精选在线播放| 亚洲av无码一区二区三区性色 | 国产欧美日韩精品专区| 国产亚洲亚洲国产一二区| 国产福利一区二区三区在线观看| 无码少妇一区二区三区| 亚洲精品久久区二区三区蜜桃臀| 亚洲乱码电影| 日韩在线一级片| 免费精品视频在线| 91人妻一区二区| 国产三级一区二区三区| 欧美成人免费看| 91传媒视频在线播放| 国产黄色片网站| 亚洲人成在线观| 宅男在线观看免费高清网站| 欧洲美女7788成人免费视频| 四虎国产精品免费久久| 黄色99视频| 91精品观看| 欧美v在线观看| 国产美女久久久久| 亚洲精品成人无码熟妇在线| 成人免费在线播放视频| 国产又色又爽又黄的| 91.com视频| 欧美黄色小说| 欧美日韩国产va另类| jizz欧美| 九色一区二区| 欧美久久久久| 亚洲福利精品视频| 99久久国产免费看| 一区视频免费观看 | 国产黄色片免费| 中文字幕欧美日韩| 日本不卡1234视频| 亚洲综合精品伊人久久| 残酷重口调教一区二区| 国产黄视频在线| 国产成人a级片| 91麻豆精品久久毛片一级| 欧美日韩中文字幕日韩欧美| 亚洲h视频在线观看| 中文字幕亚洲一区二区三区| 五月天国产在线| 国产99在线免费| 亚洲影视一区二区三区| www.com黄色片| 国产欧美日本一区视频| youjizz在线视频| 亚洲成人动漫在线播放| 在线观看h网| 成人免费淫片视频软件| 成人高清电影网站| 黑鬼大战白妞高潮喷白浆| 波多野结衣中文一区| 久久久久久国产精品视频| 91精品综合久久久久久| 在线视频1区2区| 国产精品欧美日韩一区二区| 神马久久一区二区三区| 116极品美女午夜一级| 26uuu另类欧美亚洲曰本| 日本熟妇色xxxxx日本免费看| 日韩免费性生活视频播放| a级影片在线| 91日本在线视频| 亚洲女同中文字幕| 97超碰免费在线观看| 亚洲免费毛片网站| 国产高清视频免费| 欧美猛少妇色xxxxx| 一区二区三区视频免费视频观看网站| 四虎永久免费网站| 国产成人在线看| 国产一级在线播放| 亚洲精品黄网在线观看| 美女露胸视频在线观看| 久草精品电影| 久久精品女人| 黄免费在线观看| 欧美日韩美女一区二区| 欧美日韩在线看片| 成人在线播放av| 午夜欧美视频| 日本黄色免费观看| 色综合久久久久久久久| av在线播放av| 91精品久久久久久| 欧美日韩天堂| 国产乱了高清露脸对白| 色婷婷久久99综合精品jk白丝| 91网在线播放| 97在线资源站| 免费视频一区| 污污视频网站在线免费观看| 91精品国产一区二区三区香蕉| 密臀av在线| 欧美在线播放一区| 激情综合亚洲精品| 国产在线综合网| 亚洲精品一二区| 欧洲午夜精品| 精品久久久久久无码中文野结衣| 91视频免费看| 一级aaaa毛片| 国产做受高潮69| 精品精品99| 一级黄色大片免费看| 日韩欧美在线观看视频| 久久亚洲天堂| 久久精品日产第一区二区三区乱码| 免费人成在线不卡| 久久久久久久久久久久久久免费看 | 中文字幕一区二区不卡| 六月丁香色婷婷| 国产精品国产亚洲伊人久久| 国产一区亚洲| 国产又粗又黄又猛| 精品久久国产老人久久综合| jizz久久久久久| a在线视频观看| 一色屋精品亚洲香蕉网站|