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

生產可用:是時候來一個微前端架構了!

開發 架構
隨著前端越來越復雜,微前端的概念也越來越熱,那么什么是微前端?如何應用微前端來改進現有的前端架構?有沒有哪些成功的案例和實踐經驗?

[[320741]]

 隨著前端越來越復雜,微前端的概念也越來越熱,那么什么是微前端?如何應用微前端來改進現有的前端架構?有沒有哪些成功的案例和實踐經驗?

本文將分享微前端的場景域在螞蟻落地時遇到的問題,通過實施一個標準的微前端架構,提出面臨的技術決策以及需要處理的技術細節,真正意義上幫助你構建一個生產可用的微前端架構系統。

微前端的場景域

在選擇一個微前端方案之前,常常需要思考這樣一個問題,我們為什么需要微前端。通常對微前端的訴求有兩個方面,一是工程上的價值,二是產品上的價值。

對于工程上的價值,可以從一個三年陳的項目來看,如下所示, commit 的記錄顯示,第一次提交是 2016 年 8 月。

依賴樹 dependencies:

打包體積:

雖然這個三年陳的項目看上去版本比較低,但仍然是相對主流的全家桶方案。這樣一個樂觀的項目,在真實的場景中經過三年的時間,也不實用了。因為開發的時間比較長,并且人員流動也比較大,會導致一些祖傳的代碼出現,其次,在技術上不能及時的升級,導致開發體驗變得很差,例如打包的時間就超過三分鐘。也有可能在不經意間依賴一些不兼容的框架,導致項目無法升級。種種原因,最后很有可能變成一個遺產項目。

對于產品體驗上的問題,例如下圖所示,要完成一個跳多個控制臺任務,在過程中發現每個控制臺視覺不統一、流程出現斷點以及重復加載或認證的問題導致整個產品的體驗較差。

微前端的定義

Techniques, strategies and recipes for building a modern web app with multiple teams using different JavaScript frameworks.

—— Micro Frontends。

以上是 Micro Frontends 網站對微前端的定義。意思是所謂微前端就是一種多個團隊之間可以使用不同技術構建一個現代化 web 的技術手段以及方法策略。其中的關鍵字是多團隊、采用不同的技術棧以及現代化的 web。微前端的思路繼承自微服務的思想。

微前端的架構圖

如圖,其中上層為統一共享的拼接層,主要做一些基礎信息的加載,和對來自不同團隊不同技術棧的客戶端在運行時動態組成一個完整的 SPA 應用,以及生命周期的調度和事件的管理。總之,微前端是將微服務概念做了一個很好的延伸和實現。

在具體實踐中,衡量一個微前端方案是否是可利用的,需要滿足以下幾個條件:

  1. 技術棧無關性,不僅指子應用之間使用多個不同的框架,也指在使用同一個框架時,有可能在一個長的時間跨度下,由于框架的不兼容的升級,導致應用被鎖死的情況。
  2. 開發、發布及部署獨立,要求子應用和主應用做到工程上的解耦和獨立。
  3. 應用隔離的能力,是指需要考慮如何不干擾到原來子應用的開發模式和部署模式的情況下,做好運行時的樣式隔離、JS 隔離以及異常隔離等。

以上幾點是基于工程價值方面考慮的。此外,也需要動態組合的能力,是基于產品價值方面考慮的。

落地的關鍵問題

微前端架構中的技術選擇

按架構類型區分,常規 web 應用的架構類型分為兩種,一種是 MPA,另一種是 SPA。如上圖所示為 2017 年各云產品控制臺架構調研,除了 google cloud 之外,大部分的云廠商都使用 MPA 架構。MPA 的優點在于部署簡單,具備獨立開發和獨立部署的特性。但是,它的缺點是完成一個任務要跳到多個控制臺,并且每個控制臺又是重復刷新的。而 SPA 能極大保證多個任務之間串聯的流暢性,但問題是通常一個 SPA 是一個技術棧的應用,很難共存多個技術棧方案的選型。SPA 和 MPA 都是微前端方案的基礎選型,但是也都存在各自的問題。

單實例,一個運行時只有一個 APP Actived

多實例,一個運行同時有多個 APP Actived

按運行時特性區分,微前端包含兩個類別,一類是單實例,另一類是多實例。單實例場景如上圖中左側,通常是一個頁面級別的組合,例如一個運行時只有一個 App 被激活。多實例場景如上圖右側,像一個組件或者是容器級別的應用,運行時可以做到多個應用被同時激活。這兩種模式都有自己適應的場景和優勢。微前端架構的核心訴求是實現能支持自由組合的微前端架構,將其他的 SPA 應用以及其他組件級別的應用自由的組合到平臺中。那么,如何選擇 SPA 和 MPA 以及單實例和多實例是一個問題,我們是否能探索出一種方案,將 SPA 和 MPA 工程上的特點結合起來,同時兼顧多實例和單實例運行時的場景來實現。

技術細節上的決策

為了實現上述的方案,在技術細節上的決策需要注意以下問題:

  1. 如何做到子應用之間的技術無關。
  2. 如何設計路由和應用導入。
  3. 如何做到應用隔離。
  4. 基礎應用之間資源的處理以及跨應用間通信的選擇。

對于如何做到子應用之間的技術無關問題,我們是通過協議來解決的。如下代碼所示的方式,就可以完成子應用的導入。如果子應用接入時做了一些框架上的耦合或者依賴一個具體實現庫的機制,就一定會存在與實現庫版本耦合的可能,不利于整個微前端生態的統一和融合。

  1. export async function bootstrap() { 
  2.   console.log('react app bootstraped') ; 
  3.  
  4. export async function mount(props) { 
  5.   console.log(props) ; 
  6.   ReactDOM.render(<App/>, document.getElementById('react15Root')); 
  7.  
  8. export async function unmount() { 
  9.   ReactDOM.unmountComponentAtNode(document.getElementById('react15Root') ) ; 

如下所示是一個與具體框架實現相耦合的例子(反例):

  1. //主應用 
  2. import React from 'react' ; 
  3. import ReactDOM from 'react-dom'
  4. import MicroFrontend from 'micro-frontend'
  5.  
  6. ReactDOM.render(<MicroFrontend  base="/app1" entry="//localhost/a.js">); 
  7.  
  8. //子應用 
  9. window.microFrontends = { 
  10.   app:{...} , 
  11.   reduxStore:{...} , 
  12.   globals:(...) , 

對于路由的問題,如下圖所示。這樣一條訪問鏈路后,刷新當前 URL 通常情況下會發生什么?

正常訪問一個站點,經過一番操作之后,進入到站點的列表頁,路由會變大很復雜,但如果是一個微前端用戶,刷新一下頁面會出現 404 的情況。解決思路是將 404 路由 fallback 到一個異步注冊的子應用路由機制上。

對于應用導入方式的選擇,比較常見的方案是 Config Entry。通過在主應用中注冊子應用依賴哪些 JS。這種方案一目了然,但是最大的問題是 ConfigEntry 的方式很難描述出一個子應用真實的應用數據信息。真實的子應用會有一些 title 信息,依賴容器 ID 節點信息,渲染時會依賴節點做渲染,如果只配 JS 和 CSS,那么很多信息是會丟失的,有可能會導致間接上的依賴。

  1. <html> 
  2.   <head> 
  3.   <title>sub app</title> 
  4.     <link rel="stylesheet" href="//localhost/app.css"
  5. </head> 
  6. <body> 
  7.   <main id="root"></main> 
  8.    <script src="//localhost/base. js"
  9. </body> 
  10. </html> 
  11.  
  12. <script> 
  13.    import React from 'react' 
  14.    import ReactDOM from 'react-dom' 
  15.  
  16.    ReactDOM.render(<App/>, document.getElementById('root') ) 
  17. </script> 

 

 

 

 

 

 

另外一種方案是 HTML Entry,直接配 html,因為 html 本身就是一個完整的應用的 manifest,包含依賴的信息。HTML Entry 的優點是接入應用的信息可以得到完整的保留,接入應用地址只需配一次,子應用的原始開發模式得到完整保留,因為子應用接入只需要告知主應用 html 在哪,包括在不接入主應用時獨立的打開。它的缺點是將解析的消耗留給了運行時。而 Config Entry 相較于 HTML Entry 減少了運行時的解析消耗。Config Entry 的缺點是主應用需配置完整的子應用信息,包含初始 DOM 信息、js/css 資源地址等。

  1. registerMicroApps([ 
  2.     { 
  3.         name'react app' 
  4.         //   index.html 本身就是一個完整的應用的 manifest 
  5.        entry: '//localhost: 8080/index.html'
  6.        render, 
  7.        activeRule: '/react' 
  8.      } 
  9. ]) ; 

對于樣式隔離問題,例如 BEM,每個子應用在寫樣式之前要加一些前綴,做一些隔離,但是這個做法并不推薦。相對而言,CSS Module 更簡單高效,也更智能化,是比較推薦的方式,但是也存在著問題。而 Web Components 看上去很不錯,但在實踐過程中也會發生一些問題。

例如在 Web Components 渲染的流程中出現了問題,如下圖所示。

在 antd 中提供了全局的 API,可以提前設置好所有的彈框的 container,但是也不是每個組件庫都能像 antd 一樣完成度那么高。

螞蟻所采用的解決方案是做動態的加載和卸載樣式表,如下圖所示,這種方案是很有效的。

對于 JS 隔離,螞蟻提出了 JS Sandbox 機制,如上圖所示,其中 bootstrap、mount及 unmount 生命周期是子應用需要暴露出來的,因為子應用的整個生命周期都是被主應用所管理的,所以可以在主應用中給子應用插入各種攔截的機制,也可以捕獲到子應用在加載期間做了哪些全局上的修改。在 unmount 時,可以將全局上的副作用全部手動移除掉,同時也可以實現在重新進來時,將上次忘記卸載的副作用重建一遍,因為需要保證下次進來時能完整回復到與上次一致的上下文。

對于資源加載問題,在微前端方案中存在一個典型的問題,如果子應用比較多,就會存在之間重復依賴的場景。解決方案是在主應用中主動的依賴基礎框架,然后子應用保守的將基礎的依賴處理掉,但是,這個機制里存在一個問題,如果子應用中既有 react 15 又有 react 16,這時主應用該如何做?螞蟻的方案是在主應用中維護一個語義化版本的映射表,在運行時分析當前的子應用,最后可以決定真實運行時真正的消費到哪一個基礎框架的版本,可以實現真正運行時的依賴系統,也能解決子應用多版本共存時依賴去從的問題,能確保最大程度的依賴復用。

基于 props 以單向數據流的方式傳遞給子應用:

  1. export function mount(props) { 
  2.     ReactDOM.render( 
  3.         <App {...props}/>, 
  4.          container 
  5.     ) 

基于瀏覽器原生事件做通信:

  1. //主應用 
  2. window.dispathEvent( 
  3.     new CustomEvent('master:collapse-menu'), 
  4.     {detail: {collapsed:true} } 
  5.  
  6. //子應用 
  7. window.addEventLister( 
  8.     'master:collapse-menu'
  9.     event => console.log(event.detail.collapsed) 

對于應用之間數據共享及通信的問題,螞蟻提出了兩個原則,第一個原則是基于 props 以單向數據流的方式傳遞給子應用。第二個原則是基于瀏覽器原生事件做跨業務之間的通信。

在真實的生產實踐中,螞蟻總結出了幾點經驗及建議:兄弟節點間通信以主應用作為消息總線,不建議自己封裝的 Pub/Sub 機制,也不推薦直接基于某一狀態管理庫做數據通信。

螞蟻在實踐中做的性能優化,包括異步樣式導致閃爍問題的解決以及預加載問題的解決。

異步樣式導致的閃爍問題:

預加載:

  1. export function prefetch(entry: Entry, fetch?: Fetch) { 
  2.     const requestIdleCallback = window.requestIdleCallback || noop; 
  3.  
  4.     requestIdleCallback(async () => { 
  5.         const { getExternalScripts, getExternalStyleSheets } 
  6.             = await importEntry(entry, { fetch } ); 
  7.         requestIdleCallback(getExternalStyleSheets) ; 
  8.         requestIdleCallback(getExternalScripts) ; 
  9.     }) ; 

如圖所示為微前端方案涉及到的技術點,本文分享了圖中三分之二的內容。

在螞蟻金服做了大量關于微前端方案之后,總結了衡量一個微前端方案是否友好的兩個標準,第一個標準是技術無關,也是微前端最核心的特性,不論是子應用還是主應用都應該做到框架不感知。第二個標準是接入友好,子應用接入應該像接入一個 iframe 一樣輕松自然。

螞蟻的微前端落地的實踐成果

螞蟻內部基于微前端基礎架構提出了一體化上云解決方案,稱為 OneX,是一個基礎的平臺,它可以將各種流程和工具串聯,其價值體現在品牌、產品和技術方面。品牌價值指的是統一的界面框架、UI、交互形成了螞蟻金服科技品牌心智。

OneNav + OneConsole + TechUI + OneAPI + Bigfish

下圖所示為螞蟻的一個真實應用的例子,除了中間接入的產品是自己控制之外,其他內容都是由平臺提供,這樣,如論是一個三年陳項目還是新做的項目,在基本的視覺上可以做到統一。

產品價值指的是產品具有自由組合能力。之前的產品是多個產品、多個站點的控制臺,而現在只需要一個控制臺,將多個產品自由的組合,這樣,可以在商業上有更多的相應空間以及更多自由的搭配。基于這樣的系統也可以做一些全局性的事情,例如埋點、用戶的轉化跟蹤業務。

技術價值指的是研發上的提效。經過微前端的改造后,螞蟻可以將大型的系統解耦成可以獨立開發的并行的小型的系統,這些小型系統可以交給別的團隊或者使用可視化的系統去實現,最后在運行時只需要將他們集成起來。

在技術價值方面也可以實現交付上的提效,只需要在某一個環境的任意一個環境中做平臺上的接入,應用就可以做到在多余的環境中不改代碼,直接運行。

下圖為阿里云剛上市的一個產品例子,其中包括 15 個來自不同團隊的應用進行維護,它的特點是并不是單獨為阿里云而設計的,之前在螞蟻也有運行,只不過在阿里云中做了動態的組合。OneTour 微應用組件主要解決的是在多個產品控制臺之間自由切換導致流程割裂的問題。

螞蟻微前端的落地成果包括:有 70+ 線上應用接入(阿里云 + 螞蟻云 + 專有云),最復雜一個控制臺同時集成 15 個應用,并且有 4+ 不同技術棧,以及開發到發布上線全鏈路的自動化支持,一云入駐多云運行。

基于以上技術上的成果,螞蟻沉淀了自己的微前端方案并開源。

基于以上技術上的成果,螞蟻沉淀了自己的微前端方案并開源。qiankun 是框架無關的微前端內核,umi-plugin-qiankun 是基于 umi 應用的 qiankun 插件,方便 umi 應用通過修改配置的方式變身成為一個微前端系統。基于上述實踐的檢驗和內部落地結果來看,在大規模中后臺應用場景下,微前端架構是一個值得嘗試的方案。

 

責任編輯:武曉燕 來源: 阿里技術
相關推薦

2025-05-19 10:04:48

2023-12-13 08:24:42

maven插件自動化

2020-05-19 10:45:31

沙箱前端原生對象

2012-08-23 11:03:55

IE瀏覽器

2022-05-31 08:35:05

RocketMQACK客戶端

2023-11-01 18:10:45

架構設計技術

2012-08-28 13:49:34

HTML5HTML5熱點關注HTML5業界資訊

2022-09-07 21:31:19

微前端架構iframe

2020-05-06 09:25:10

微前端qiankun架構

2022-05-13 11:05:00

網絡威脅無監督學習網絡攻擊

2018-05-30 10:04:38

容器技術微服務

2021-05-18 09:48:58

前端開發架構

2015-09-23 14:07:12

前端與后端架構實例

2021-06-24 09:53:05

前端架構開源

2014-02-17 17:47:16

前端后端架構

2022-01-17 11:41:50

前端Vite組件

2023-02-13 00:18:22

前端庫框架集合

2023-10-19 15:25:40

2017-02-17 07:46:29

2018-08-21 05:12:10

點贊
收藏

51CTO技術棧公眾號

波多野结衣亚洲色图| 亚洲一区日韩精品| 福利在线观看| 黑人精品欧美一区二区蜜桃| 久久久天堂国产精品女人| 午夜在线观看一区| 免费一区二区三区在线视频| 欧美性猛交xxxx免费看久久久| 永久域名在线精品| 手机看片福利永久| 国内精品久久久久影院薰衣草| 久久久久久中文| 黄色免费一级视频| 免费成人三级| 91精品国产免费| 国产成人av影视| 国产精品186在线观看在线播放| 久久久久久一级片| 99国精产品一二二线| 中国黄色一级视频| 亚洲日韩视频| 欧美成人合集magnet| 亚洲精品国产一区黑色丝袜| 岛国av一区| 91精品国产综合久久久久久| 无码人妻丰满熟妇区五十路百度| 久久香蕉av| 中文字幕一区二| 日韩久久久久久久久久久久久| 刘玥91精选国产在线观看| 狠狠色狠狠色综合日日91app| 国产经典一区二区| 日本va欧美va国产激情| 欧美日韩国产探花| 日韩在线观看你懂的| 88久久精品无码一区二区毛片| 成人高潮视频| 日韩亚洲欧美综合| 在线免费看v片| 99久久婷婷国产综合精品首页| 欧美天堂在线观看| 精品视频免费在线播放| 久久香蕉一区| 亚洲国产wwwccc36天堂| 日本中文字幕一级片| 国产黄网站在线观看| 中文字幕一区在线观看| 亚洲一区二区三区免费观看| 国产69久久| 国产精品丝袜久久久久久app| 日本视频一区二区不卡| 国产综合在线观看| 久久蜜桃一区二区| 日韩精品国内| 777电影在线观看| 亚洲国产成人午夜在线一区| 日韩aⅴ视频一区二区三区| 免费在线视频一级不卡| 久久蜜桃香蕉精品一区二区三区| 免费毛片一区二区三区久久久| 污污网站免费在线观看| av动漫一区二区| 久久国产一区| 黄网在线免费| 国产精品对白交换视频 | 亚洲91精品在线观看| 国产一级一片免费播放放a| 在线精品观看| 欧美亚洲激情在线| 一级片在线观看免费| 亚洲欧美视频一区二区三区| 国产成人97精品免费看片| 日本一区二区三区久久| 久久99久国产精品黄毛片色诱| 成人免费网站在线| 亚洲国产精品成人久久蜜臀| 不卡视频免费播放| 欧美中日韩一区二区三区| 调教视频免费在线观看| 一区二区三区四区在线| 国产主播自拍av| 日韩性xxx| 欧美精品久久99久久在免费线| 波多野吉衣在线视频| 任我爽精品视频在线播放| 亚洲人精品午夜在线观看| 国产又粗又长又硬| 欧美日韩免费观看一区=区三区| 97国产精品视频人人做人人爱| 国产九色91回来了| 国产成人综合亚洲网站| 免费看污久久久| 97超碰在线公开在线看免费| 日韩欧美在线视频| 无人码人妻一区二区三区免费| 台湾亚洲精品一区二区tv| 最近2019年中文视频免费在线观看| 午夜爱爱毛片xxxx视频免费看| 国产欧美短视频| 成人国内精品久久久久一区| 婷婷丁香花五月天| 自拍视频在线观看一区二区| 夫妻免费无码v看片| 综合久久av| 精品亚洲va在线va天堂资源站| 韩国一级黄色录像| 一本一本久久| 999日本视频| eeuss影院www在线播放| 五月天激情综合| 欧洲美女亚洲激情| 精品国产91| 午夜精品久久久久久久99热浪潮| 97成人在线观看| 久久久久久久国产精品影院| 黄色片免费在线观看视频| 在线日本欧美| 亚洲精品自在久久| 久久久夜色精品| 黄网站免费久久| 午夜精品亚洲一区二区三区嫩草| 蜜桃av在线| 日韩欧美自拍偷拍| 亚洲精品国产精品乱码在线观看| 亚洲免费婷婷| 国产视色精品亚洲一区二区| 国产调教视频在线观看| 欧美在线免费观看视频| 精品无码在线视频| 99亚洲伊人久久精品影院红桃| 99久久精品久久久久久ai换脸| 在线播放日本| 欧美视频自拍偷拍| 久久久久久久毛片| 亚洲一区中文| 免费看成人片| 久九九久频精品短视频| 日韩av在线看| www.国产色| 99re免费视频精品全部| 精品少妇人欧美激情在线观看| 亚洲一区二区电影| 久久成人亚洲精品| av在线免费在线观看| 日韩毛片在线免费观看| 女人高潮一级片| 亚洲美女视频| 超碰97在线资源| 免费在线看污片| 亚洲丁香久久久| av资源吧首页| 91在线精品一区二区三区| 一二三四视频社区在线| 欧美精品国产白浆久久久久| 91爱视频在线| 国产理论电影在线观看| 欧美在线999| 日本免费网站视频| 国产在线精品不卡| 国产小视频免费| 欧美日韩另类图片| 日韩美女视频中文字幕| av女优在线| 69av一区二区三区| 午夜69成人做爰视频| 成人h动漫精品一区二| 99热在线这里只有精品| 国产影视精品一区二区三区| 国产精品久久久久久av福利软件 | 国产黄色大片网站| 亚洲综合色区另类av| 中文在线一区二区三区| 丝瓜av网站精品一区二区| 亚洲毛片aa| 亚洲综合影院| 青青久久aⅴ北条麻妃| 成人精品一区二区三区免费 | 国产精品视频免费在线| gogo在线观看| 亚洲精品久久久久国产| 成人一级免费视频| 综合欧美亚洲日本| a天堂视频在线观看| 奇米色一区二区三区四区| 久久人妻无码一区二区| 亚洲日本三级| 亚洲tv在线观看| 在线能看的av网址| 日韩网站免费观看高清| 日本国产在线观看| 在线免费av一区| 免费一级片在线观看| 久久久久国色av免费看影院| 欧美性受xxxx黒人xyx性爽| 国产欧美高清| 激情六月天婷婷| 精品免费在线| 国产欧美日韩一区| 黑人一区二区三区| 91精品国产色综合久久不卡98口 | 中文字幕亚洲影院| 麻豆精品网站| 欧美大黑帍在线播放| 成人羞羞网站| 久久伊人资源站| 久久69av| 国产精品视频xxx| 小草在线视频免费播放| 欧美大片va欧美在线播放| 国产一级片在线| 日韩精品极品视频免费观看| 精品国产伦一区二区三区| 在线观看av不卡| 亚洲黄色激情视频| 亚洲一区二区三区精品在线| 大地资源高清在线视频观看| 久久精品一区二区三区av| 韩国三级视频在线观看| 久久99久久99| 在线免费观看av的网站| 久久视频一区| 国产美女无遮挡网站| 欧美午夜久久| 激情视频小说图片| 婷婷精品进入| 婷婷四房综合激情五月| 久久成人高清| 蜜桃臀一区二区三区| 国产无遮挡裸体免费久久| 亚洲自拍偷拍色片视频| 豆花视频一区| 成人免费在线视频网址| 国内自拍亚洲| 成人www视频在线观看| 久久久久黄色| 国产精品久久久久久久久久东京| 成人免费看视频网站| 136fldh精品导航福利| 国产99在线| 91精品国产91久久久久久吃药| 欧美大胆的人体xxxx| 欧美激情2020午夜免费观看| 在线观看的网站你懂的| 欧美老肥婆性猛交视频| 丝袜综合欧美| 欧美福利视频网站| 成人福利影视| 538国产精品视频一区二区| 中文字幕乱码在线播放| 欧美亚洲成人xxx| 成人自拍av| 国产在线观看精品一区二区三区| 免费视频成人| 91九色蝌蚪嫩草| 国产一区二区三区亚洲| 国产亚洲精品美女久久久m| 欧美变态网站| 欧美精品一区二区三区久久| 免费一区二区三区视频导航| 欧美一区1区三区3区公司| 精品美女久久| 亚洲小视频在线播放| 欧美va天堂| 久久久性生活视频| 久久久久欧美精品| 日本美女视频一区| 国产不卡在线播放| 一女三黑人理论片在线| 亚洲国产精品传媒在线观看| 日韩成人短视频| 亚洲福利视频导航| 成人午夜淫片100集| 欧美日韩国产小视频| 精品美女www爽爽爽视频| 亚洲成年人在线| 免费黄色在线视频网站| 久久视频在线观看免费| 久色国产在线| 国产精品免费福利| 欧美片网站免费| 久久亚洲高清| 亚洲五月综合| 337p粉嫩大胆噜噜噜鲁| 免费成人性网站| caopor在线| 欧美国产日本视频| 久久亚洲精品大全| 欧洲一区二区av| 性生活黄色大片| 一区二区三区视频在线| 呦呦在线视频| 国产精品嫩草视频| 高清一区二区三区| 亚洲国产日韩欧美| 亚洲黄色成人| 8x8x成人免费视频| 99国产精品久久久久| 日本视频在线免费| 精品久久香蕉国产线看观看亚洲 | 亚洲人成网站在线播| 91麻豆免费在线视频| 国产精品电影久久久久电影网| theporn国产在线精品| 性欧美大战久久久久久久免费观看| 欧美三级乱码| 亚洲图色中文字幕| 久久久精品欧美丰满| 五月天婷婷网站| 91精品免费在线| 98在线视频| 日本久久精品视频| 国产suv精品一区| 福利网在线观看| 奇米一区二区三区| 美女100%无挡| 五月综合激情网| 性一交一乱一乱一视频| yw.139尤物在线精品视频| 韩日一区二区| 日韩av不卡播放| 天堂资源在线中文精品| 亚洲精品乱码久久| 夜夜精品浪潮av一区二区三区| 136福利视频导航| 一二美女精品欧洲| 中文在线аv在线| 久久国产精品久久| 亚洲激情av| 国产精品一区二区在线免费观看| 亚洲青青青在线视频| 国产精品久久久久久久久久久久久久久久| 亚洲精品资源在线| 日本三级一区| 欧美国产二区| 欧美一级播放| 日本黄色片在线播放| 午夜天堂影视香蕉久久| 国产91免费在线观看| 欧美高跟鞋交xxxxhd| 一区二区三区在线免费看| 久久久成人精品一区二区三区| 精品一区二区三区免费视频| 国产成人在线网址| 欧美日韩精品一区二区三区四区| eeuss影院www在线播放| 国产噜噜噜噜久久久久久久久| 欧美一区二区三| 日本国产一级片| 一区二区三区四区激情 | 亚洲日韩第一页| 国产精品高清乱码在线观看 | 欧美日韩91| av电影中文字幕| 香蕉成人啪国产精品视频综合网| 天天干天天草天天射| 欧美最顶级丰满的aⅴ艳星| 国产精品亚洲二区| 天天爽人人爽夜夜爽| 最新中文字幕一区二区三区| 国产xxxxxx| 性欧美xxxx交| 精品国产一区二区三区香蕉沈先生| 992kp快乐看片永久免费网址| 国产精品剧情在线亚洲| va婷婷在线免费观看| 欧美精品福利在线| 日本午夜精品| 日本特黄a级片| 亚洲男人电影天堂| 后入内射欧美99二区视频| 欧美在线亚洲在线| 日韩一区电影| 激情av中文字幕| 色婷婷综合五月| 国产1区在线| 激情视频一区二区| 日韩高清不卡一区二区三区| 国产人妻精品一区二区三区不卡| 亚洲激情免费观看| yiren22亚洲综合| 蜜臀精品一区二区| 久久久精品tv| 亚洲国产成人一区二区| 秋霞av国产精品一区| 偷拍欧美精品| theav精尽人亡av| 在线播放欧美女士性生活| av在线私库| 亚洲欧洲一区二区| aaa欧美色吧激情视频| 亚洲精品91天天久久人人| 色综合天天综合网国产成人网| 欧美精品momsxxx| 亚洲女人在线观看| 色网综合在线观看| 天堂av中文在线| 一区二区日本| 2020国产精品| 丰满少妇被猛烈进入| 国产欧美久久久久久|