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

不可錯過的 vue 開發技巧

原創
開發 前端
本文主要介紹日常項目開發過程中的一些技巧,幫助大家規避錯誤的同時還能提高應用的性能。以下是我總結一些平時工作中的經驗。

【51CTO.com原創稿件】

前言

本文主要介紹日常項目開發過程中的一些技巧,幫助大家規避錯誤的同時還能提高應用的性能。以下是我總結的一些平時工作中的經驗。

在v-if/v-if-else/v-else中使用key

如果一組v-if 與v-else的元素類型相同,最好使用屬性key。這是因為Vue2.0引入虛擬DOM,為了避免不必要的DOM操作,虛擬DOM在虛擬節點映射到視圖過程中,將虛擬節點與上一次渲染視圖所使用的舊虛擬節點做對比,找出真正需要更新的節點來進行DOM操作。但有時如果兩個本不相同的節點被識別為相同,便會出現意料之外的問題。我們看下面的一個例子:

  1. // 這種寫法會出bug 
  2. <div v-if="flag"
  3.   <label>浪里行舟</label> 
  4.   <input type="text" /> 
  5. </div> 
  6. <div v-else
  7.   <label>前端工匠</label> 
  8.   <input type="text" /> 
  9. </div> 
  10. <button @click="flag = !flag">切換</button>  

如果添加了屬性key,那么在對比虛擬DOM時,則會認為它們是兩個不同的節點,于是會將舊元素移除并在相同位置添加新元素,從而避免漏洞的出現。

  1. // 最佳寫法 
  2. <div v-if="flag"
  3.   <label>浪里行舟</label> 
  4.   <input key="1" type="text" /> 
  5. </div> 
  6. <div v-else
  7.   <label>前端工匠</label> 
  8.   <input key="2" type="text" /> 
  9. </div> 
  10. <button @click="flag = !flag">切換</button> 

v-for循環中不要使用index作為key

我們會給列表渲染設置屬性key,這個key屬性主要用在虛擬DOM算法上,在對比新舊虛擬節點時辨識虛擬節點。但如果key用得不合理,就會出現bug,比如我們使用index作為key(見下面例子),核心代碼如下:

  1. <div class="border"
  2.   <Children v-for="(key, index) in list" :key="index">//使用index作為key 
  3.     <button @click="() => handleDelete(key)">刪除</button> 
  4.   </Children> 
  5.   <button @click="handleAdd">添加</button> 
  6. </div> 
  7. ...... 
  8.   handleAdd() { 
  9.     this.list.push(key++); 
  10.   }, 
  11.   handleDelete(key) { 
  12.     const index = this.list.findIndex(k => k === key); 
  13.     this.list.splice(index, 1); 
  14.   } 

上例中,我們想刪除第二個輸入框,卻誤刪了第三個輸入框,這因為當使用splice()方法刪除數組的某個元素時數組的index會被重新索引,造成數組的最后一個index丟失,從而會使虛擬DOM的最后一個結點(key)丟失,造成無論刪除哪個結點都會誤刪除最后一個結點的bug。但如果我們使用傳入的key作為key,就可以避免這種問題出現

  1. <div class="border"
  2.   <Children v-for="key in list" :key="key"
  3.     <button @click="() => handleDelete(key)">刪除</button> 
  4.   </Children> 
  5.   <button @click="handleAdd">添加</button> 
  6. </div> 

簡單暴力的router key

我們在項目開發時,可能會遇到這樣問題:當頁面切換到同一個路由但不同參數地址時,比如/detail/1,跳轉到/detail/2,頁面跳轉后數據竟然沒更新?路由配置如下:

  1.     path: "/detail/:id"
  2.     name:"detail"
  3.     component: Detail 

這是因為vue-router會識別出兩個路由使用的是同一個組件從而進行復用,并不會重新創建組件,而且組件的生命周期鉤子自然也不會被觸發,導致跳轉后數據沒有更新。那我們如何解決這個問題呢? 我們可以為router-view組件添加屬性key,例子如下: 

  1. <router-view :key="$route.fullpath"></router-view

這種辦法主要是利用虛擬DOM在渲染時候通過key來對比兩個節點是否相同,如果key不相同,就會判定router-view組件是一個新節點,從而先銷毀組件,然后再重新創建新組件,這樣組件內的生命周期會重新觸發。

路由懶加載

當打包構建應用時,JavaScript 包會變得非常大,影響頁面加載。如果我們能把不同路由對應的組件分割成不同的代碼塊,然后當路由被訪問的時候才加載對應組件,這樣就更加高效了。 配合webpack支持的路由懶加載方法有:

  • 這種方法比較通用,而且支持性好

  1. resolve => require([./Foo], resolve) 
  1. const Foo = () => import('./Foo'

接下來我們以官方文檔的寫法為例,對比這兩種寫法:

  1. // 非懶加載寫法 
  2. import Vue from 'vue' 
  3. import Router from 'vue-router' 
  4. import Home from 'pages/home' 
  5. ... 
  6. ​ 
  7. Vue.use(Router) 
  8. ​ 
  9. export default new Router({ 
  10. routes: [ 
  11.   { 
  12.       path: '/'
  13.       name'home'
  14.       component: Home 
  15.   } 
  16.   ... 
  17. }) 

推薦以下寫法,路由懶加載可以幫我們在進入首屏時不用加載過多的資源,從而減少首屏加載速度。

  1. // 路由懶加載寫法 
  2. import Vue from 'vue' 
  3. import Router from 'vue-router' 
  4. ​ 
  5. // 其它都不用變,就是這么簡單 
  6. const Home = () => import('./home'
  7. ... 
  8. ​ 
  9. Vue.use(Router) 
  10. ​ 
  11. export default new Router({ 
  12. routes: [ 
  13.   { 
  14.       path: '/'
  15.       name'home'
  16.       component: Home 
  17.   } 
  18.   ... 
  19. }) 

不要在使用v-for的同一元素上使用v-if

Vue官方文檔強烈建議永遠不要把 v-if 和 v-for 同時用在同一個元素上。一般我們在兩種常見的情況下會傾向于這樣做:

  • 1)為了過濾一個列表中的項目 (比如 v-for="user in users" v-if="user.isActive")。在這種情形下,請將 users 替換為一個計算屬性 (比如 activeUsers),讓其返回過濾后的列表(見下面例子)。

  1. // 第一種情形 反例 
  2. <ul> 
  3. <li 
  4.   v-for="user in users" 
  5.   v-if="user.isActive" 
  6.   :key="user.id" 
  7.   {{ user.name }} 
  8. </li> 
  9. </ul> 

當 Vue 處理指令時,v-for 比 v-if 具有更高的優先級,所以哪怕我們只渲染出一小部分用戶的元素,也得在每次重渲染的時候遍歷整個列表,不論活躍用戶是否發生了變化。我們可通過將其更換為在如下的一個計算屬性上遍歷:

  1. // 好例子 
  2. computed: { 
  3. activeUsers: function () { 
  4.   return this.users.filter(function (user) { 
  5.     return user.isActive 
  6.   }) 
  1. <ul> 
  2. <li 
  3.   v-for="user in activeUsers" 
  4.   :key="user.id" 
  5.   {{ user.name }} 
  6. </li> 
  7. </ul> 
  • 2)為了避免渲染本應該被隱藏的列表 (比如 v-for="user in users" v-if="shouldShowUsers")。這種情形下,請將 v-if 移動至容器元素上 (比如 ul, ol)(見下面例子)。

  1. // 第二種情形 反例 
  2. <ul> 
  3. <li 
  4.   v-for="user in users" 
  5.   v-if="shouldShowUsers" 
  6.   :key="user.id" 
  7.   {{ user.name }} 
  8. </li> 
  9. </ul> 

更新為:

  1. // 好例子 
  2. <ul v-if="shouldShowUsers"
  3. <li 
  4.   v-for="user in users" 
  5.   :key="user.id" 
  6.   {{ user.name }} 
  7. </li> 
  8. </ul> 

過濾器讓數據處理更便利

Vue.js 允許你自定義過濾器,它的用法其實是很簡單,但是可能有些朋友沒有用過,接下來我們介紹下:

1.理解過濾器

  • 功能:對要顯示的數據進行特定格式化后再顯示

  • 注意:過濾器并沒有改變原本的數據,需要對展現的數據進行包裝

  • 使用場景:雙花括號插值和 v-bind 表達式 (后者從 2.1.0+ 開始支持)。

2.定義過濾器

可以在一個組件的選項中定義本地的過濾器:

  1. filters: { 
  2. capitalize: function (value) { 
  3.   if (!value) return '' 
  4.   value = value.toString() 
  5.   return value.charAt(0).toUpperCase() + value.slice(1) 

也可以在創建 Vue 實例之前全局定義過濾器:

  1. Vue.filter('capitalize'function (value) { 
  2. if (!value) return '' 
  3. value = value.toString() 
  4. return value.charAt(0).toUpperCase() + value.slice(1) 
  5. }) 

3.使用過濾器

使用方法也簡單,即在雙花括號中使用管道符(pipeline) |隔開:

  1. <!-- 在雙花括號中 --> 
  2. <div>{{ myData| filterName}}</div> 
  3. <div>{{ myData| filterName(arg)}}</div> 
  4. <!-- 在 v-bind 中 --> 
  5. <div v-bind:id="rawId | formatId"></div> 

接下來我們看個如何使用過濾器格式化日期的例子:

  1. <div> 
  2.   <h2>顯示格式化的日期時間</h2> 
  3.   <p>{{ date }}</p> 
  4.   <p>{{ date | filterDate }}</p> 
  5.   <p>年月日: {{ date | filterDate("YYYY-MM-DD") }}</p> 
  6. </div> 
  7. ...... 
  8. filters: { 
  9.   filterDate(value, format = "YYYY-MM-DD HH:mm:ss") { 
  10.     console.log(this)//undefined 過濾器沒有this指向的 
  11.     return moment(value).format(format); 
  12.   } 
  13. }, 
  14. data() { 
  15.   return { 
  16.     date: new Date() 
  17.   }; 

 

能用computed的盡量用computed代替 watch

很多時候頁面會出現 watch 的濫用而導致一系列問題的產生,而通常更好的辦法是使用 computed 屬性,先從一張圖區別它們有什么區別?

從上面流程圖中,我們可以看出它們之間的區別:

  • watch:監測的是屬性值, 只要屬性值發生變化,其都會觸發執行回調函數來執行一系列操作。

  • computed:監測的是依賴值,依賴值不變的情況下其會直接讀取緩存進行復用,變化的情況下才會重新計算。

除此之外,有點很重要的區別是:計算屬性不能執行異步任務,計算屬性必須同步執行。也就是說計算屬性不能向服務器請求或者執行異步任務。如果遇到異步任務,就交給偵聽屬性。watch也可以檢測computed屬性。總而言之,兩者的區別歸納為以下兩句話:

  • computed能做的,watch都能做,反之則不行

  • 能用computed的盡量用computed

為啥提倡使用 computed 代替 watch,這是因為有時候可以實現同樣的效果,而 computed 會更勝一籌,比如在處理多數據聯動的情況下,使用 computed 會更加合理一點。

  1. <template> 
  2.   <div> 
  3.       <input type="text" v-model="firstName"
  4.       <input type="text" v-model="lastName"
  5.       <span>{{ fullName }}</span> 
  6.       <span>{{ fullName2 }}</span> 
  7.   </div> 
  8. </template> 
  9. ​ 
  10. <script> 
  11. export default { 
  12.   data() { 
  13.       reurn { 
  14.           firstName: ''
  15.           lastName: ''
  16.           fullName2: '' 
  17.       } 
  18.   }, 
  19.     
  20.   // 使用 computed 
  21.   computed: { 
  22.       fullName() { 
  23.           return this.firstName + ' ' + this.lastName 
  24.       } 
  25.   }, 
  26.     
  27.   // 使用 watch 
  28.   watch: { 
  29.       firstName: function(newVal, oldVal) { 
  30.           this.fullName2 = newVal + ' ' + this.lastName; 
  31.       }, 
  32.       lastName: function(newVal, oldVal) { 
  33.           this.fullName2 = this.firstName + ' ' + newVal; 
  34.       }, 
  35.   } 
  36. </script> 

化繁為簡的Watchers

如果我們需要在組件初始化以及偵聽屬性變化時調用同一個方法,通常的做法像下面這樣:

  1. watch: { 
  2. myProperty() { 
  3.   this.doSomething(); 
  4. }, 
  5. created() { 
  6. this.doSomething(); 
  7. }, 
  8. methods: { 
  9. doSomething() { 
  10.     console.log('doing something...'); 

盡管上面這段代碼看起來沒什么問題,但created鉤子里面執行的方法是多余的。我們可以把所需要執行的方法放到watch里面,避免在created鉤子里寫重復代碼,那將會在組件實例化的時候觸發多一次。 那如何優化呢?代碼如下:

  1. watch: { 
  2. myProperty: { 
  3.   immediate: true,//表示創建組件時立馬執行一次 
  4.   handler() { 
  5.     console.log('doing something...'); // 只用一次的方法沒必要在methods里面聲明了 
  6.   } 

參考文章與書籍

作者介紹

浪里行舟,慕課網認證作者,前端愛好者,立志往全棧工程師發展,從事前端一年多,目前技術棧有vue全家桶、ES6以及less等,樂于分享,最近一年寫了五六十篇原創技術文章,得到諸多好評!

【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

 

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

2015-07-06 10:09:33

iosFoundationNSHashTable

2015-10-21 13:42:54

iOS開發watch OS2

2015-07-07 10:15:56

iOSUIVisualEffweak

2015-07-07 14:05:22

iOS技巧

2014-07-23 10:08:34

Angular前端項目

2021-04-21 07:51:06

Vue 開發VS CodeVetur

2024-01-09 18:01:38

2024-08-13 08:00:00

2021-10-27 08:00:00

DevSecOps開發安全

2015-07-28 20:34:01

Android開發框架

2016-10-25 14:27:16

開源Ruby on RaiWeb框架

2016-12-01 08:36:18

編程云環境云戰略

2019-04-09 15:12:43

開發者技能工具

2020-06-30 08:28:29

Vue開發前端

2020-03-05 12:12:54

數據Python開發

2025-03-24 15:00:13

鴻蒙HarmonyOS

2018-10-23 10:35:20

react.jsReact面試題前端

2022-04-15 09:01:18

前端工具UTF8編碼

2021-01-05 05:15:02

Github 前端倉庫

2015-04-01 10:55:55

點贊
收藏

51CTO技術棧公眾號

国产在线一二区| 一区二区在线免费看| 深夜福利免费在线观看| 青青草国产成人99久久| 久久色在线播放| 亚洲色图欧美另类| 成人免费一区| 精品久久久国产| 伊人久久大香线蕉综合75| 精品久久久久成人码免费动漫| 亚洲视频大全| 久热精品视频在线观看一区| 国产呦小j女精品视频| 99久热在线精品视频观看| 婷婷亚洲久悠悠色悠在线播放 | 免费av网址在线| 欧美性videos| 91日韩精品一区| 亚洲自拍av在线| 手机av免费观看| 激情欧美丁香| 日韩小视频在线观看| 黄色a一级视频| 9l亚洲国产成人精品一区二三| 色老综合老女人久久久| 人人干视频在线| 26uuu亚洲电影在线观看| 精品一区二区三区在线播放| 欧美情侣性视频| 日本午夜在线观看| 国产一区二区区别| 亚洲精品一区二区三区精华液| 亚洲精品国产一区二区三区| 日韩免费小视频| 欧美日韩免费看| 国产不卡一区二区视频| 在线中文字幕-区二区三区四区| 中文字幕的久久| 免费国产一区二区| 五月婷婷狠狠干| 成人免费观看视频| 91视频免费进入| 精品黑人一区二区三区在线观看| 精品一区二区三区欧美| 国产精品视频导航| 在线播放精品视频| 男男视频亚洲欧美| 国产日产欧美a一级在线| 日韩av免费播放| 日韩av一级电影| 国产成人免费91av在线| 日本一本在线观看| 久久精品毛片| 国产精品扒开腿做爽爽爽男男| 亚洲熟女综合色一区二区三区| 一本色道久久精品| 欧美一区第一页| 欧美日韩乱国产| 国产视频一区欧美| 日韩免费av一区二区| 在线观看日本网站| 日韩电影免费在线观看网站| 国产国产精品人在线视| 自拍偷拍福利视频| 久久国产尿小便嘘嘘| 国产一区在线播放| 国产xxxx孕妇| 国内外成人在线视频| 147欧美人体大胆444| 成人av一区二区三区在线观看 | 欧美在线高清视频| www.com黄色片| 国产激情一区| 精品国精品国产| 色婷婷精品久久二区二区密| 思热99re视热频这里只精品| 亚洲最新av网址| 大吊一区二区三区| 欧美日韩网站| 欧美一区二三区| 这里只有久久精品视频| 国产最新精品免费| 国产亚洲自拍偷拍| 久草福利在线视频| 亚洲欧美自拍偷拍色图| 成人黄色大片网站| 桃子视频成人app| 在线成人小视频| 国产麻豆剧传媒精品国产av| 国产一区网站| 欧美日韩国产91| 91午夜精品亚洲一区二区三区| 免费成人在线观看视频| 91亚洲精品视频| 欧美日本韩国一区二区| 亚洲人午夜精品天堂一二香蕉| 欧美日韩性生活片| 欧美爱爱视频| 精品日韩在线一区| ass极品国模人体欣赏| 亚洲福利专区| 国产一区二区视频在线观看| 亚洲日本香蕉视频| ㊣最新国产の精品bt伙计久久| 日本中文字幕网址| 成人亚洲精品| 精品调教chinesegay| 一区二区国产精品精华液| 国产精品久久久免费| 成人久久久久爱| 日本免费一区二区三区最新| 亚洲日本乱码在线观看| 亚洲天堂av线| 欧美激情久久久久久久久久久| 日韩一区二区在线视频| 六月丁香激情综合| 粉嫩嫩av羞羞动漫久久久| 亚洲精品成人三区| 成人性生活视频| 精品国产亚洲一区二区三区在线观看| 一二三四在线观看视频| 性欧美videos另类喷潮| 国产日韩精品推荐| www红色一片_亚洲成a人片在线观看_| 日韩欧美亚洲一二三区| 国产精品久久久久久亚洲av| 91高清一区| 国产欧亚日韩视频| 国产在线视频你懂得| 精品久久久免费| 99热超碰在线| 欧美日韩p片| 91免费国产网站| 五月天婷婷在线视频| 在线亚洲+欧美+日本专区| 午夜一区二区三区免费| 亚洲免费大片| 精品久久久久久综合日本| 国产啊啊啊视频在线观看| 欧美一卡2卡三卡4卡5免费| 成年人免费视频播放| 免费xxxx性欧美18vr| 三级三级久久三级久久18| 最新日韩三级| 在线播放国产精品| 欧美成人一区二区视频| 国产视频一区在线播放| www日韩视频| 欧美最新另类人妖| 国产精品久久久久久五月尺| 成人在线观看一区| 欧美图区在线视频| www.黄色com| 精品伊人久久久久7777人| 手机福利在线视频| 国产午夜精品一区在线观看| 欧美福利视频在线观看| 丰满熟妇乱又伦| 午夜精品免费在线| 毛片网站免费观看| 日韩激情av在线| 亚洲精品高清国产一线久久| 国产视频一区二| 韩日精品中文字幕| 欧美91精品久久久久国产性生爱| 色婷婷av久久久久久久| 99国产精品免费| 精品亚洲成a人在线观看 | 性欧美videoshd高清| 欧美成人三级在线| 国产情侣在线视频| 国产日本欧洲亚洲| 伊人色在线视频| 在线观看视频日韩| 日韩视频在线播放| 国产午夜久久av| 国内自拍欧美激情| 国产www.大片在线| 欧美一区二区三区在线观看视频 | 黄色视屏免费在线观看| 精品精品国产高清a毛片牛牛| 精品国产一区二区三区四| 亚洲欧洲性图库| 9.1在线观看免费| 日本亚洲视频在线| 国产卡一卡二在线| 日韩精品免费一区二区三区竹菊 | 欧美国产亚洲另类动漫| 精品国产午夜福利在线观看| 中文精品视频| 日韩人妻精品一区二区三区| 精品按摩偷拍| 国产精品视频yy9099| av在线中出| 最近的2019中文字幕免费一页 | 日韩国产成人在线| 亚洲免费毛片网站| 国产熟妇搡bbbb搡bbbb| 国产在线国偷精品免费看| 国产乱子伦农村叉叉叉| 天天综合一区| 欧美日韩三区四区| av日韩精品| 成人日韩在线电影| 成人av观看| 欧美激情一区二区三区成人| 成人在线免费观看| 日韩av在线免费观看一区| 国产精品特级毛片一区二区三区| 日韩欧美精品网站| 日本特黄一级片| 亚洲欧美成人一区二区三区| 国产精久久一区二区三区| 成人在线综合网| 伊人色在线视频| 蜜桃一区二区三区四区| 欧美私人情侣网站| 在线播放不卡| 一区二区三区四区免费观看| 成人网18免费网站| 欧美大陆一区二区| 国产精品主播在线观看| 亚洲bt天天射| 在线观看欧美| 国产精品免费观看在线| 日韩精品三区| 日本一区二区三区四区视频| 超碰资源在线| 欧美激情一区二区三区高清视频 | 亚洲精品日韩综合观看成人91| 亚洲色图 激情小说| 久久久精品日韩欧美| 超碰男人的天堂| 成人aaaa免费全部观看| 性感美女一区二区三区| 国产精品小仙女| 国产黄色一区二区三区| 极品美女销魂一区二区三区 | 国产成人一区二区三区别| 久久久久美女| 黄色免费高清视频| 欧美电影免费播放| 一区二区三区免费看| 成人影视亚洲图片在线| 日韩在线导航| 色综合咪咪久久网| 亚洲制服欧美久久| 久久精品久久久| 国产精品无码乱伦| 91精品观看| 欧美美女黄色网| 好看的日韩av电影| 精品无码一区二区三区在线| 一区二区精品视频| 一区二区三区四区电影| 黄色网络在线观看| 影音先锋久久资源网| 好吊妞无缓冲视频观看| 亚洲一区二区成人| 手机看片福利盒子久久| 美女视频黄 久久| 日韩欧美中文在线视频| 国产成人精品免费网站| 性色av蜜臀av浪潮av老女人| xnxx国产精品| 三区四区在线观看| 亚洲视频免费在线观看| 久久久久久久中文字幕| 婷婷国产在线综合| 中文字幕理论片| 日韩三级高清在线| 性猛交xxxx| 播播国产欧美激情| 国内在线视频| 国产精品成人免费电影| 久久丁香四色| 免费观看成人在线| 我不卡伦不卡影院| 午夜免费福利小电影| 日本美女一区二区三区视频| 亚洲高清在线不卡| 99精品视频在线免费观看| 在线免费观看视频| 一个色综合网站| 免费的毛片视频| 6080日韩午夜伦伦午夜伦| 日本美女一级片| 最近免费中文字幕视频2019| 欧美寡妇性猛交xxx免费| 欧美最猛黑人xxxx黑人猛叫黄| 日韩国产一二三区| 国产一区免费观看| 99欧美视频| 久久网站免费视频| 国产精品一区久久久久| 精品少妇一区二区三区免费观| 国产精品超碰97尤物18| 91精品国产乱码久久久张津瑜 | 中文字幕国产高清| av亚洲产国偷v产偷v自拍| 青青草自拍偷拍| 欧美视频专区一二在线观看| www.com在线观看| 国产性猛交xxxx免费看久久| 青青青国内视频在线观看软件| 国产精品av在线播放| av成人资源| 欧美大片免费播放| 日韩av一区二区在线影视| 国产精品九九视频| 一区二区三区四区国产精品| 中文字幕 亚洲视频| 亚洲精品久久久久中文字幕欢迎你| 在线免费观看黄色av| 欧美在线一区二区三区四| 色播一区二区| 先锋影音男人资源| 日本成人在线电影网| 成年人在线观看av| 亚洲一区二区三区在线| 99热这里只有精品3| 中文字幕九色91在线| 成人片免费看| 欧美亚洲国产免费| 国产精品丝袜xxxxxxx| 精品人妻一区二区三区日产| 一区二区高清免费观看影视大全 | 亚洲精选中文字幕| 黄色18在线观看| 国产精品久久亚洲| 欧美视频网站| 日本人dh亚洲人ⅹxx| 日韩毛片一二三区| 国产精品-色哟哟| 色妞在线综合亚洲欧美| 国产美女久久| 一本色道久久99精品综合| 美女视频一区二区三区| 男人舔女人下部高潮全视频| 日韩欧美在线视频| 久久天堂电影| 国产精品aaaa| 日本女优一区| 岛国av免费在线| 亚洲欧洲美洲综合色网| 国产区精品在线| 久久久精品一区二区| 免费看日产一区二区三区| 无码人妻aⅴ一区二区三区日本| 精品午夜久久福利影院| 久久人妻无码aⅴ毛片a片app| 欧美一区三区四区| 在线播放蜜桃麻豆| 国产综合 伊人色| 鲁大师成人一区二区三区| 女人十八毛片嫩草av| 欧美日韩综合在线| 免费大片在线观看www| 97se国产在线视频| 亚洲午夜在线| 国产亚洲无码精品| 欧美三级电影在线观看| 国内精品不卡| 国产精品夜夜夜一区二区三区尤| 国产精品综合色区在线观看| 国产精品密蕾丝袜| 91麻豆精品国产91久久久使用方法| 性欧美videoshd高清| 久久国产主播精品| 奇米精品一区二区三区在线观看| 国产高潮流白浆| 亚洲高清久久网| 123成人网| 欧美做暖暖视频| 91蜜桃免费观看视频| 一级片视频播放| 欧美黑人极品猛少妇色xxxxx | 中文字幕一区二区三区5566| 国产精品综合一区二区| 日韩精品手机在线| 最近中文字幕2019免费| 91蜜桃臀久久一区二区| 国产精品少妇在线视频| 亚洲欧美日韩一区二区| 天天躁日日躁狠狠躁喷水| 国产精品日韩电影| 亚洲调教视频在线观看| 国产美女永久免费无遮挡| 678五月天丁香亚洲综合网| 在线天堂新版最新版在线8| 国产精品波多野结衣| 26uuu欧美| 国产三级视频在线播放| 欧美在线视频免费| 中文字幕人成人乱码| 婷婷色一区二区三区 | 蜜桃视频在线免费| 91精品国产91久久久久青草| 久久久精品日韩| 久久久久久久国产精品毛片|