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

2019給前端的5個建議

開發(fā) 架構(gòu)
由于歷史原因,開發(fā)框架同時基于 React 和 Angular,考慮到產(chǎn)品的復(fù)雜性、人員的短缺和技術(shù)背景各異,我們嘗試了各種方法打磨工具體系來提升開發(fā)效率,以下是節(jié)選的5項(xiàng)主要方法。
2019 農(nóng)歷新年即將到來,是時候總結(jié)一下團(tuán)隊(duì)過去一年的技術(shù)沉淀。過去一年我們支撐的數(shù)據(jù)相關(guān)業(yè)務(wù)突飛猛進(jìn),其中兩個核心平臺級產(chǎn)品代碼量分別達(dá)到30+萬行和80+萬行,TS 模塊數(shù)均超過1000個,協(xié)同開發(fā)人員增加到20+人。由于歷史原因,開發(fā)框架同時基于 React 和 Angular,考慮到產(chǎn)品的復(fù)雜性、人員的短缺和技術(shù)背景各異,我們嘗試了各種方法打磨工具體系來提升開發(fā)效率,以下是節(jié)選的5項(xiàng)主要方法。

一、基于 Redux 的狀態(tài)管理

從2013年React發(fā)布至今已近6個年頭,前端框架逐漸形成 React/Vue/Angular 三足鼎立之勢。幾年前還在爭論單向綁定和雙向綁定孰優(yōu)孰劣,現(xiàn)在三大框架已經(jīng)不約而同選擇單向綁定,雙向綁定淪為單純的語法糖。框架間的差異越來越小,加上 Ant-Design/NG-ZORRO/ElementUI 組件庫的成熟,選擇任一你熟悉的框架都能高效完成業(yè)務(wù)。

那接下來核心問題是什么?我們認(rèn)為是狀態(tài)管理。簡單應(yīng)用使用組件內(nèi) State 方便快捷,但隨著應(yīng)用復(fù)雜度上升,會發(fā)現(xiàn)數(shù)據(jù)散落在不同的組件,組件通信會變得異常復(fù)雜。我們先后嘗試過原生 Redux、分形 Fractal 的思路、自研類 Mobx 框架、Angular Service,最終認(rèn)為 Redux 依舊是復(fù)雜應(yīng)用數(shù)據(jù)流處理最佳選項(xiàng)之一。

慶幸的是除了 React 社區(qū),Vue 社區(qū)有類似的 Vuex,Angular 社區(qū)有 NgRx 也提供了幾乎同樣的能力,甚至 NgRx 還可以無縫使用 redux-devtools 來調(diào)試狀態(tài)變化。 


無論如何優(yōu)化,始終要遵循 Redux 三原則:

原則 方法 引發(fā)的問題
Single source of truth 組件 Stateless,數(shù)據(jù)來源于 Store 如何組織 Store?
State is read-only 只能通過觸發(fā) action 來改變 State action 數(shù)量膨脹,大量樣板代碼
Changes are made with pure functions Reducer 是純函數(shù) 副作用如何處理,大量樣板代碼

這三個問題我們是通過自研 iron-redux 庫來解決,以下是背后的思考:

如何組織 Action?

action type 需要全局惟一,因此我們給 action type 添加了 prefix,其實(shí)就是 namespace 的概念

為了追求體驗(yàn),請求(Fetch)場景需要處理 3 種狀態(tài),對應(yīng) LOADING/SUCCESS/ERROR 這 3 個action,我們通過 FetchTypes 類型來自動生成對應(yīng)到 3 個 action

如何組織 Store/Reducer?

  • reducer 和 view 不必一一對應(yīng),應(yīng)用中同時存在組件樹和狀態(tài)樹,按照各自需要去組織,通過 connect 來綁定狀態(tài)樹的一個或多個分支到組件樹
  • 通過構(gòu)造一些預(yù)設(shè)數(shù)據(jù)類型來減少樣板代碼。對于 Fetch 返回的數(shù)據(jù)我們定義了 AsyncTuple 這種類型,減少了樣板代碼
  • 明確的組織結(jié)構(gòu),第1層是 ROOT,第2層是各個頁面,第3層是頁面內(nèi)的卡片,第4層是卡片的數(shù)據(jù),這樣劃分最深處基本不會超過5層

最終我們得到如下扁平的狀態(tài)樹。雖龐大但有序,你可以快速而明確的訪問任何數(shù)據(jù)。 

如何減少樣板代碼?

使用原生 Redux,一個常見的請求處理如下。非常冗余,這是 Redux 被很多人詬病的原因。 

  1. const initialState = { 
  2.   loading = true
  3.   error = false
  4.   data = []};function todoApp(state = initialState, action) { 
  5.   switch (action.type) { 
  6.     case DATA_LOADING: 
  7.       return { 
  8.         ...state, 
  9.         loading: true
  10.         error: false 
  11.       } 
  12.     case DATA_SUCCESS: 
  13.       return { 
  14.         ...state, 
  15.         loading: false
  16.         data: action.payload 
  17.       } 
  18.     case DATA_ERROR: 
  19.       return { 
  20.         ...state, 
  21.         loading: false
  22.         error: true 
  23.       } 
  24.     default
  25.       return state 
  26.   }} 

使用 iron-redux 后: 

  1. class InitialState { 
  2.   data = new AsyncTuple(true);}function reducer(state = new InitialState(), action) { 
  3.   switch (action.type) { 
  4.     /** 省略其它 action 處理 */ 
  5.     default
  6.       return AsyncTuple.handleAll(prefix, state, action); 
  7.   }} 

代碼量減少三分之二!!

主要做了這2點(diǎn):

  • 引入了預(yù)設(shè)的 AsyncTuple 類型,就是 {data: [], loading: boolean, error: boolean} 這樣的數(shù)據(jù)結(jié)構(gòu);
  • 使用 AsyncTuple.handleAll 處理 LOADING/SUCCESS/ERROR 這 3 種 action,handleAll 的代碼很簡單,使用 if 判斷 action.type 的后綴即可,源碼在這里。

曾經(jīng) React 和 Angular 是兩個很難調(diào)和的框架,開發(fā)中浪費(fèi)了我們大量的人力。通過使用輕量級的 iron-redux,完全遵循 Redux 核心原則下,我們內(nèi)部實(shí)現(xiàn)了除組件層以外幾乎所有代碼的復(fù)用。開發(fā)規(guī)范、工具庫達(dá)成一致,開發(fā)人員能夠無縫切換,框架差異帶來的額外成本降到很低。

二、全面擁抱 TypeScript

TypeScript 目前可謂大紅大紫,根據(jù) 2018 stateofjs,超過 50% 的使用率以及 90% 的滿意度,甚至連 Facebook 的 Jest 也正在從 Flow 切換到 TS。如果你還沒有使用,可以考慮切換,絕對能給項(xiàng)目帶來很大提升。過去一年,我們從部分使用 TS 變?yōu)槿媲袚Q到 TS,包括我們自己開發(fā)的工具庫等。

TS 最大的優(yōu)勢是它提供了強(qiáng)大的靜態(tài)分析能力,結(jié)合 TSLint 能對代碼做到更加嚴(yán)格的檢查約束。傳統(tǒng)的 EcmaScript 由于沒有靜態(tài)類型,即使有了 ESLint 也只能做到很基本的檢查,一些 typo 問題可能線上出了 Bug 后才被發(fā)現(xiàn)。

下圖是一個前端應(yīng)用常見的4層架構(gòu)。代碼和工具全面擁抱 TS 后,實(shí)現(xiàn)了從后端 API 接口到 View 組件的全鏈路靜態(tài)分析,具有了完善的代碼提示和校驗(yàn)?zāi)芰Α?nbsp; 

前后端協(xié)作簡圖 

除了上面講的 iron-redux,我們還引入 Pont 實(shí)現(xiàn)前端取數(shù),它可以自動把后端 API 映射到前端可調(diào)用的請求方法。

Pont 實(shí)現(xiàn)原理:

Pont(法語:橋) 是我們研發(fā)的前端取數(shù)層框架。對接的后端 API 使用 Java Swagger,Swagger 能提供所有 API 的元信息,包括請求和響應(yīng)的類型格式。Pont 解析 API 元信息生成 TS 的取數(shù)函數(shù),這些取數(shù)函數(shù)類型完美,并掛載到 API 模塊下。最終代碼中取數(shù)效果是這樣的: 

Pont 實(shí)現(xiàn)的效果有:

  • 根據(jù)方法名自動匹配 url、method,并且對應(yīng)到 prams、response 類型完美,并能自動提示
  • 后端 API 接口變更后,前端相關(guān)聯(lián)的請求會自動報(bào)錯,再也不擔(dān)心后端悄悄改接口前端不知曉
  • 再也不需要前后端接口約定文檔,使用代碼保證前端取數(shù)和后端接口定義完全一致

另外 iron-redux 能接收到 Pont 接口響應(yīng)數(shù)據(jù)格式,并推導(dǎo)出整個 Redux 狀態(tài)樹的靜態(tài)類型定義,Store 中的數(shù)據(jù)完美的類型提示。效果如下: 


最終 TS 讓代碼更加健壯,尤其是對于大型項(xiàng)目,編譯通過幾乎就代表運(yùn)行正常,也給重構(gòu)增加了很多信心。

三、回歸 Sass/Less

2015 年我們就開始實(shí)踐 CSS Modules,包括后來的 styled-components 等,到 2019 年 css-in-js 方案依舊爭論不休,雖然它確實(shí)解決了一些 CSS 語言天生的問題,但同時增加了不少成本,新手不夠友好、全局樣式覆蓋成本高漲、偽類處理復(fù)雜、與antd等組件庫結(jié)合有坑。與此同時 Sass/Less 社區(qū)也在飛速發(fā)展,尤其是 Stylelint 的成熟,可以通過技術(shù)約束的手段來避免 CSS 的 Bad Parts。

全局污染:約定每個樣式文件只能有一個頂級類,如 .home-page{ .top-nav {/**/}, .main-content{ /**/ } }。如果有多個頂級類,可以使用 Stylelint rule 檢測并給出警告。

依賴管理不徹底。借助 webpack 的 css-loader,已夠用。

JS 和 CSS 變量共享。關(guān)于 JS 和 Sass/Less 變量共享,我們摸索出了自己的解法: 

  1. // src/styles/variables.jsmodule.exports = { 
  2.   // 主顏色 
  3.   'primary-color''#0C4CFF'
  4.   // 出錯顏色 
  5.   'error-color''#F15533'
  6.   // 成功顏色 
  7.   'success-color''#35B34A',};// webpack.config.jsconst styleVariables = require('src/styles/variables');// ... 
  8.       { 
  9.         test: /\.scss$/, 
  10.         use: [ 
  11.           'style-loader'
  12.           'css-loader?sourceMap&minimize'
  13.           { 
  14.             loader: 'sass-loader'
  15.             options: { 
  16.               data: Object.keys(styleVariables) 
  17.                 .map(key => `\$${key}: ${styleVariables[key]};`) 
  18.                 .join('\n'), 
  19.               sourceMap: true
  20.               sourceMapContents: true 
  21.             } 
  22.           } 
  23.         ] 
  24.       }//... 

在 scss 文件中,可以直接引用變量: 

  1. // page.scss.button { 
  2.   background: $primary-color;} 

四、開發(fā)工具覆蓋全鏈路

2019 年,你幾乎不可能再開發(fā)出 React/Angular/Vue 級別的框架,也沒必要再造 Ant-Design/Ng-Zorro 這樣的輪子。難道就沒有機(jī)會了嗎?

當(dāng)然有,結(jié)合你自身的產(chǎn)品開發(fā)流程,依舊有很多機(jī)會。下面是常規(guī)項(xiàng)目的開發(fā)流程圖,任何一個環(huán)節(jié)只要深挖,都有提升空間。如果你能通過工具減少一個或多個環(huán)節(jié),帶來的價值更大。 

單拿其中的【開發(fā)】環(huán)節(jié)展開,就有很多可擴(kuò)展的場景: 


一個有代表性的例子是,我們開發(fā)了國際化工具 kiwi-intl。它同樣具有 TS 的類型完美,非常強(qiáng)大的文案提示,另外還有:

  • VS Code 插件 kiwi linter,自動對中文文案標(biāo)紅,如果已有翻譯文案能自動完成替換
  • Shell 命令全量檢查出沒有翻譯的文案,批量提交給翻譯人員
  • Codemod 腳本自動實(shí)現(xiàn)舊的國際化方案向 Kiwi 遷移,成本極低

除了以上三點(diǎn),未來還計(jì)劃開發(fā)瀏覽器插件來檢查漏翻文案,利用 Husky 在 git 提交前對漏翻文案自動做機(jī)器翻譯等等。

未來如果你只提供一個代碼庫,那它的價值會非常局限。你可以參照上面的圖表,開發(fā)相應(yīng)的擴(kuò)展來豐富生態(tài)。如果你是新手,推薦學(xué)習(xí)下編譯原理和對應(yīng)的擴(kuò)展開發(fā)規(guī)范。

五、嚴(yán)格徹底的 Code Review

過去的一年,我們一共進(jìn)行了 1200+ 多次 Code Review(CR),很多同事從剛開始不好意思提 MR 到后來追著別人 Review,CR 成為每個人的習(xí)慣。通過 CR 讓項(xiàng)目中任何一行代碼都至少被兩人觸達(dá)過,減少了絕大多數(shù)的低級錯誤,提升了代碼質(zhì)量,這也是幫助新人成長最快的方式之一。 

其中一個項(xiàng)目MR截圖 

Code Review 的幾個技巧:

  • No magic
  • Explicit not implicit
  • 覆蓋度比深度重要,覆蓋度追求100%
  • 頻率比儀式感重要,坐公交蹲廁所打開手機(jī)都可以 Review 別人代碼,不需要專門組織會議
  • 粒度要盡可能小,一個組件一個方法均可,可以結(jié)合 Git Flow
  • 24h 小時內(nèi)處理,無問題直接 merge,有問題一定要留 comment,并且提供 action
  • 對于亟待上線來不及 Review 的代碼,可以先合并上線,上線后再補(bǔ)充 Review
  • 需要自上而下的推動,具有完善的規(guī)范,同時定期總結(jié) Review 經(jīng)驗(yàn)來豐富開發(fā)規(guī)范
  • CR 并不只是為了找錯,看到好的代碼,不要吝嗇你的贊美
  • 本質(zhì)是鼓勵開發(fā)者間更多的溝通,互相學(xué)習(xí),營造技術(shù)文化氛圍

總結(jié)

以上5點(diǎn)當(dāng)然不是我們技術(shù)的全部。除此之外我們還實(shí)踐了移動端開發(fā)、可視化圖表/WebGL、Web Worker、GraphQL、性能優(yōu)化等等,但這些還停留在術(shù)的層面,未來到一定程度會拿出來分享。

如果你也準(zhǔn)備或正在開發(fā)復(fù)雜的前端應(yīng)用,同時團(tuán)隊(duì)人員多樣技術(shù)背景各異,可以參考以上5點(diǎn),使用 Redux 實(shí)現(xiàn)規(guī)范清晰可預(yù)測的狀態(tài)管理,深耕 TypeScript 來提升代碼健壯性和可維護(hù)性,借助各種 Lint 工具回歸簡單方便的 CSS,不斷打磨自己的開發(fā)工具來保證開發(fā)規(guī)范高效,并嚴(yán)格徹底實(shí)行 Code Review 促進(jìn)人的交流和提升。

Links

  • Pont:nefe/pont
  • Kiwi:nefe/kiwi
  • iron-redux: nefe/iron-redux
  • The State of JavaScript 2018 
責(zé)任編輯:龐桂玉 來源: 前端大全
相關(guān)推薦

2015-06-04 13:15:11

獨(dú)立開發(fā)者

2010-11-04 10:33:33

職場

2011-07-07 10:24:22

移動應(yīng)用開發(fā)

2019-01-07 14:46:16

前端開發(fā)調(diào)查報(bào)告

2013-04-22 11:06:47

移動游戲盈利手機(jī)游戲

2014-04-08 14:11:02

2021-07-23 22:31:00

MySQL數(shù)據(jù)庫SQL

2022-12-08 11:50:16

2022-12-08 10:45:20

2020-11-02 10:29:43

云計(jì)算

2012-11-16 13:47:15

ASOiOS 6

2011-12-05 22:44:53

Android

2015-09-28 11:15:03

java初學(xué)者建議

2012-04-04 11:41:30

Android

2012-04-02 22:49:58

Android

2016-03-11 09:36:52

程序員頂級職業(yè)建議

2022-08-30 13:48:28

IT領(lǐng)導(dǎo)者放權(quán)

2019-04-23 12:10:00

前端開發(fā)編程

2019-06-27 18:16:30

云計(jì)算成本云平臺

2018-05-29 22:24:22

程序員開發(fā)學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

日韩电影大片中文字幕| 日本一区二区三区免费乱视频| 少妇久久久久久| 午夜激情av在线| 亚洲婷婷噜噜| 26uuu另类欧美| 国产日韩在线播放| 久久精品亚洲无码| 日本不卡电影| 精品国产亚洲一区二区三区在线观看| 日韩毛片在线免费看| 国产1区2区3区在线| 国产二区国产一区在线观看| 日本高清不卡在线| 激情五月婷婷在线| av亚洲免费| 亚洲国产97在线精品一区| 污视频免费在线观看网站| 国产经典三级在线| 欧美激情一区二区三区蜜桃视频| 成人动漫在线观看视频| 亚洲成人av网址| 韩国亚洲精品| 中文字幕综合一区| 国产乱了高清露脸对白| 99er精品视频| 欧美日韩另类字幕中文| 成人免费看片视频在线观看| 外国精品视频在线观看 | 欧美日韩国产在线观看网站| 日韩欧美另类在线| 日本黄色的视频| 日韩精品99| 好吊成人免视频| 欧美交换配乱吟粗大25p| a√资源在线| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲综合中文字幕在线| 在线观看毛片av| 日韩av一二三| 国产精品久久久久福利| 国产精品美女久久久久av爽| 国产主播精品| 色综合久久88色综合天天看泰| jizzjizz日本少妇| 成人在线国产| 中文字幕av一区二区| 90岁老太婆乱淫| 你懂的一区二区三区| 日韩精品久久久久| 欧美黑人欧美精品刺激| 色天天色综合| 亚洲欧美一区二区三区久久| 久操视频免费看| 久久不见久久见免费视频7| 日韩电影中文字幕在线| 特级西西人体wwwww| 希岛爱理av免费一区二区| 亚洲精品日韩在线| 级毛片内射视频| 精品国产a一区二区三区v免费| 伊人久久综合97精品| 婷婷综合在线视频| 91精品国偷自产在线电影| 久久视频在线直播| 九九热精品免费视频| 黄色欧美日韩| 2020国产精品视频| 香蕉污视频在线观看| 麻豆精品精品国产自在97香蕉| 国产噜噜噜噜久久久久久久久| 国产在成人精品线拍偷自揄拍| 国产专区欧美精品| 91久久伊人青青碰碰婷婷| 国产 欧美 自拍| 26uuu国产一区二区三区 | 欧美在线电影| 久久精品国产69国产精品亚洲| 福利所第一导航| 国产亚洲一级| 国产精品直播网红| 超碰在线播放97| 91麻豆国产福利精品| 亚洲 国产 欧美一区| 夜级特黄日本大片_在线| 亚洲男人天堂一区| 妺妺窝人体色777777| 裤袜国产欧美精品一区| 9191久久久久久久久久久| 麻豆短视频在线观看| 三级小说欧洲区亚洲区| 日韩中文字幕网| 日韩av综合在线| 蜜臀av性久久久久蜜臀av麻豆 | 日韩欧美影院| 日日骚av一区| 久久午夜免费视频| 久久电影网电视剧免费观看| 国产伦理久久久| h视频在线免费| 五月婷婷另类国产| 免费在线观看污网站| 激情视频极品美女日韩| 中文字幕日韩综合av| 久视频在线观看| 日韩国产欧美在线视频| 国产精品国产精品国产专区蜜臀ah | 国产一区视频在线看| 久久精品国产99精品国产亚洲性色| 77777影视视频在线观看| 亚洲午夜在线观看视频在线| 欧美自拍小视频| 国产欧美三级电影| 日韩在线播放av| 亚洲熟女综合色一区二区三区| 国产精品996| 一区二区三区av在线| 亚洲美女尤物影院| 欧美精品一区二区不卡| 四虎永久免费在线| 久久97超碰色| 日本一区二区在线视频| 密臀av在线播放| 精品欧美一区二区在线观看| 欧美日韩黄色网| 免费高清视频精品| 日产精品一线二线三线芒果| 蜜桃视频在线观看播放| 欧美刺激午夜性久久久久久久| a级黄色免费视频| 日本一不卡视频| 就去色蜜桃综合| 亚洲插插视频| 国产网站欧美日韩免费精品在线观看 | 妖精视频一区二区三区| 久久久久久伊人| 成人av免费播放| 一区二区三区在线视频观看58| 激情黄色小视频| 日韩在线中文| 国产精品免费看久久久香蕉| 国产一级免费在线观看| 色哟哟欧美精品| 91精品人妻一区二区三区| 亚久久调教视频| 美脚丝袜一区二区三区在线观看| 激情黄产视频在线免费观看| 亚洲国产天堂久久综合| 日韩三级视频在线播放| 91视频在线看| 亚洲成熟丰满熟妇高潮xxxxx| 一区二区导航| 国产精品国产亚洲伊人久久 | 国产亚洲1区2区3区| 毛片av免费在线观看| 欧美日韩激情| 国产一区深夜福利| 最新国产露脸在线观看| 欧美变态凌虐bdsm| 日韩欧美不卡视频| 久久天堂av综合合色蜜桃网| 国产熟人av一二三区| 日本一区二区在线看| 成人免费网视频| 四虎影院观看视频在线观看| 欧美大片日本大片免费观看| 日韩欧美性视频| 久久久av毛片精品| 中文字幕中文在线| 欧美视频导航| 免费av在线一区二区| 成人不卡视频| 久久99精品国产99久久6尤物| 黄色一级a毛片| 色婷婷精品大在线视频| 小泽玛利亚一区| 大胆亚洲人体视频| 欧洲av无码放荡人妇网站| 成人免费看片39| 成人av免费电影| 日韩和的一区二在线| 久久综合久久八八| 亚洲 小说区 图片区 都市| 欧美日韩在线观看一区二区 | 日韩一级视频免费观看在线| 日韩av男人天堂| 国产精品久久久久久久久免费桃花| 伊人成人免费视频| 国产精品日本| 丰满女人性猛交| 特黄特色欧美大片| 亚洲va久久久噜噜噜久久天堂| 麻豆国产在线| 美日韩精品视频免费看| 久久99久久| 亚洲成avwww人| 中文字幕在线视频第一页| 亚洲一级二级三级在线免费观看| 欧美日韩高清丝袜| 高清shemale亚洲人妖| 天堂中文视频在线| 激情一区二区| 亚洲v国产v| 欧美亚洲tv| 91在线精品观看| 黄页免费欧美| 清纯唯美日韩制服另类| 在线中文字幕-区二区三区四区| 亚洲丝袜在线视频| 色婷婷av一区二区三| 欧美一区二区三区男人的天堂| 亚洲精品国产无码| 欧美日韩另类在线| 久久精品国产亚洲av无码娇色 | 国产精品久久久久久久久久久久久久久| 欧美伊久线香蕉线新在线| 污污的视频在线观看| 最新91在线视频| 黄视频在线观看免费| 亚洲国产欧美一区二区三区久久| 国产乱人乱偷精品视频a人人澡| 91国偷自产一区二区开放时间 | 激情成人综合网| 国产天堂在线播放| 午夜影院日韩| 1024av视频| 日韩午夜电影| 成人一区二区免费视频| 欧美日韩国产在线一区| 久久精品国产精品亚洲精品色| 波多野结衣一区| 日韩av电影免费观看| 亚州综合一区| 噜噜噜噜噜久久久久久91| 欧美日韩一区二区三区在线电影| 成人自拍爱视频| 无码国模国产在线观看| 亚洲曰本av电影| 精品国产亚洲一区二区三区在线| 成人美女av在线直播| 白嫩亚洲一区二区三区| 成人在线视频网| 91亚洲精品在看在线观看高清| 国产精品综合不卡av| 国产极品久久久久久久久波多结野| 欧美专区在线播放| 欧美极品影院| 国产精品美女主播| 日韩护士脚交太爽了| 国产中文字幕91| 精品99re| 国产精品香蕉视屏| 欧美成人专区| 欧洲精品码一区二区三区免费看| 国产精品一区二区三区av麻| 欧美主播一区二区三区美女 久久精品人| 九九久久成人| 亚洲欧洲一区二区| 婷婷综合社区| 日本免费a视频| 国产精品日韩久久久| 九九热免费精品视频| 久久99精品久久久久久久久久久久| 久久久精品高清| 国产老妇另类xxxxx| 亚洲国产综合av| 91在线国产福利| 天堂av网手机版| 一区二区激情视频| 国产美女激情视频| 欧美日韩一级二级| 亚洲男人天堂久久| 亚洲欧美成人在线| 岛国大片在线观看| 久久成人亚洲精品| 国产在线88av| 国产精品视频一区二区三区四| 精品久久亚洲| 欧美成人一区二区在线| 99久久精品费精品国产风间由美| 蜜臀精品一区二区| 丝袜美腿高跟呻吟高潮一区| 做a视频在线观看| 99久久免费视频.com| www中文在线| 亚洲成人av在线电影| 综合久久中文字幕| 日韩视频免费直播| 黄色av网站在线免费观看| 久久亚洲精品小早川怜子66| 蜜桃av在线| 99久久99久久| 欧美综合另类| 国产午夜福利100集发布| 美国毛片一区二区| 精品国产一区在线| 亚洲欧洲日韩在线| 欧美啪啪小视频| 日韩欧美国产系列| av资源在线观看免费高清| 欧美国产日韩xxxxx| 成人国产精品一区二区免费麻豆| 国产免费一区二区| 我不卡手机影院| 国产一区二区在线免费播放| 成人禁用看黄a在线| 国产探花在线视频| 日本福利一区二区| 神马久久久久久久久久| 精品久久久999| 日韩av电影资源网| 农村寡妇一区二区三区| 亚洲视频综合| 91丝袜超薄交口足| 国产精品久久综合| 亚洲中文一区二区| 日韩成人在线电影网| 黑人另类精品××××性爽| 91精品久久久久久久久久另类 | 一区二区福利视频| 日韩欧美一中文字暮专区| 成人黄视频免费| 亚洲精品午夜av福利久久蜜桃| 国产精品igao| 久久久久久久久久久久久夜| 日韩无码精品一区二区三区| 91精品在线免费| 日本美女高清在线观看免费| 国产精品高潮在线| 一本久久青青| 无码人妻丰满熟妇区毛片18| 91丝袜呻吟高潮美腿白嫩在线观看| 久久久久久久久久久久久久免费看 | 成人av无码一区二区三区| 欧美巨大黑人极品精男| 国色天香久久精品国产一区| 亚洲欧美日韩不卡| 激情综合五月婷婷| 5566中文字幕| 制服丝袜av成人在线看| 免费av网站在线观看| 成人av在线亚洲| 亚洲先锋影音| 欧美日韩一区二区区| 一区二区三区四区亚洲| 精品国产99久久久久久宅男i| 另类图片亚洲另类| 亚洲日本一区二区三区在线| 欧美性潮喷xxxxx免费视频看| 成人自拍视频在线| 六月丁香激情综合| 国产性猛交xxxx免费看久久| av久久网站| 一级特黄录像免费播放全99| 激情欧美日韩一区二区| 男女性高潮免费网站| 精品国产三级电影在线观看| 2021中文字幕在线| 欧美日韩精品免费看| 美女视频网站久久| 特一级黄色录像| 亚洲电影av在线| 久久夜夜操妹子| 中文字幕一区二区三区精彩视频 | 久久精品午夜| a资源在线观看| 91精品国产综合久久婷婷香蕉| 97超碰资源站在线观看| 国产精品一 二 三| 久久精品在线| 精品亚洲乱码一区二区 | 精彩国产在线| 成人激情视频小说免费下载| 欧美久久一级| 国产精品一区二区入口九绯色| 在线精品视频小说1| 菠萝菠萝蜜在线视频免费观看| 懂色中文一区二区三区在线视频| 国产精品一区毛片| 国产免费一区二区三区四区| 亚洲成成品网站| 欧美色片在线观看| 免费看日本黄色| 国产欧美日韩视频一区二区| www.国产免费| 国产999在线| 你懂的成人av| 无码国产69精品久久久久同性| 717成人午夜免费福利电影| 操人在线观看| 午夜在线视频免费观看| 91丨porny丨最新| 99久久夜色精品国产亚洲| 欧美最近摘花xxxx摘花| 在线观看国产精品入口| 李宗瑞91在线正在播放| 日韩欧美的一区二区| 精品日韩视频| 欧美视频在线观看网站| 亚洲人成人一区二区在线观看|