国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

建立和維護(hù)大型 Vue.js 項(xiàng)目的 10 個(gè)優(yōu)秀實(shí)踐

開發(fā) 前端
今天,我將與您分享10個(gè)最佳實(shí)踐,如果您要處理大量的代碼庫,我建議您遵循這些最佳實(shí)踐。

 [[426057]]

這是我在使用大型代碼庫進(jìn)行 Vue 項(xiàng)目時(shí)開發(fā)的最佳實(shí)踐。這些技巧將幫助您開發(fā)更有效的代碼,更易于維護(hù)和共享。

今年的自由職業(yè)生涯中,我有機(jī)會(huì)從事一些大型Vue應(yīng)用程序的工作。我所談?wù)摰捻?xiàng)目有超過12個(gè)Vuex 存儲(chǔ),大量組件(有時(shí)數(shù)百個(gè))和許多視圖(頁面)。實(shí)際上,這對我來說是非常有意義的經(jīng)歷,因?yàn)槲野l(fā)現(xiàn)了許多有趣的模式來使代碼可擴(kuò)展。我還必須修復(fù)一些導(dǎo)致著名的意大利面條代碼難題的錯(cuò)誤做法。:spaghetti:

因此,今天,我將與您分享10個(gè)最佳實(shí)踐,如果您要處理大量的代碼庫,我建議您遵循這些最佳實(shí)踐。

1.使用插槽(slot)使組件更易于理解并且功能更強(qiáng)大

我最近寫了一篇文章,介紹有關(guān)Vue.js中的插槽您需要了解的一些重要事項(xiàng)。它著重說明插槽如何使您的組件更可重用且更易于維護(hù),以及為什么要使用它們。

但是,這與大型Vue.js項(xiàng)目有什么關(guān)系?一圖勝千言,所以我將為您畫一張圖片,這是我第一次后悔不使用它們。

有一天,我只需要?jiǎng)?chuàng)建一個(gè)彈出窗口。乍一看,沒有什么真正復(fù)雜的,只是包括標(biāo)題,描述和一些按鈕。所以我要做的就是把所有東西都當(dāng)作屬性。最后,我用了三個(gè)屬性來定制組件,當(dāng)人們單擊按鈕時(shí)會(huì)發(fā)出一個(gè)事件。十分簡單!:sweat_smile:

但是,隨著項(xiàng)目的不斷發(fā)展,團(tuán)隊(duì)要求我們在其中顯示許多其他新內(nèi)容:表單字段,不同的按鈕(取決于顯示在哪個(gè)頁面上),卡片,頁腳和列表。我發(fā)現(xiàn),如果我繼續(xù)使用屬性來使這個(gè)組件不斷擴(kuò)展,似乎也可以。但是上帝,:weary:我錯(cuò)了!該組件很快變得太復(fù)雜了,以至于無法理解,因?yàn)樗藷o數(shù)的子組件,使用了太多的屬性并發(fā)出了大量事件。:volcano:我經(jīng)歷了一種可怕的情況,當(dāng)您在某處進(jìn)行更改時(shí),它最終以某種方式破壞了另一頁上的其他內(nèi)容。我搞了個(gè)科學(xué)怪人的怪物,而不是一個(gè)可維護(hù)的組件!

但是,如果我從一開始就依賴插槽,情況可能會(huì)更好。最后,我重構(gòu)了所有東西以提供這個(gè)小組件。易于維護(hù),更快地理解并且可擴(kuò)展性更高!

  1. <template> 
  2.   <div class="c-base-popup"
  3.     <div v-if="$slots.header" class="c-base-popup__header"
  4.       <slot name="header"
  5.     </div> 
  6.     <div v-if="$slots.subheader" class="c-base-popup__subheader"
  7.       <slot name="subheader"
  8.     </div> 
  9.     <div class="c-base-popup__body"
  10.       <h1>{{ title }}</h1> 
  11.       <p v-if="description">{{ description }}</p> 
  12.     </div> 
  13.     <div v-if="$slots.actions" class="c-base-popup__actions"
  14.       <slot name="actions"
  15.     </div> 
  16.     <div v-if="$slots.footer" class="c-base-popup__footer"
  17.       <slot name="footer"
  18.     </div> 
  19.   </div> 
  20. </template> 
  21. <script> export default { 
  22.   props: { 
  23.     description: { 
  24.       type: String, 
  25.       defaultnull 
  26.     }, 
  27.     title: { 
  28.       type: String, 
  29.       required: true 
  30.     } 
  31.   } 
  32. } </script>  

我的觀點(diǎn)是,根據(jù)經(jīng)驗(yàn),由知道何時(shí)使用插槽的開發(fā)人員構(gòu)建的項(xiàng)目確實(shí)對其未來的可維護(hù)性有很大的影響。這樣就可以減少發(fā)出事件的次數(shù),使代碼更易于理解,并且可以在內(nèi)部顯示所需的任何組件時(shí)提供更大的靈活性。

:warning:作為一個(gè)經(jīng)驗(yàn)法則,請記住,當(dāng)最終在子組件的父組件中復(fù)制子組件的屬性時(shí),應(yīng)該從這一點(diǎn)開始使用插槽。

2.正確組織您的 Vuex 存儲(chǔ)

通常,新的 Vue.js 開發(fā)人員開始學(xué)習(xí) Vuex,因?yàn)樗麄兣既话l(fā)現(xiàn)了以下兩個(gè)問題:

  • 他們要么需要從樹結(jié)構(gòu)中實(shí)際上相距太遠(yuǎn)的另一個(gè)組件訪問給定組件的數(shù)據(jù),要么

  • 他們需要數(shù)據(jù)在組件銷毀后繼續(xù)存在。

那是他們創(chuàng)建第一個(gè) Vuex 存儲(chǔ),了解模塊并開始在應(yīng)用程序中進(jìn)行組織的時(shí)候。:bulb:

問題是創(chuàng)建模塊時(shí)沒有單一模式可以遵循。但是,:point_up_2|type_3:我強(qiáng)烈建議您考慮如何組織它們。據(jù)我了解,大多數(shù)開發(fā)人員都喜歡按功能組織它們。例如:

  • 驗(yàn)證碼

  • 博客

  • 收件箱

  • 設(shè)定

就我而言,我發(fā)現(xiàn)根據(jù)它們從API提取的數(shù)據(jù)模型來組織它們時(shí)更容易理解。例如:

  • 用戶數(shù)

  • 隊(duì)伍

  • 留言內(nèi)容

  • 小部件

  • 文章

您選擇哪一個(gè)取決于您。唯一要記住的是,從長遠(yuǎn)來看,組織良好的 Vuex 存儲(chǔ)將使團(tuán)隊(duì)更具生產(chǎn)力。這也將使新來者更容易在加入您的團(tuán)隊(duì)時(shí)就將您的想法圍繞您的代碼庫。

3.使用操作(Vuex Actions)進(jìn)行 API 調(diào)用和提交數(shù)據(jù)

我的大多數(shù)API調(diào)用(如果不是全部)都在我的 Vuex 操作(vuex actions)中進(jìn)行。您可能想知道:為什么這里調(diào)用更好?

僅僅因?yàn)樗鼈冎械拇蠖鄶?shù)都提取了我需要在存儲(chǔ)(vuex store)中提交的數(shù)據(jù)。此外,它們提供了我真正喜歡的封裝性和可重用性。我這樣做還有其他一些原因:

  • 如果我需要在兩個(gè)不同的地方(例如博客和首頁)獲取文章的首頁,則可以使用正確的參數(shù)調(diào)用適當(dāng)?shù)恼{(diào)度程序。數(shù)據(jù)將被提取,提交和返回,除了調(diào)度程序調(diào)用外,沒有重復(fù)的代碼。

  • 如果我需要?jiǎng)?chuàng)建一些邏輯來避免在提取第一頁時(shí)提取它,則可以在一個(gè)地方進(jìn)行。除了減少服務(wù)器上的負(fù)載之外,我還有信心它可以在任何地方使用。

  • 我可以在這些操作(vuex actions)中跟蹤我的大多數(shù) Mixpanel 事件,從而使分析代碼庫真正易于維護(hù)。我確實(shí)有一些應(yīng)用程序,其中所有 Mixpanel 調(diào)用都是在操作中單獨(dú)進(jìn)行的。當(dāng)我不必了解跟蹤什么不跟蹤什么以及何時(shí)發(fā)送時(shí),:joy:這種方式工作會(huì)給我?guī)碛卸啻蟮目鞓贰?/p>

譯注:Mixpanel 是一家數(shù)據(jù)跟蹤和分析公司,允許開發(fā)者跟蹤各種用戶行為,比如用戶瀏覽的頁面數(shù),iPhone 應(yīng)用分析,F(xiàn)acebook 應(yīng)用互動(dòng)情況,以及 Email 分析。類似Firebase一樣的埋點(diǎn)分析工具。

4.使用 mapState,mapGetters,mapMutations 和 mapAction 簡化代碼庫

當(dāng)您只需要訪問state/getter或在組件內(nèi)部調(diào)用action/mutation時(shí),通常無需創(chuàng)建多個(gè)計(jì)算屬性或方法。使用 mapState , mapGetters , mapMutations 和 mapActions 可以幫助你縮短你的代碼,通過分組來化繁為簡,從你存儲(chǔ)里模塊一個(gè)地方就能掌握全局。

  1. // NPM 
  2. import { mapState, mapGetters, mapActions, mapMutations } from "vuex"
  3. export default { 
  4.   computed: { 
  5.     // Accessing root properties 
  6.     ...mapState("my_module", ["property"]), 
  7.     // Accessing getters 
  8.     ...mapGetters("my_module", ["property"]), 
  9.     // Accessing non-root properties 
  10.     ...mapState("my_module", { 
  11.       property: state => state.object.nested.property 
  12.     }) 
  13.   }, 
  14.   methods: { 
  15.     // Accessing actions 
  16.     ...mapActions("my_module", ["myAction"]), 
  17.     // Accessing mutations 
  18.     ...mapMutations("my_module", ["myMutation"]) 
  19.   } 
  20. };  

Vuex官方文檔中提供了您在這些便捷幫助器上所需的所有信息。

5.使用 API 工廠

我通常喜歡創(chuàng)建一個(gè) this.$api 可以在任何地方調(diào)用以獲取API端點(diǎn)的助手。在項(xiàng)目的根目錄下,我有一個(gè) api 包含所有類的文件夾(請參閱下面的其中一個(gè))。

  1. api 
  2. ├── auth.js 
  3. ├── notifications.js 
  4. └── teams.js  

每個(gè)節(jié)點(diǎn)都將其類別的所有端點(diǎn)分組。這是我在 Nuxt 應(yīng)用程序中使用插件初始化此模式的方式(這與標(biāo)準(zhǔn) Vue 應(yīng)用程序中的過程非常相似)。

  1. // PROJECT: API 
  2. import Auth from "@/api/auth"
  3. import Teams from "@/api/teams"
  4. import Notifications from "@/api/notifications"
  5. export default (context, inject) => { 
  6.   if (process.client) { 
  7.     const token = localStorage.getItem("token"); 
  8.     // Set token when defined 
  9.     if (token) { 
  10.       context.$axios.setToken(token, "Bearer"); 
  11.     } 
  12.   } 
  13.   // Initialize API repositories 
  14.   const repositories = { 
  15.     auth: Auth(context.$axios), 
  16.     teams: Teams(context.$axios), 
  17.     notifications: Notifications(context.$axios) 
  18.   }; 
  19.   inject("api", repositories); 
  20. };  

的JavaScript

  1. export default $axios => ({ 
  2.   forgotPassword(email) { 
  3.     return $axios.$post("/auth/password/forgot", { email }); 
  4.   }, 
  5.   login(email, password) { 
  6.     return $axios.$post("/auth/login", { email, password }); 
  7.   }, 
  8.   logout() { 
  9.     return $axios.$get("/auth/logout"); 
  10.   }, 
  11.   register(payload) { 
  12.     return $axios.$post("/auth/register", payload); 
  13.   } 
  14. });  

的JavaScript

現(xiàn)在,我可以簡單地在我的組件或 Vuex 操作中調(diào)用它們,如下所示:

  1. export default { 
  2.   methods: { 
  3.     onSubmit() { 
  4.       try { 
  5.         this.$api.auth.login(this.email, this.password); 
  6.       } catch (error) { 
  7.         console.error(error); 
  8.       } 
  9.     } 
  10.   } 
  11. };  

的JavaScript

6.使用 $config 訪問您的環(huán)境變量(在模板中特別有用)

您的項(xiàng)目可能在某些文件中定義了一些全局配置變量:

  1. config 
  2. ├── development.json 
  3. └── production.json  

我喜歡通過 this.$config 助手快速訪問它們,尤其是當(dāng)我在模板中時(shí)。與往常一樣,擴(kuò)展Vue對象非常容易:

  1. // NPM 
  2. import Vue from "vue"
  3. // PROJECT: COMMONS 
  4. import development from "@/config/development.json"
  5. import production from "@/config/production.json"
  6. if (process.env.NODE_ENV === "production") { 
  7.   Vue.prototype.$config = Object.freeze(production); 
  8. else { 
  9.   Vue.prototype.$config = Object.freeze(development); 
  10. }  

7.遵循一個(gè)約定來寫提交注釋

隨著項(xiàng)目的發(fā)展,您將需要定期瀏覽組件的提交歷史記錄。如果您的團(tuán)隊(duì)沒有遵循相同的約定來書寫他們的提交說明,那么將很難理解每個(gè)團(tuán)隊(duì)成員的行為。

我總是使用并推薦Angular commit消息準(zhǔn)則。在我從事的每個(gè)項(xiàng)目中,我都會(huì)遵循它,在許多情況下,其他團(tuán)隊(duì)成員也會(huì)很快發(fā)現(xiàn)遵循它也更好。

遵循這些準(zhǔn)則會(huì)導(dǎo)致更具可讀性的消息,從而在查看項(xiàng)目歷史記錄時(shí)更易于跟蹤提交。簡而言之,這是它的工作方式:

  1. git commit -am "<type>(<scope>): <subject>" 
  2. # Here are some samples 
  3. git commit -am "docs(changelog): update changelog to beta.5" 
  4. git commit -am "fix(release): need to depend on latest rxjs and zone.js"  

看看他們的README文件以了解更多約定。

8.始終在生產(chǎn)項(xiàng)目時(shí)凍結(jié)軟件包的版本

我知道...所有軟件包都應(yīng)遵循語義版本控制規(guī)則。但實(shí)際情況是,其中一些并非如此。:sweat_smile:

為避免因您的一個(gè)依賴項(xiàng)在半夜醒來破壞了整個(gè)項(xiàng)目,鎖定所有軟件包的版本會(huì)使您的早晨工作壓力減輕。:innocent:

它的意思很簡單:避免使用以 ^ 開頭的版本:

  1.   "name""my project"
  2.   "version""1.0.0"
  3.   "private"true
  4.   "dependencies": { 
  5.     "axios""0.19.0"
  6.     "imagemin-mozjpeg""8.0.0"
  7.     "imagemin-pngquant""8.0.0"
  8.     "imagemin-svgo""7.0.0"
  9.     "nuxt""2.8.1"
  10.   }, 
  11.   "devDependencies": { 
  12.     "autoprefixer""9.6.1"
  13.     "babel-eslint""10.0.2"
  14.     "eslint""6.1.0"
  15.     "eslint-friendly-formatter""4.0.1"
  16.     "eslint-loader""2.2.1"
  17.     "eslint-plugin-vue""5.2.3" 
  18.   } 
  19. }  

9.顯示大量數(shù)據(jù)時(shí)使用 Vue 虛擬滾動(dòng)條

當(dāng)您需要在給定頁面中顯示很多行或需要循環(huán)訪問大量數(shù)據(jù)時(shí),您可能已經(jīng)注意到該頁面的呈現(xiàn)速度很快。要解決此問題,可以使用vue-virtual-scoller。

  1. npm install vue-virtual-scroller  

它將僅渲染列表中的可見項(xiàng),并重用組件和dom元素,以使其盡可能高效。它真的很容易使用,順滑得很!:sparkles:

  1. <template> 
  2.   <RecycleScroller 
  3.     class="scroller" 
  4.     :items="list" 
  5.     :item-size="32" 
  6.     key-field="id" 
  7.     v-slot="{ item }" 
  8.   > 
  9.     <div class="user"
  10.       {{ item.name }} 
  11.     </div> 
  12.   </RecycleScroller> 
  13. </template>  

的HTML

10.跟蹤第三方程序包的大小

當(dāng)很多人在同一個(gè)項(xiàng)目中工作時(shí),如果沒有人關(guān)注它們,那么已安裝軟件包的數(shù)量會(huì)迅速增加,令人難以置信。為了避免您的應(yīng)用程序變慢(尤其是在移動(dòng)網(wǎng)絡(luò)變慢的情況下),我在Visual Studio Code中使用了導(dǎo)入費(fèi)用包。這樣,我可以從編輯器中直接看到導(dǎo)入的模塊庫有多大,并且可以查看導(dǎo)入的模塊庫過大時(shí)出了什么問題。

例如,在最近的項(xiàng)目中,導(dǎo)入了整個(gè) lodash 庫(壓縮后大約24kB)。問題在于,項(xiàng)目里僅僅使用cloneDeep 一個(gè)方法。通過在 導(dǎo)入費(fèi)用包 中識別此問題后,我們通過以下方式解決了該問題:

  1. npm remove lodash 
  2. npm install lodash.clonedeep  

然后可以在需要的地方導(dǎo)入clonedeep函數(shù):

  1. import cloneDeep from "lodash.clonedeep";  

的JavaScript

為了進(jìn)一步優(yōu)化,您還可以使用Webpack Bundle Analyzer軟件包通過交互式可縮放樹狀圖來可視化Webpack輸出文件的大小。

處理大型Vue代碼庫時(shí),您還有其他最佳實(shí)踐嗎?請?jiān)谙旅娴脑u論中告訴我,或者在Twitter @RifkiNada上與我聯(lián)系。

關(guān)于作者

娜達(dá)·里基(Nada Rifki)

[[426058]]

Nada 是一位 JavaScript 開發(fā)人員,他喜歡使用 UI 組件來創(chuàng)建具有出色 UX 的界面。她專門研究 Vue.js,喜歡分享任何可以幫助她的前端 Web 開發(fā)人員的東西。Nada還涉足數(shù)字營銷,舞蹈和中文領(lǐng)域。

 

責(zé)任編輯:張燕妮 來源: 前端瓶子君
相關(guān)推薦

2021-09-27 09:04:40

Vue.js代碼庫開發(fā)人員

2020-08-30 14:32:57

Vue.jsJavaScript前端

2020-09-15 06:13:05

Vue.jsJavaScript框架

2015-12-08 09:13:05

開發(fā)維護(hù)Java項(xiàng)目

2019-10-11 09:59:55

開發(fā)者技能工具

2020-09-16 14:39:13

ReactJavaScript框架

2020-03-16 08:00:00

物聯(lián)網(wǎng)項(xiàng)目物聯(lián)網(wǎng)IOT

2018-04-04 10:32:13

前端JavascriptVue.js

2020-06-02 14:00:53

Vue.js組件Web開發(fā)

2020-10-10 07:14:08

前端項(xiàng)目斷點(diǎn)

2017-07-20 11:18:22

Vue.jsMVVMMVC

2020-11-04 09:58:17

vue開發(fā)Github

2022-04-01 10:41:09

Vue.js開發(fā)工具

2019-11-05 17:10:19

Java開發(fā)編程語言

2020-10-27 06:56:53

IoT產(chǎn)品實(shí)踐

2023-06-29 00:19:51

2019-04-01 19:38:28

Vue.jsJavascript前端

2021-05-08 16:11:08

Java開發(fā)代碼

2019-11-20 10:32:39

云計(jì)算安全技術(shù)

2024-12-26 08:00:38

點(diǎn)贊
收藏

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

中文字幕在线网| 性xxxx丰满孕妇xxxx另类| 麻豆一区一区三区四区| 91麻豆精品国产| 欧美视频在线观看视频 | 99精品欧美一区| 大波视频国产精品久久| 亚洲一区二区三区四区电影| 欧美一二三四在线| 在线观看视频网站你懂得| 91在线国产观看| 亚洲一区二区三区精品在线观看 | 久久久爽爽爽美女图片| 国产羞羞视频在线播放| 欧美日韩国产在线看| 老头吃奶性行交视频| 日本视频一区二区| 激情视频在线观看一区二区三区| 亚洲三级网页| 97精品视频在线| 亚洲青青一区| 亚洲图片制服诱惑| 人人超在线公开视频| 在线观看日韩电影| 最近中文字幕在线中文视频| 国产女主播一区| 欧美韩国日本在线| 99久久亚洲一区二区三区青草| 一本久道久久综合| 美女在线一区二区| 亚洲欧美久久234| 男女男精品视频| 日产国产精品精品a∨| 黄色日韩在线| 风间由美久久久| 伊人久久大香线蕉综合热线| 国产美女精品视频免费观看| 精品视频99| 成人午夜在线观看| 欧美xxav| 免费成人你懂的| 国产精品视频黄色| 一区二区免费在线| 成人日韩在线电影| 久久成人高清| 国产suv精品一区二区| h视频久久久| 久久久欧美一区二区| a级日韩大片| 欧美做爰性生交视频| 免费观看久久av| 国产在线一区二区三区| 中文无码久久精品| 九色91在线视频| 视频一区国产视频| 国产日本欧美在线| 99久久夜色精品国产网站| 亚洲国产日韩在线一区模特| 欧美视频免费看| 精品国产91乱高清在线观看| 国产精品欧美在线观看| 欧美国产激情视频| 91一区二区在线观看| 性开放的欧美大片| 国产伦精品免费视频| 久久久综合视频| 9191在线观看| 日本a级片电影一区二区| 国产伦精品一区二区三区在线观看| 精品国产白色丝袜高跟鞋| 粉嫩av四季av绯色av第一区| 亚洲成人综合视频| 国产精品最新自拍| 精品自拍偷拍| 激情久久av| 欧美片在线播放| 成人免费在线| 精品国产乱码久久久久久88av| 中文字幕日韩精品在线| 六月丁香综合在线视频| 国产98在线| 日韩在线观看免费高清完整版| 久久精品人人做人人综合| 欧美18xxxx| 午夜在线免费视频| 日本高清免费不卡视频| 亚洲视频精选| 国产精品一二三在线观看| 精品国产人成亚洲区| 在线一区欧美| 四虎久久免费| 国产高清自拍一区| 在线午夜精品自拍| 欧美日韩久久久久| 男男成人高潮片免费网站| 美女国产精品久久久| 精品久久久久久中文字幕2017| 在线亚洲免费| 99精品在线免费视频| 午夜视频在线观看一区二区| 国产99re66在线视频| 91成人在线视频| 99热免费精品在线观看| 丰满少妇被猛烈进入高清播放| 在线亚洲+欧美+日本专区| 91国产一区| 极品日韩久久| 亚洲婷婷综合久久一本伊一区| 黄视频在线免费看| 国产中文日韩欧美| 2022国产精品视频| 青青草视频在线免费直播| 日韩av电影免费观看高清| 国产制服丝袜一区| 成人高清在线| 国产成人啪精品视频免费网| 国产精品99久久久| 免费在线看a| 国产ts人妖一区二区三区| 国产成人在线视频播放| 在线免费观看黄色| 国产成人精品最新| 久久影视一区二区| 蜜桃av.网站在线观看| 国产v亚洲v天堂无码| 中文字幕一区二区三区精华液| 人人视频精品| 亚洲日本精品| 欧美午夜精品一区二区蜜桃| 国产精品一区二区99| 免费成人午夜视频| 精品亚洲一区二区三区四区五区| 国产综合婷婷| 免费理论片在线观看播放老| 日韩免费av在线| 自拍偷拍欧美激情| 在线播放一区二区精品视频| 国产尤物av一区二区三区| 亚洲国产精品99| 三级久久三级久久久| 麻豆导航在线观看| 国产日产亚洲精品| 亚洲一区在线观看网站| 色婷婷狠狠五月综合天色拍| 妺妺窝人体色www在线小说| 亚洲美女精品久久| 美女一区二区久久| 亚洲按摩av| 亚洲福利av| 精品调教chinesegay| 久久99国产精品免费| 男人的天堂免费在线视频| 日韩精品久久久免费观看| 日韩欧美亚洲国产精品字幕久久久| 99av国产精品欲麻豆| a级毛片免费观看在线| 日韩欧美在线一区二区| 亚洲国产日韩一区| 国产aⅴ综合色| www.一区| 国产嫩草在线观看| 97久久精品国产| 亚洲欧美日韩国产一区二区三区| 婷婷成人综合| 中文字幕视频在线| 国产精品18毛片一区二区| 欧美日韩精品欧美日韩精品 | 欧美日韩免费在线视频| 成人在线电影在线观看视频| 男人插女人欧美| 日韩av免费一区| 精品日本高清在线播放| 中文字幕一区二区三三 | 天堂av在线资源| 亚洲综合在线做性| 欧美午夜一区二区三区| 亚洲综合三区| 草草视频在线| 国产三区在线视频| 性亚洲最疯狂xxxx高清| 亚洲动漫第一页| 久久久噜噜噜| 素人一区二区三区| 涩涩视频免费网站| eeuss一区二区三区| 日韩成人在线视频观看| www久久精品| 欧美疯狂party性派对| 91最新在线视频| 1024精品视频| 成人国产精品一区二区| 日韩欧美国产小视频| 99v久久综合狠狠综合久久| 一道本一区二区三区| 日本最新在线视频| 国产一区二区网| 91欧美日韩一区| 中文字幕精品网| 色综合天天天天做夜夜夜夜做| 韩国三级中文字幕hd久久精品|