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

一個好的組件應該是什么樣的?

開發 開發工具
隨著”微前端“概念的不斷醞釀,越來越多的團隊開始將自己的業務處理為不同的組件,編排到一個業務頁面中去,因此對組件的維護將會變得越來越重要。對于大部分前端在組件開發上都會遇到的問題和痛點,本文將分享作者在組件開發上的一些思考以及應該如何維護自己的組件庫。

隨著”微前端“概念的不斷醞釀,越來越多的團隊開始將自己的業務處理為不同的組件,編排到一個業務頁面中去,因此對組件的維護將會變得越來越重要。對于大部分前端在組件開發上都會遇到的問題和痛點,本文將分享作者在組件開發上的一些思考以及應該如何維護自己的組件庫。

背景

19 年 6 月左右,我發布過一篇文章《Bit 初體驗》 。在梳理這篇文章的過程中,我可以說深度體驗了一把 bit 所提出的概念和做法,就像一顆種子種在我的腦海中,一開始我覺得這東西沒什么。

我還記得我第一次與我的同事分享 bit 后,他說:

emm,雖然你講了這么多,但是我覺得好像沒有那么...有體感?

感覺沒什么卵用?

啊,emm,既然你說了,就像你說的。我覺得我們現在如果引入 bit 會不會對我們的日常工作帶來很多額外的工作量。

這種反應很正常,我是在 18 年初,就在 Vue 的官網見到過 bit ,當時我點進去大致瀏覽過一下。我當時的感受就是,沒什么卵用,無非就是 " 前端垂直領域的 git "。對國內的支持情況還不咋地,連一篇像樣的中文文檔都找不到。

在我們的團隊中一下子直接切換到 bit 的工作流,這確實不現實,在公司有那么多的基礎建設都不知道 bit 這么個玩意。

但是,bit 的做法和概念,卻是非常非常有價值和可以借鑒的!

所以,我想做一件事情,一步一步的把 bit 的玩法用我們熟悉的方式引入進來甚至有所延伸擴展,讓大家認同其中的好處和價值。

認識組件

隨著近些年”微前端“概念的不斷醞釀,越來越多的團隊開始著手將自己的業務處理為不同組件,然后通過一些微前端做法,編排到一個業務頁面中去。

那么對于組件的維護就會變得越來越重要。所以,先來看看現在大多數團隊是怎么維護組件的吧!

  • 大庫型,Antd、Element 標準的大庫型
  • 一次型,完全業務組件,用完一次再也不維護
  • 高復用型,一看就應該單獨封裝以后給其他人用,比如:視頻播放器
  • 項目融合型,與業務項目在一起,混合 store,不分你我

我暫時能想到的就這幾種類型的組件,如果你的團隊也在維護自己的一套組件庫,那么應該很容易理解我上面所說的。

我相信,既然這么做了,肯定有這么做的理由和好處,沒有人會閑著沒事找麻煩做不是,那么這些做法都有什么好處和痛點呢?我從幾個方面入手分別分析一下。

方便、快捷

組件嘛,當然是最快能跑起來,最方便能看到效果最好咯。就這點來講,還有什么比直接在業務項目里擼組件更快的方式嗎!?

現在用個展示的面板,立馬去 components 目錄擼一個。

數據?不是有 store 嗎?引入進來不就拿到數據了!

所見即所得,現在改完馬上看到頁面上的效果!無法反駁..

這么看確實開發這個組件是好快了,但是從整個業務需求實現來看,這么做真的是最快的嗎?如果這樣的做法是最快捷的,那為什么那么多團隊在強調沉淀、封裝、抽象呢?

其實很多組件當時看起來,這輩子就只可能用一次,不用封裝。可是往往交互稿過來的時候就會發現,這個樣式好像我在哪里見過。然后去各種業務項目里一頓翻,哇終于找到了,復制過來發現各種爆紅,定睛一看,store???

所以,聰明的團隊早已洞察這一切,讓我們把組件都維護到同一個地方,然后大家寫好文檔,用的時候從庫里面取就可以了,有 Bug 的話統一修復就是,棒 ??!

可維護性

于是乎,大家便如火如荼的開始的組件抽象,組件整改的浩大工程。

一開始,一般會有一個團隊中較為靠譜、能力突出的小伙子(嗯?怎么是我?)去把 Webpack、Babel、TypeScript、Sass\Less、目錄結構、單元測試結構、代碼規范、Review 規范、發布規范這些梳理好,然后寫一個標準的組件出來,最后再強調一下大家一定要按照規范認真維護組件,書寫文檔,編寫單元測試。

從維護性上來講,大家把組件都寫在一個庫里面,然后再用到的項目中直接引入,業務上的問題逐漸被分為組件問題還是項目問題,甚至有些需求可以用這個交互在組件庫中有相似的,用那個組件就可以了,來反駁產品和設計 ??。

就在大家用的不亦樂乎的時候,有一天發現,呀,我們的組件庫怎么打包出來有 10M 啊 ??!

然后找一個靠譜、能力突出的小伙子(沒錯又是我)就去查了下,這個庫是誰引入的?這個組件不是已經有一個了嗎?lodash 不是這么用的呀!這個組件是干什么的,怎么沒文檔?

面對上百個業務組件,只能感嘆一聲業務迭代的可真快啊。

所以,大庫維護固然有大庫維護的好處和適用場景,大家能夠有這樣的抽象思維已經是技術上的突破了,現在只是遇到了另外一個問題,解它!

組件大小、加載性能

接觸 Webpack 的一些周邊工具,比如 analyzer 很容易可找出具體是什么包”霸占“了這么多的流量。

發現原來組件包中還有一些個組件,看上去不應該放在大庫中進行維護,比如那種一次性組件,二次封裝型組件。

因為這種組件可能會引入一個很大的第三方依賴,比如視頻播放器、Banner Swiper 等。

對于這樣的組件,最好的處理方式應該是創建一個獨立的倉庫,封裝完善后,寫好 README,發布至內網 NPM,供業務項目使用。

But you know ,這樣做成本太高,如果有時間的話,我肯定.....balabala...(一般來說,如果你對程序員說一個更好的方案時,除非這個方案他有參與設計,否則大部分回復都是這樣 ??)

當然組件大小這方面也可以通過很多其他方式解決,比如:異步加載,NPM 引入,按需加載等等啦...那么,讓我們談談下面另外一個很重要、又很容易被忽略的部分吧。

組件說明及可索引性

老板,我們今年沉淀了組件 200+,其中有幾個組件寫的特別好,同時支撐了 20+ 項目。

哇,這么棒!來給我看看你們寫的組件長什么樣?啊,這,這樣來看看我們做的這個頁面,這個頁面里面用了這幾個組件,balabala ...

設計:聽說你們已經沉淀了 200+ 組件,能給我們看看有哪些組件嗎?我們在下次設計的時候可以參考這些組件進行輸出,減少溝通成本。

前端:@所有人 這個組件我們庫里面有嗎?有,CascadeSelect。哦,怎么用的?有文檔嗎?.......看下源碼吧。well... ??

組件的說明及可索引性,其實僅次于組件的可用性,甚至更高。

試想下如果今天你寫了個巨牛的組件,復用性、接口設計和交互設計都非常棒,但是你有什么渠道能讓大家一下子就知道嗎,難道你要專門為此拉大家開個會?來今天占用大家1個小時的寶貴時間,介紹下我今天寫的巨牛組件。??

反過來想,如果我在寫組件的時候,反正我這個組件也沒啥亮點,別人應該也不會用到,就不用補充文檔了吧,應該也沒人會知道。哦豁,丸蛋 ??

索引組件,來給大家分享一張圖:

 

??

??

 

如果有一天你團隊的組件庫也能像這樣,一板一眼有圖有真相,那該是多么幸福和享受的一件事情!

我也知道這樣好啊!誰不知道!如果我有時間,我肯定會....balabala...

所以你的意思是讓我們每寫一個組件不但要補充文檔,還要補充用法說明,還要截圖!?

對,還要單獨建庫,還要考慮配置 Webpack、Babel、TypeScript、Sass\Less、目錄結構、單元測試結構、代碼規范、Review 規范、發布規范這些 ??

最*實踐

說這么多呢,主要是想帶讀者們一起思考,也是我寫作的風格(喜歡講故事),大部分內容其實是前端er 都會遇到的問題。

接下就進入正題,說了一大堆問題,總得有點辦法來解決吧!

先看看 bit 是怎么做的吧,bit 首先自身有一定的編譯能力,內置了 Webpack 及一些插件式 loader 來解決 React、Vue 等編譯問題。

對于我們團隊來說,都是使用 React,所以咱們就先從一個編譯 React 的腳手架開始。

如果把每一個組件都作為單獨的 NPM 項目發布,首先要考慮的是,前端一系列的編譯環境。如果我有 N 個前端組件項目,每個前端組件庫的 Webpack、babel 這些都需要重復配置,那真是要頭大的事情,我只是想寫一個組件而已,為什么要考慮這些。所以我們的腳手架首先要具備一些基礎的編譯命令。

啊對了,腳手架還沒有名字,那就暫時叫它:comp 吧 ??

  • comp new:處理按照模板新建一個標準組件
  • 初始化一個標準組件項目結構,所有接入所有 comp 命令
  • 初始化 Git 倉庫
  • 初始化 CI/CD 云構建配置
  • comp start:處理日常開發,附加單個組件展示及調試能力
  • comp watch:處理 babel 及 scss 監聽編譯,用于 npm link 場景
  • comp babel:處理編譯 npm 包
  • comp dev:處理監聽編譯 umd 包,用于代理調試
  • comp build:處理最后編譯過程
  • webpack 編譯 UMD 包
  • Babel 包
  • CI\CD 過程中自動截圖組件
  • CI\CD 過程中自動生成 README
  • 其他 Hook
  • comp test:處理 jest 單元測試

那么等組件初始化以后,目錄結構就長這樣:

??

??

 

項目結構中沒有任何 webpack\babel 配置,當然如果有特殊配置需求,可以建立 comp.config.js 進行配置(此處借鑒很多已有的 cli 處理方式)。

這樣處理的好處是,在項目初始化后,用戶能見到的目錄結構非常清晰明了,項目中不有很多允許配置的地方,所有組件的編譯環境基本可以保證統一。

這都是些非常基礎的功能,當然又是不可缺少的部分,這些基礎命令我就不詳細介紹了,重點在后面。

通過這幾個問題來介紹功能:

你平時開發組件的流程是什么樣子?

平時,一般就是根據設計稿,切分到組件后。

然后去創建組件,最后通過項目引入,一邊看著一邊開發啊。

你開發組件的時候對于你提供的 Props 是如何驗證的?

最簡單的給一個 mock 看看效果唄。

或者寫一個單元測試?

那寫 Mock 的過程算不算是在寫 Usage 呢?

這個,應該也算吧,但是這些都是散落在各個項目里面,有些 mock 驗證完就刪掉了。

誰會閑的沒事在開發的時候把這些補充到 README 里面去啊。

為什么他們不寫文檔?

這還用說?因為懶唄?

那你為啥不寫?emm,那是因為....寫文檔這事兒吧,寫了不一定有人看,還費時間呀!業務需求那么多!我要是有時間的話,我肯定....balabala...

OK,那我們來看下一個問題

一個好的組件文檔需要那幾部分?

開發組件背景,注意事項啥的,這個沒啥太大的必要,有的組件需要的話就補充下,沒有的話就不用補充。

主要需要的一些介紹有 :用法,Props 入參,最好能有個截圖,要是有個 Demo,那簡直完美!

還有安裝、開發、編譯的命令介紹得有吧。

錦上添花的話最好還能有幾個 badge,介紹下源碼是 TypeScript,下載量多少。

但是,要補充這些文檔是在太麻煩了,要一個一個整理,Props 這些信息,用的人可以在組件里面找到啊,我都有些注釋和類型定義的呀!

完成一輪心靈拷問之后,就會發現在整個組件的開發過程中,開發者本人之所以對這個組件這么清楚,是因為開發者其實已經為自己寫過一份 README 了。

  • 用法:組件開發過程中需要看到效果,寫過一些 mock 數據,已經知道什么樣的 props 傳進去會產生什么樣的效果。
  • Props 入參:組件有哪些 Props,所代表的含義是什么,每個 Props 入參類型是什么,已經在 TypeScript 的 Interface 及注釋中有體現。
  • 截圖:有 mock 數據還不知道長什么樣?已經看過 N 多遍了。
  • Demo:根據用法和組件定義,開發調試的就是 Demo。

有了這四個最重要的介紹后,相信大部分開發者也都能知道這個組件是怎么個情況了。

所以,如果我們能把上面這些數據都收集到,是不是就可以利用腳本 自動生成 README 文檔 了呢?

用法 / Usage

要收集用法其實很簡單,如果讓組件有獨立開發的能力,不就可以保留這些 Usage 的 Mock 數據了嗎?

有些人可能沒理解我說的”組件獨立開發的能力“是什么意思,我解釋一下下:我們平時開發一個組件,一般都是把這個組件放置于某個頁面中,一遍調試頁面一遍調試組件。獨立開發組件的意思是,直接啟動一個頁面,可以看到組件的樣子,這個頁面展示的就是圍繞組件的所有信息。

所以在腳手架中,只要在 docs.ts 中書寫需要調試組件相關的 mock 數據,頁面就可以展示出組件的樣子,同時這些 mock 數據可以保留作為 README 文檔數據。

export default function(Component: typeof IComponent, mountNode) { 
/** DOCS_START 請將Demo生成方法都寫在以下區塊內,用于生成README及Riddle **/
ReactDOM.render(
<Component
navigation={true}
pagination={true}
autoplay={true}
dataSource={[
{
href: 'http://xxxxxxxx',
image: 'https://xxxxxxx.cdn.com/tfs/TB1jHkBmNv1gK0jSZFFXXb0sXXa-1440-343.png',
},
{
image: 'https://xxxxxxx.cdn.com/tfs/TB1Y_XacrY1gK0jSZTEXXXDQVXa-1416-813.png',
},
]}
/>,
mountNode,
);
/** DOCS_END **/
}

另外,如果保證這份 demo 的接口輸出統一規范,還可以支持直接生成在 CodePen,Riddle 這些在線編輯的代碼內容。

試想下,你的 README 中如果出現一段 :點擊立即體驗 ,跳轉過去后可以在線編輯實時看到效果,那對于任何看到你組件的同學來說都是一種享受 ??

??

??

 

組件參數 / Props

要收集這部分數據就比較復雜了,我們需要深入分析 TypeScript AST 語法樹,提取出其中組件 props 的類型以及對于Interface的注釋內容。

經過一番 github,終于找到可以實現一個可以處理這件事情的小眾庫:react-docgen-typescript(https://github.com/styleguidist/react-docgen-typescript)。

在開發過程中,因為對一些注釋及類型輸出與我預期的不太一樣,所以我 fork 后做了一些修改,已經可以完成對一個完整組件的 Props 做分析后輸出一份 typefile.json 。

??

??

 

同樣的,通過基于該能力,可以擴展為 webpack 插件 react-docgen-typescript-loader(https://github.com/strothj/react-docgen-typescript-loader),為組件的靜態屬性中添加 __docInfo 屬性,來聲明其屬性內容,于是組件開發過程變可以實現以下效果:

??

??

 

截圖 / Preview

有了組件,有了 Demo,還愁沒有截圖嗎?

直接在構建過程中用 puppeteer ,讀取運行 docs.ts 渲染出組件,進行截圖,然后隨著云構建 CD 過程發到 CDN,就完事了!

最后,README 中加入一些特殊標記,在云構建過程中進行 README 替換生成就可以啦!并不會影響 README 本身要叮囑的內容。

??

??

 

最后,Duang !一份完整,漂亮,詳細的文檔就生成好了,整個過程我們并沒有特意寫過什么 README 方面的內容,一切都是非常輕松標準的進行輸出。

 

??

??

 

結語

在上面的一整套復雜的過程中,看上去最后好像我只得到了一個自動生成 README 的功能。但實際上呢,其實 README 只是一個順帶的產物。

整個過程中,我已經拿到了這個組件的所有我想要拿到的數據,它的 Props,Usage,Preview,版本信息,包名,甚至構建過程會同步發布該組件的 UMD CDN 包及 NPM 包。

接下來,就可以圍繞這些數據和工具,建立和擴展很多功能和平臺。

舉幾個栗子:

  • 建立一個 bit 一樣的,組件平臺,把團隊內的組件收集起來,統一在平臺展示及索引
  • 根據拿到 Props 類型信息做可視化的搭建平臺,把 Props 的傳參直接交給用戶設置,根據不同數據類型提供不同的 Form Setter
  • 看似組件都分布在不同的庫中,卻可以通過組件 cli 做統一的構建處理
  • 非常輕松接入 微前端 框架,因為所有組件的發布構建都是標準的構建協議
  • 通過統計組件發布次數,下載次數,關聯 bug 數評估代碼質量

目前在我們團隊,已經使用該工具產出 100+ 的可用組件,并且發布組件已經成功接入到我們已有的可視化編輯器中。

看一眼結合可視化設置面板后的效果吧:

??

??

 

我發現只要實現過程中,沒有給開發者帶來太多的工作量,又能帶來實時可以看到的效果,開發者會很樂意為那些 Props 做一番解釋和修飾 ??。

我們團隊目前產出的組件看起來一片通透,整齊明了。

我是一個熱愛生活的前端工程師!Yooh!??

【本文為51CTO專欄作者“阿里巴巴官方技術”原創稿件,轉載請聯系原作者】

 

??戳這里,看該作者更多好文??

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2012-12-27 14:54:48

簡歷求職者

2020-03-19 15:21:57

智慧城市藝術社會

2017-12-14 12:19:04

數據中心數據中心專家IT

2022-12-01 16:56:03

智慧城市安全環境能源

2017-03-21 15:20:11

數據團隊模式思路

2021-01-15 23:28:50

區塊鏈開發數字化

2016-03-07 10:18:26

程序員使命感

2021-07-07 10:01:13

編程語言計算機斯坦福大學

2016-03-08 09:41:50

程序員大神成長

2023-03-02 08:37:15

2017-10-17 12:24:05

AndroidJavaUDP協議

2011-12-15 18:38:57

2023-07-10 18:30:48

2017-09-04 16:43:08

Linux云原生環境開源

2018-08-23 17:38:01

多云混合云云平臺

2015-12-01 10:54:49

安全產品采購供應商選擇信息安全官

2020-09-21 08:01:35

Git操作系統Linux

2023-10-13 08:51:11

IT員工iPod

2022-07-21 07:09:21

React前端項目

2022-02-15 10:45:50

軟件汽車開發
點贊
收藏

51CTO技術棧公眾號

免费毛片b在线观看| 国产99久久九九精品无码免费| 亚洲欧美日本伦理| 在线观看av一区二区| 伊人久久大香线蕉精品| 国产 欧美 自拍| 老司机精品久久| 久久成人在线视频| 特级西西人体wwwww| 国产精品天堂蜜av在线播放| 怡红院av一区二区三区| 久久综合久久综合这里只有精品| 中文字幕乱码中文字幕| 影音先锋日韩资源| 在线观看国产欧美| 久久国产劲爆∧v内射| 中文字幕日本一区二区| 亚洲线精品一区二区三区八戒| 欧美激情第六页| www黄色在线观看| 美女在线视频一区| 欧美一级淫片播放口| 成熟的女同志hd| 欧美少妇性xxxx| 亚洲激情久久久| 久久久久久久久久久影视| 亚洲日本网址| 亚洲成精国产精品女| 好色先生视频污| 91在线不卡| 91丨九色丨尤物| 成人在线观看视频网站| 中文av免费观看| 久久激情综合| 97精品视频在线播放| 全网免费在线播放视频入口 | 国产精品无码久久久久久| 日本一区二区三区视频在线看| 欧美探花视频资源| 爱福利视频一区二区| 国产第一页在线视频| 国产精品美女一区二区在线观看| 日本黑人久久| 五月天婷婷社区| www.av亚洲| 成人影片在线播放| 亚洲av无码乱码国产精品久久| 精品系列免费在线观看| 国产精品男人的天堂| 嫩草影院一区二区三区| 久久精品人人做人人爽电影蜜月| 91sa在线看| 久久久久久久极品| 国产日产高清欧美一区二区三区| 久久免费精品视频| 国产污视频在线看| 国产日韩一区二区三区在线| 久久久伊人欧美| 国产污片在线观看| 国产日韩欧美高清免费| 欧洲精品在线视频| 国产伦精品一区二区三区视频我| 久久精品毛片| 国产精品久久久久久久7电影| 国产一区免费看| 麻豆精品新av中文字幕| 亚洲精品欧美一区二区三区| 国内老熟妇对白hdxxxx| 白白色亚洲国产精品| 精品视频导航| 国产中文字幕在线播放| 国产精品私人影院| 日本女人高潮视频| av成人福利| 一本色道a无线码一区v| 三级在线视频观看| 91麻豆精品国产综合久久久 | 欧美中文字幕在线播放| 欧美人一级淫片a免费播放| 奇米色777欧美一区二区| 国产精品视频区1| 99久久久国产精品无码免费| 成人午夜免费电影| 欧美日韩国产三区| 日本在线视频观看| 夜夜嗨av一区二区三区中文字幕| 国产素人在线观看| 激情中国色综合| 日韩欧美亚洲国产另类| 国产制服丝袜在线| 91日韩视频| 久久久久亚洲精品| 成人a v视频| 国产乱子伦一区二区三区国色天香| 草莓视频一区| 黄色av网站在线| 亚洲男人的天堂一区二区| 国产91xxx| 青青伊人久久| 日韩的一区二区| 99热这里只有精品4| 亚洲精品123区| 2019av中文字幕| 国产情侣激情自拍| 久久人人97超碰com| 久久av秘一区二区三区| 成人动漫一区| 精品欧美一区二区在线观看| 丰腴饱满的极品熟妇| 欧美在线免费| 国产精品欧美一区二区| 人妻91麻豆一区二区三区| 中文字幕一区av| 高清在线观看免费| 中文字幕av一区二区三区四区| 一区二区三区 在线观看视| 国产一级生活片| 国产在线视频不卡二| 日韩精品av一区二区三区| 岛国毛片av在线| 欧美午夜精品久久久| 大尺度做爰床戏呻吟舒畅| 国产精品99在线观看| 奇门遁甲1982国语版免费观看高清| 国产高清第一页| 国产精品女上位| 国产精品亚洲αv天堂无码| 白白在线精品| 久久亚洲精品一区二区| 夜夜躁日日躁狠狠久久av| 91在线国内视频| 青青青青在线视频| 国产精品美女久久久久| 色偷偷av一区二区三区乱| 国产精品乱码一区二区视频| 97精品国产97久久久久久久久久久久| 国产又粗又长又爽视频| 台湾天天综合人成在线| 中文亚洲视频在线| 综合久久中文字幕| 中文一区二区在线观看| 男人舔女人下面高潮视频| 一区二区小说| 日韩**中文字幕毛片| 欧美日韩一区二 | 超碰97免费观看| 日韩精品麻豆| 国产亚洲xxx| 欧美日韩一级黄色片| 99精品一区二区| 天堂…中文在线最新版在线| 99这里只有精品视频| 九九热在线精品视频| 国产成年妇视频| 亚洲天天做日日做天天谢日日欢| 伊人国产精品视频| **女人18毛片一区二区| 91久热免费在线视频| 欧美69xxx| 7777精品久久久大香线蕉| 手机av在线看| 国产v综合v亚洲欧| 久久99久久99精品| 国产成人av毛片| 97在线看福利| 国产在线观看免费| 欧美日韩一二区| 亚洲波多野结衣| 国产成人精品综合在线观看 | 中文字幕在线三区| 欧美成人性福生活免费看| 久久久久久久久久久97| 99久久精品99国产精品| 男人插女人下面免费视频| 99久久综合| 粉嫩av免费一区二区三区| 欧美男男激情videos| 国产一区二区黄| 99在线精品视频免费观看20| 亚洲自拍偷拍欧美| 三级网站在线免费观看| 久久精品噜噜噜成人av农村| 国产91在线亚洲| 制服丝袜日韩| 91亚洲精品久久久| 麻豆mv在线看| 日韩中文字幕av| 亚洲国产www| 色88888久久久久久影院野外| 成年人视频软件| proumb性欧美在线观看| 亚洲一级免费在线观看| 精品91视频| 亚洲国产日韩综合一区| 99re91这里只有精品| 国产精品福利久久久| 91在线中文| 一区二区三区视频免费在线观看 | 精品一区二区成人精品| 夜夜添无码一区二区三区| 日韩精品免费| 久久99精品国产99久久| 成人在线啊v| 欧美最猛性xxxxx免费| 综合久久2o19| 中文字幕在线看视频国产欧美在线看完整 | 主播国产精品| 亚洲天堂开心观看| 午夜精品一二三区| 欧美日韩中文字幕一区二区| 三级黄色在线视频| 亚洲精品国产成人久久av盗摄| 亚洲av熟女国产一区二区性色| 国产成人免费在线观看不卡| 免费一区二区三区在线观看 | 青青青国产精品一区二区| 黄色免费网站在线| 国产一区二区三区丝袜| 五月婷婷久久久| 日韩精品一区在线| 国产精品欧美激情在线| 日本精品一区二区三区四区的功能| 久久久精品视频免费观看| 国产精品成人在线观看| 国产在线观看h| 91视频精品在这里| 四虎精品一区二区| 国产成人av一区二区三区在线| 日本a√在线观看| 亚洲欧美日本日韩| 草草久久久无码国产专区| 欧美精品99| 99热这里只有精品7| 久久精品国产大片免费观看| 日韩电影在线播放| 精品国产91| 久久免费看av| 亚洲电影一级片| 久久综合精品一区| 中文字幕av一区二区三区人| 黄色小网站91| 日韩精品丝袜美腿| 蜜桃av噜噜一区二区三区| 欧洲亚洲视频| 久久综合精品一区| 九九久久电影| 日韩国产精品一区二区| 精品亚洲成人| 亚洲成色www久久网站| 久久电影院7| 亚洲一区二区在| 天天射成人网| 亚洲小视频在线播放| 国产一区久久| 亚洲美免无码中文字幕在线 | 国产999精品久久久| 韩国美女久久| 国产精品欧美激情| 国产精品一区二区三区av | 国产综合在线播放| 亚洲国产日韩欧美在线99| 五月激情丁香婷婷| 亚洲欧洲在线播放| 在线视频婷婷| 另类少妇人与禽zozz0性伦| a级毛片免费观看在线| 欧美肥婆姓交大片| 美女网站在线看| 情事1991在线| 亚洲精品伊人| 国产精品视频福利| av一区二区在线播放| 波多野结衣三级在线| 雨宫琴音一区二区在线| 日本不卡在线观看视频| 美女www一区二区| 伊人影院在线观看视频| 91视频观看免费| 少妇精品无码一区二区免费视频| 一色屋精品亚洲香蕉网站| 久久久久久久久久久久国产| 色综合天天天天做夜夜夜夜做| 88av在线视频| 精品成人佐山爱一区二区| 国产精品一二三区视频| 成年人精品视频| 亚洲黄色网址| 亚洲最大成人在线| 久久最新网址| 毛片在线视频观看| 麻豆久久婷婷| 亚洲欧美日韩中文字幕在线观看| 91蜜桃在线观看| 乱老熟女一区二区三区| 午夜精品久久久久久久| 亚洲一级视频在线观看| 欧美精品一区二区三区在线播放| 91社区在线| **欧美日韩vr在线| 亚洲天堂中文字幕在线观看| 先锋在线资源一区二区三区| 99精品久久| 麻豆网站免费观看| 欧美国产一区视频在线观看| 国产福利久久久| 91麻豆精品国产综合久久久久久| 色哟哟在线观看| 久久久久久中文| 四虎国产精品免费久久5151| 欧洲久久久久久| 亚洲精选一区| 乳色吐息在线观看| 亚洲欧洲国产日本综合| 中文字幕免费高清网站| 亚洲国产精品成人av| 91麻豆免费在线视频| 国产精品va在线播放| 欧美美女在线直播| 乱熟女高潮一区二区在线| 老司机精品视频导航| 国产人妻一区二区| 亚洲成av人片在线| 国产av无码专区亚洲av| 日韩中文字幕免费视频| 欧美暴力调教| 日韩精品久久一区二区三区| 国产欧美日韩综合一区在线播放| 国产艳妇疯狂做爰视频| 亚洲精品乱码久久久久久久久| 亚洲中文字幕在线观看| 伊人激情综合网| 欧美va在线| 日本精品一区二区三区视频| 亚洲综合精品| 三级黄色片网站| 欧美日韩亚洲视频一区| 日日躁夜夜躁白天躁晚上躁91| 色综合久久天天综线观看| 视频一区国产| 国产精品一二三在线观看| 国产自产高清不卡| 国产精品国产精品88| 欧美一区国产二区| 国产精品久久久久久福利| 成人久久久久久久| 偷偷www综合久久久久久久| 蜜桃福利午夜精品一区| 亚洲视频图片小说| 国产精品视频一二区| 操人视频在线观看欧美| 免费观看亚洲视频大全| 国产情侣第一页| 成人国产精品免费观看视频| 国产成人一区二区三区影院在线| 亚洲国产欧美自拍| 亚洲天堂av影院| 日韩久久在线| 韩国三级电影一区二区| 黄色一级片中国| 精品国一区二区三区| av女在线播放| 日韩欧美视频一区二区| 久久av资源网| 国产在线拍揄自揄拍| 亚洲精品第一页| 欧美暴力调教| 男插女免费视频| 成人sese在线| 日本成人一级片| 毛片精品免费在线观看| 超碰97久久国产精品牛牛| 国产日韩一区二区在线| 中文字幕不卡在线观看| 99热这里只有精品66| 91禁外国网站| 欧美www视频在线观看| 中国特级黄色片| 色欧美片视频在线观看| 日本中文字幕电影在线免费观看| 9a蜜桃久久久久久免费| 国产精品免费看| 国产成人免费在线观看视频| 欧美成人a在线| 亚洲成人激情社区| 日韩不卡一二区| 久久久一区二区三区捆绑**| 夜夜爽8888| 91av成人在线| 我不卡影院28| 公侵犯人妻一区二区三区| 91精品国产综合久久久久久 | 福利成人在线观看| 国产精品高清一区二区三区| 日韩精品一二三四| 国产在线免费视频| 精品国产自在精品国产浪潮| 一本久久青青| 免费看三级黄色片| 欧美视频在线观看一区二区| 懂色av一区|