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

微內核架構在大型前端系統中的應用

開發 架構 前端
架構和框架是獨立的,本文僅僅是提出一種架構思路,而且這個架構也在百度的某款用戶量很大的復雜前端產品中得以應用。基于這一套彈性架構并結合Vue/React的現代化開發理念,可以很好的完成高復雜度的前端系統。希望本文可以給你們提供了除微前端之外的構建高彈性前端系統的另外一種思路。

[[248348]]

只討論架構,不討論框架

1、名詞解釋

由一群盡可能將數量最小化的軟件程序組成,他們負責提供、實現一個操作系統所需要的各種機制和功能。這些最基礎的機制,包括了底層地址空間管理,線程管理,與進程間通訊。

2、設計理念

將系統的實現,與系統的基本操作規則區分開來。它實現的方式是將核心功能模塊化,劃分成幾個獨立的進程,各自運行,這些進程被稱為服務。所有的服務進程,都運行在不同的地址空間。

讓服務各自獨立,可以減少系統之間的耦合度,易于實現與除錯,也可以增進可移植性。它可以避免單一組件失效,而造成整個系統崩潰,內核只需要重啟這個組件,不至于影響其他服務器的功能,使系統穩定度增加。同時業務功能可以視需要,抽換或新增某些服務進程,使功能更有彈性。

就代碼數量來看,一般來說,因為功能簡化,核心系統使用的代碼比集成式系統更少。更少的代碼意味更少的潛藏程序bug。

3、具體應用

微內核架構在使用時主要考慮兩個方面『核心系統』和『插件模塊』。應用邏輯被劃分為獨立的『核心系統』和『插件模塊』,這樣就提供了良好的可擴展性與靈活性,應用的新特性和基礎業務邏輯也會被隔離。

一、核心系統

核心系統通常是一個可以獨立運行的最小化模塊,操作系統(Windows NT、Mac OS X)就是這么實現的。從商業應用的角度來看,核心系統為那些特定的場景、規則、復雜的條件判斷提供了通用的業務邏輯,而插件模塊則提供了更為具體的業務邏輯。可以增加或擴展核心系統以達到產生附加的業務邏輯的能力。

二、插件模塊

插件模塊通常是一個專業處理額外特性的獨立組件。通常,插件模塊之間是沒有依賴的,當然你也可以創建一個依賴其他插件模塊的插件,但不管怎么樣,讓插件模塊之間可以彼此通訊又不產生依賴是一個很重要的問題。

三、獲取插件模塊并判斷可用性

核心系統需要知道每個插件的可用性并且知道如何獲取它們,一個通常的實現方式是使用一組注冊表。注冊表包括了每個插件的基本信息,包括名稱、數據規范、遠程訪問協議(取決于插件模塊如何和核心系統進行連接)以及其他自定義數據。比如百度網盤中用于上傳文件的上傳插件提供了插件名稱、數據規范(輸入、輸出數據)、數據格式(json、xml),如果這個插件是通過異步進行加載的,那么還會有一個具體遠程HTTP訪問協議地址。

四、連接到核心系統

插件模塊可以通過多種方式連接到核心系統,包括OSGI(open service gateway initiative)、消息機制、web服務以及點對點的綁定(對象實例化,既依賴注入)。使用何種方式主要取決于具體的應用場景和特殊需求(單機部署、分布式部署),微內核架構默認沒有要求具體的實現方式,但是必須保證插件模塊之間不能產生任何依賴。

五、通信規范

插件模塊和核心系統之間的通信規范分為標準規范和自定義規范,自定義規范通常是指某個插件模塊是由第三方服務開發的。這種情況下,就需要在自定義規范和標準規范之間提供一個Adapter,這樣核心系統就不需要關心每個插件模塊的具體實現。在設計標準規范之前制定一個版本策略很重要。

六、事件模式

核心系統提供了多種事件模式,主要包括常用的點對點模式、發布訂閱模式。同時,事件的類型分為全局(系統級)事件、系統內部事件以及插件模塊內部事件。由于點對點模式中發送者和接收者之間沒有依賴關系并且一條消息只對應一個接收者,所以可以用作廣播全局(系統級)事件,比如調起某個插件模塊。而發布訂閱模式中訂閱者和發布者之間存在時間上的依賴性,可以用于系統內部事件和插件模塊的內部事件。此外,核心模塊也可以通過發布訂閱模式向外發布某些屬于業務基本操作規則的事件。

七、接口設計

當插件模塊注冊到核心系統之后,通過系統級事件可以調起具體的某插件模塊。此時就需要核心模塊提供屬于基本操作規則的接口供插件模塊使用,同樣的,插件模塊也必須按照通信規范提供運行入口(類似于java的Main方法)和數據規范(參數格式,返回的數據格式),以此保障插件模塊可以在核心系統上正確運行。插件模塊是獨立于核心系統之外的,但是根據具體的需求(提供單純的數據服務、處理系統數據和信息)可能會需要操作核心模塊的系統服務做一些定制化功能,此時核心系統需要提供一個上下文對象(Context),且插件模塊與外部進行交互只能通過此上下文對象。上下文對象提供了基礎操作(調起其他插件模塊、調起系統服務、獲取系統信息)的API和事件。

4、在前端系統中使用

把前端系統當成一個操作系統,業務基本操作的業務邏輯抽象成一個可以獨立運作的系統內核,而不屬于業務基本操作的業務邏輯都當成一個應用程序,完成安裝、卸載、禁用、調用以及開機啟動等功能。

在功能越來越多,依賴越來越負責的大型前端系統中,如果在項目初期沒有很好地考慮后期兼容的靈活性、擴展性以及彈性,很容易出現項目難以維護或者誰都不想碰的尷尬場面,所以初期的設計很重要。

目前的大型前端單頁面系統使用的都是根據業務劃分獨立組件,進行解耦和復用,最后通過組件進行堆疊、編譯、上線。這樣雖然完成依賴良好的組件化設計考慮到了系統的擴展性和靈活性以及彈性,但是整個系統還是緊緊綁在一起的,并沒有根據基礎業務和附加業務進行很好的拆分。當然很多優秀的前端工程師也考慮到了這一方面,提出來微前端的概念。不過微前端還是一個比較新的技術概念,沒有經過很多大型前端系統的實踐。而微內核架構已經在操作系統和很多的產品的后端服務及前端APP中經過了很多的實踐。

一、定義核心模塊和系統服務

上面提到核心模塊是一個可以獨立運行起來,包含系統基本操作規則的最小化模塊。沒有任何插件模塊依然可以正常運行并處理基本的業務邏輯,所以在大型前端系統中將基礎頁面以及基礎功能單獨包裝起來,組成一個最小化的模塊,稱之為core system。而這個core system可以通過包方式在多個系統間進行復用(NPM、bower、bundle、js chunk)。同時,將那些和業務相關的操作按照類型和場景封裝為多個系統服務,并掛載(依賴注入)到核心系統中,稱之為system service。需要注意的是core system可操作system service,而system service不可操作core system。

此外,core system根據具體的模塊規范(AMD、CMD、CommonJS、ESM、SystemJS、UMD)向外部暴露了可交互的API和事件,稱之為標準接口。后續在編寫插件模塊時要嚴格按照標準接口進行開發。

二、定義插件模塊

插件模塊是一個獨立于核心系統的專業處理不屬于系統基本操作的業務的模塊(組件),比如網盤中的上傳、下載、分享等功能。每個插件模塊必須遵照定義好的標準接口和通信規范進行開發,而且每個插件模塊都是相互獨立的,所以沒有對每個插件的實現細節做過多要求,如A插件模塊使用React開發,B插件模塊使用Vue開發,C模塊使用jQuery開發。

每個插件模塊都應該提供一個包含本插件模塊簽名信息(Mainfest)的JSON文件,簽名信息包括了這個插件的名稱、數據規范、依賴、遠程訪問地址(異步加載的js下載地址)和其他自定義字段。在前端加載核心系統時將該Mainfest文件注冊進去,完成核心系統和插件模塊的連接。

每個插件模塊都應該提供一個統一名稱的運行入口,比如start方法。也可以按照標準接口提供插件的生命周期事件,方便更細粒度的控制。

三、注冊和調起

每個插件都提供了各自的Mainfest簽名文件和可執行文件(JS文件、CSS文件)。所以當服務器接收到瀏覽器請求時可以將所要求的插件Manifest進行merge,合并成一個大的JSON結構,然后返回給瀏覽器。瀏覽器接收后,執行核心系統并注冊Manfiest信息,然后啟動。在注冊過程中可以按照需求完成開機啟動(默認執行)、預加載以及后臺運行等不同類型的操作。

在業務邏輯和插件內部邏輯中可以能存在調起其他插件模塊的需求,由于插件模塊之間不產生依賴并且獨立于核心系統,所以無法直接進行調起。不過由于注冊表和點對點事件模式的存在,可以通過核心系統向外暴露的API傳入插件名稱和組、插件模塊ID等信息進行調起。在調起之前先判斷該插件在是否已注冊,是否已加載(同步加載、異步加載),是否為單例和互斥,參數信息和數據格式,保證它可以正確的調起。

在插件運行過程中出現異常時,通過系統級事件通知核心模塊。核心模塊根據簽名信息中的標識選擇重啟或關閉該插件模塊。

四、多入口管理

在復雜的前端系統中同一個功能可能會存在過個入口的情況,比如上傳、下載、分享等功能都是通過不同位置的按鈕點擊進行調起。通常,將具體功能(插件模塊)和插件模塊入口的UI展示進行隔離。首先,在基礎頁面結構中按照需求進行分塊,分成不同的功能塊,如菜單欄、右鍵菜單、列表項、右側區域、左側區域,并為這些區域定義唯一的名稱和ID。在需要進行入口展示的插件模塊的Manifest中,標識入口的區域和展示方式(按鈕、圖片、引導塊、菜單項、下拉菜單)。

核心系統在注冊表注冊完畢后,解析那些需要展示入口的的字段并交給專門渲染插件模塊入口的系統服務,這樣就通過配置完成了多入口的管理,在后續需求變動和修改時,只需要更改Manifest文件即可,更加完善了系統的擴展性、靈活性、彈性。

5、技術選型

架構是獨立于框架和類庫的存在。

微內核架構的核心就是使業務的基本操作和專業處理額外特性的操作相隔離,提高系統的擴展性、靈活性和彈性。所以在技術選型時我們需要考慮三個方面:核心系統、系統服務、插件模塊。

核心系統通常包含一個項目所需要的基本功能,包括基本的展示頁面、交互操作、業務處理,代碼量通常很少;系統服務提供業務處理的通用功能,比如列表操作、彈框、提示、異步化接口處理等,通常將系統中通用的需求抽象到這一層中;所以,這兩個方面可以使用目前常見的react或vue通過webpack工具進行規范化開發,但如何向外部暴露核心系統的API和事件給插件模塊調用是一個十分重要的問題。

插件模塊更傾向于一個專業處理額外特性的lib庫,所以推薦使用rollup或者webpack的lib模式進行開發和打包,產出一個『干凈』的bundle(也可以發布到NPM中,實現獨立發布和維護)。需要注意的是,如果這個bundle按照定義好的標準規范進行開發,那么它可以在任意一個微內核架構下運行,達到跨系統的能力。就像按照X86規范編寫的程序可以在任意一個X86架構的系統上運行一樣。

調起插件模塊時如何異步加載插件模塊bundle?

一、插件模塊開發階段

方案一:source code

插件模塊的代碼放置在一個根文件夾中,通過源代碼進行開發和編譯。每次更改后通過rollup或webpack產出一個bundle與Manifest文件,然后將它們上線更新即可。

這種模式下,插件模塊的代碼更新后,對應的Manifest文件也會更新,所以核心系統加載到插件模塊也會被更新,不需要基礎業務邏輯執行任何操作。

優點:不需要更新并上線基礎業務代碼。

缺點:沒有版本號的管理功能以及不方便測試。

方案二:npm install

插件模塊發布到github、gitlab等其他托管平臺中,通過npm進行安裝到基礎業務邏輯中。插件模塊每次更改后需要重新發布到托管平臺,并在需要在業務邏輯中更新版本號重新執行npm install xxx,然后重新編譯業務代碼進行上線。

插件模塊更新后,不需要像方案一那樣上線插件模塊。而是更新業務邏輯的依賴,安裝最新版本的插件模塊。

優點:可以通過版本號加載不同的階段的插件模塊以及方便測試。

缺點:更改后需要重新安裝插件模塊,并對依賴此插件模塊的業務邏輯重新進行編譯和上線。回歸成本大,除了回歸插件模塊還要回歸其他基礎業務邏輯(當然也可以像方案一那樣做,但是這樣就拋棄了npm的最大優點 -> 版本號管理)。

二、獲取插件模塊的Manifest簽名信息

方案一:服務器渲染直出到HTML中

服務器收到瀏覽器的頁面請求時,將該頁面需要的插件模塊的Manifest簽名文件進行Merge操作,然后統一輸出到HTML中并返回給瀏覽器。

方案二:通過異步化獲取

通過script標簽的async和defer功能或AJAX,異步從服務器獲取Merge之后的Manifest簽名信息集合。

三、遠程訪問協議

核心系統調起插件模塊時,可以通過插件聲明的遠程訪問協議的HTTP地址,進行異步加載。

方案一:Manifest簽名文件

在Manifest簽名信息中放置插件模塊的遠程訪問協議,比如上傳插件模塊的簽名示例: 

  1.     // 插件名稱 
  2.     "name""upload"
  3.     // 組 
  4.     "group""com.xxx.xxx"
  5.     // 預加載插件模塊資源 
  6.     "preload"true
  7.     // 數據規范,要求輸入的參數 
  8.     "arguments": { 
  9.         // 核心系統提供的上下文對象 
  10.         "ctx": { 
  11.             "type""Object"
  12.             "required"true 
  13.         }, 
  14.         // 需要上傳的文件信息 
  15.         "file": { 
  16.             "type""Object"
  17.             "required"false 
  18.         } 
  19.     }, 
  20.     // 遠程訪問協議 
  21.     "entrance""http://www.a.com/static/plugin-bundles/upload-0.0.1.min.js" 
  22.  

方案二:異步化接口 + import()

該方案是系統插件模塊的遠程訪問協議不放置在插件模塊的Manifest中,而是額外通過異步化接口請求得到遠程訪問協議。然后通過webpack提供的require.ensure()或esm的import()加載插件資源。 

  1. // ctx為核心系統上下文對象 
  2. ctx.loadPlugInAdapter = (pluginName, group) => { 
  3.     // 通過接口請求上傳插件模塊的遠程訪問協議 
  4.     fetchEntrance(pluginName, group).then(url => { 
  5.         // 核心系統執行插件模塊 
  6.         ctx.invoke(pluginName, url); 
  7.     }); 
  8.  
  9. // 調起插件模塊 
  10. ctx.loadPlugInAdapter('upload''com.xxx.xxx');  

最后

架構和框架是獨立的,本文僅僅是提出一種架構思路,而且這個架構也在百度的某款用戶量很大的復雜前端產品中得以應用。基于這一套彈性架構并結合Vue/React的現代化開發理念,可以很好的完成高復雜度的前端系統。希望本文可以給你們提供了除微前端之外的構建高彈性前端系統的另外一種思路。 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2019-07-04 13:05:18

MySQL設計數據庫

2014-06-17 14:01:34

Mysql網站架構

2024-05-28 09:05:31

2016-08-08 13:59:02

MySQL架構數據庫

2011-04-12 10:52:43

布線系統

2010-10-28 09:05:10

ASP.NET

2011-09-29 13:52:57

服務器HPC浪潮TS850

2010-08-10 10:10:28

系統架構

2018-08-30 09:00:00

開源Apache Kafk數據流

2020-12-28 08:51:06

操作系統微內核Dubbo

2018-12-14 10:06:22

緩存分布式系統

2012-12-14 08:46:14

微博PageRank算法

2014-09-26 09:53:41

系統架構架構架構演變

2025-01-08 09:23:03

2022-08-19 14:06:56

前端架構技術

2020-08-14 10:00:34

Node前端應用

2022-02-20 22:16:44

ESLint工具JavaScript

2012-05-24 09:18:34

ibmdw

2023-11-20 08:12:15

2020-07-21 08:20:23

系統架構編輯器
點贊
收藏

51CTO技術棧公眾號

国产日本精品视频| 男人搞女人网站| 五月婷婷丁香花| 亚洲欧美日韩精品一区二区| 亚洲欧美日韩国产精品| 亚洲欧美日韩综合网| 成视频免费观看在线看| 成人av电影在线网| 国产福利精品视频| 中文字幕另类日韩欧美亚洲嫩草| 久久精品国产亚洲5555| 在线免费观看日韩欧美| 日本精品免费视频| 三级av在线| 国产一区中文字幕| 国产成人久久精品| 国产真实乱人偷精品视频| 亚洲动漫精品| 日韩美一区二区三区| 99久久国产宗和精品1上映| 在线看福利影| 国产欧美一区二区精品性| 999热视频| 精品一区二三区| 亚洲人成高清| 欧美成人精品影院| 久久久精品成人| 红杏成人性视频免费看| 666欧美在线视频| 国产a级一级片| 少妇av在线| 国产精品的网站| 久久婷婷开心| 韩国av永久免费| 国内一区二区在线| 青草青草久热精品视频在线网站| 久久久久97国产| 久久精品亚洲人成影院| 亚洲人成五月天| 日韩少妇一区二区| 精品91福利视频| 欧美日韩视频一区二区| 日本一区二区黄色| 91九色国产在线播放| 亚洲精品视频在线| 久久av秘一区二区三区| 成年网站在线| 国产亚洲欧美在线| 免费久久99精品国产自| 香蕉视频成人在线| 高清国产一区二区| 亚洲自拍偷拍一区| 99精品免费观看| 国产一区二区三区综合| 国产日产欧美精品| 依依成人在线视频| 免费高清在线一区| 国产精品美女无圣光视频| 国产91国语对白在线| 免费在线亚洲| 欧美性受xxx| 三级黄色在线视频| 免费亚洲视频| 国产精品成人在线| 成人免费一区二区三区| 日本欧美加勒比视频| 国产精品普通话| 怡红院男人天堂| 精品写真视频在线观看| 成人午夜在线影院| 国产夫妻自拍av| 成人性生交大片免费看中文| 国产另类自拍| 日本ー区在线视频| 国产日韩欧美在线一区| 亚洲午夜高清视频| 成人在线观看免费网站| 亚洲综合色丁香婷婷六月图片| 男人添女人荫蒂免费视频| 在线女人免费视频| 欧美在线视频全部完| 久久久精品高清| 91久久偷偷做嫩草影院电| 日韩精品一区二区三区中文不卡| 无码任你躁久久久久久老妇| 丝袜美腿综合| 中文字幕在线看视频国产欧美在线看完整 | 亚洲电影一二三区| 草莓福利社区在线| 精品久久久久久久久久国产| 国产视频在线视频| 国产专区精品| 亚洲精品久久久久久下一站| 性猛交娇小69hd| 欧美激情日韩| 热99在线视频| 99国产精品欲| 久久久亚洲高清| 色一情一乱一乱一区91| 中文一区一区三区高中清不卡免费| 色综合久久九月婷婷色综合| 婷婷中文字幕在线观看| 欧美在线导航| 超碰精品一区二区三区乱码| 五月天综合激情网| 精品午夜久久福利影院| 狠狠色伊人亚洲综合网站色| 免费观看在线黄色网| 天天影视网天天综合色在线播放 | 依依成人综合网| 精品一区二区免费看| 国内成+人亚洲| 日本福利专区在线观看| 黄色成人在线播放| 不用播放器的免费av| 亚洲妇女av| 欧美激情免费在线| 91成人国产综合久久精品| 波多野结衣精品在线| 警花观音坐莲激情销魂小说| 亚洲wwww| 日韩av在线不卡| 日本在线一级片| 奇米四色…亚洲| 欧美极品jizzhd欧美| www555久久| 91精品久久久久久久91蜜桃| 又色又爽的视频| 免费视频一区| 久久精品人成| 欧美日韩国产观看视频| 日韩一本二本av| 亚洲一级理论片| 日韩黄色片在线观看| 蜜桃999成人看片在线观看| 免费在线观看av电影| 欧美男同性恋视频网站| 最新中文字幕av| 欧美亚洲三级| 久久超碰亚洲| 九九精品调教| 欧美不卡在线视频| 18岁成人毛片| 国产激情精品久久久第一区二区 | 求av网址在线观看| 欧美三级日韩三级国产三级| 丰满少妇高潮一区二区| 乱码第一页成人| 欧美高清视频一区二区三区在线观看| 91精品国产黑色瑜伽裤| 亚洲а∨天堂久久精品喷水| 精品无码av在线| 粉嫩aⅴ一区二区三区四区五区| 欧美大片免费播放| av一级亚洲| 欧美激情在线观看视频| 亚洲国产精品二区| 亚洲一区二区高清| 先锋资源av在线| 先锋亚洲精品| 午夜精品区一区二区三| 久久亚洲国产精品尤物| 中文字幕在线亚洲| 国产精品人人妻人人爽| 一区二区三区中文免费| 久久久久久久久久影视| 国产日产高清欧美一区二区三区| 久久国产精品一区二区三区| sis001欧美| 中文字幕av一区二区| 国产一区二区三区黄片| 亚洲黄色片在线观看| 波多野结衣视频播放| 天堂在线一区二区| 亚洲国产精品日韩| 欧美日本三级| 久久免费福利视频| 每日更新av在线播放| 欧美日韩一区二区三区不卡| 色在线观看视频| 成+人+亚洲+综合天堂| 无码人妻丰满熟妇区毛片18| 精品国产一区二区三区四区| 国产日韩中文在线| 国产偷倩在线播放| 国产一区二区三区网站| 国产内射老熟女aaaa∵| 五月婷婷另类国产| 久久久久久久久福利| 国产精品一二三四| 337p粉嫩大胆噜噜噜鲁| 久久视频精品| 狠狠爱一区二区三区| 韩日精品一区| 欧美激情欧美激情| аⅴ资源新版在线天堂| 日韩欧美一二三四区| www.久久久久久久| 亚洲欧美日韩综合aⅴ视频| 中文字幕一区二区久久人妻网站 | 国产精品手机播放| 91丝袜在线| 久久九九免费视频| 亚州男人的天堂| 91精品国产综合久久福利软件| 国产大片中文字幕| 国产精品私人自拍| 国产白嫩美女无套久久| 精品一区二区三区的国产在线播放| 国产一区二区三区小说| 国产精品久久占久久| 久久久久久久久一区| **日韩最新| 国产成人免费av电影| 欧美理论电影| 最近2019年日本中文免费字幕 | 欧美影院视频| 国产精品免费小视频| 天堂在线中文网官网| 大胆欧美人体视频| 成人精品福利| 国产偷国产偷亚洲清高网站| 午夜精品一二三区| 欧美日韩免费观看一区三区| 中文字幕av影院| 亚洲超碰97人人做人人爱| 欧美激情图片小说| 中文字幕在线观看不卡视频| 中文字幕在线观看的网站| 成人精品在线视频观看| 日本人dh亚洲人ⅹxx| 蜜臀av一级做a爰片久久| 日韩精品视频久久| 亚洲精品看片| 欧美精品自拍视频| 欧美午夜不卡| 天堂а√在线中文在线| 亚洲女同中文字幕| 在线播放豆国产99亚洲| 成人网18免费网站| 日韩欧美手机在线| 国产调教一区二区三区| 欧美日韩精品免费在线观看视频| 老司机aⅴ在线精品导航| 成人3d动漫一区二区三区91| 国产亚洲久久| 91久久久久久久久| 91麻豆精品| 91色视频在线导航| 精品一区二区三区免费看| 91亚洲精品一区二区| 超碰国产精品一区二页| 91九色国产视频| 日本免费一区二区视频| 97中文在线观看| 国产伦精品一区二区三区免费优势 | 久久久久久一级片| 公侵犯人妻一区二区三区| 久久综合色播五月| 久久中文字幕精品| 国产精品乱码妇女bbbb| 国产极品美女在线| 一区二区三区在线免费观看 | av资源中文在线| 在线观看91av| www精品国产| 精品91自产拍在线观看一区| 十八禁一区二区三区| 国产手机视频精品| 77导航福利在线| 久久夜精品va视频免费观看| 欧美卡一卡二| 日韩免费av片在线观看| 韩日一区二区| av一区二区三区免费| 日本午夜精品| 亚洲欧美久久234| 午夜视频精品| 国内外成人免费激情视频| 蜜臂av日日欢夜夜爽一区| 深夜做爰性大片蜜桃| av动漫一区二区| 国产三级在线观看完整版| 亚洲日本一区二区三区| 香蕉免费毛片视频| 欧美日韩视频在线第一区| 国产www免费观看| 亚洲美女自拍视频| 麻豆视频免费在线观看| 国内精品400部情侣激情| 国产成人免费9x9x人网站视频| 成人在线小视频| 日韩电影不卡一区| 日日噜噜噜夜夜爽爽| 香蕉视频成人在线观看| 999这里有精品| 91视频一区二区三区| 天天鲁一鲁摸一摸爽一爽| 欧美日韩精品在线播放| 国产又色又爽又黄又免费| 国产视频久久久| a级毛片免费观看在线| 欧美最顶级的aⅴ艳星| 日韩三级精品| 日产精品久久久一区二区| 狠狠干成人综合网| 玖玖爱视频在线| 97se亚洲国产综合自在线 | 亚洲精品免费看| 无码人妻精品一区二区蜜桃色欲| 忘忧草在线日韩www影院| 深夜精品寂寞黄网站在线观看| av有码在线观看| 91精品久久久久| 视频一区欧美| 黄色一级片在线看| 国产乱国产乱300精品| 三区四区在线观看| 欧美日在线观看| 免费激情视频网站| 久久人人爽人人爽人人片亚洲| 欧美中文字幕精在线不卡| 激情伦成人综合小说| 欧美激情五月| 三级性生活视频| 国产精品免费网站在线观看| 最近免费中文字幕大全免费版视频| 精品久久久久久亚洲综合网 | 日韩精品社区| 国产精品无码免费专区午夜| 国产在线精品免费av| 五月激情四射婷婷| 91电影在线观看| 美州a亚洲一视本频v色道| 91po在线观看91精品国产性色| 日韩精品成人在线观看| 国产精品夜夜夜爽张柏芝| 久久99热国产| 91视频免费看片| 欧美三级乱人伦电影| 国产无套粉嫩白浆在线2022年| 欧美一二三视频| 欧美顶级毛片在线播放| 欧美一级欧美一级| 不卡高清视频专区| 国产网站在线看| 日韩成人在线网站| 老司机深夜福利在线观看| 久久99九九| 天使萌一区二区三区免费观看| 亚洲天堂视频一区| 色噜噜狠狠色综合欧洲selulu| 九色在线观看视频| 国产精品免费一区二区三区都可以 | 极品少妇xxxx精品少妇| 一区二区三区四区五区| 日韩午夜激情免费电影| 九色91在线| 欧美极品日韩| 久久99日本精品| 麻豆91精品91久久久| 亚洲高清av在线| 成人影院入口| 亚洲日本精品| 国产成a人亚洲| 日韩在线视频免费播放| 国产亚洲精品一区二区| 中文成人在线| 久艹视频在线免费观看| 久久精品一区二区| 一本色道久久综合无码人妻| 欧美区二区三区| 日韩美女精品| 国产一伦一伦一伦| 一区二区日韩电影| 欧美日韩在线中文字幕| 国产女精品视频网站免费| 国产一区久久| 人妻一区二区视频| 日韩一区二区三区免费看 | 一级黄色录像毛片| 制服丝袜一区二区三区| 中文字幕在线播放网址| 狠狠色噜噜狠狠狠狠色吗综合| 国产精品日韩| 国产人与禽zoz0性伦| 午夜精品福利久久久| 国产乱视频在线观看| 91在线精品视频| 亚洲在线网站| av在线免费播放网址| 亚洲高清在线观看| 精品日韩视频| 日韩国产一级片| 欧美激情中文不卡| 污污网站免费在线观看| 国产精品成人观看视频国产奇米| 欧美日韩爆操| 色欲av无码一区二区三区| 日韩一区二区三|