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

五個可以加速開發的 VueUse 庫函數

開發 項目管理
VueUse 是 Anthony Fu 的一個開源項目,它為 Vue 開發人員提供了大量適用于 Vue 2 和 Vue 3 的基本 Composition API 實用程序函數。

[[413578]]

VueUse 是 Anthony Fu 的一個開源項目,它為 Vue 開發人員提供了大量適用于 Vue 2 和 Vue 3 的基本 Composition API 實用程序函數。

它有幾十個解決方案,適用于常見的開發者用例,如跟蹤Ref變化、檢測元素可見性、簡化常見的Vue模式、鍵盤/鼠標輸入等。這是一個真正節省開發時間的好方法,因為你不必自己添加所有這些標準功能。

我喜歡VueUse庫,因為它在決定提供哪些實用工具時真正把開發者放在第一位,而且它是一個維護良好的庫,因為它與Vue的當前版本保持同步。

VueUse 有哪些實用程序?

如果你想看到每一個實用程序的完整列表,我絕對建議你去看看官方文檔[1]。但總結一下,VueUse中有9種類型的函數。

  1. Animation——包含易于使用的過渡、超時和計時功能。
  2. Browser——可用于不同的屏幕控制、剪貼板、偏好等。
  3. Component——提供了不同組件方法的簡寫。
  4. Formatters——提供響應時間格式化功能。
  5. Sensors——用來監聽不同的DOM事件、輸入事件和網絡事件。
  6. State——管理用戶狀態(全局、本地存儲、會話存儲)。
  7. Utility——不同的實用函數,如 getter、條件、引用同步等。
  8. Watch——更多高級類型的觀察器,如可暫停的觀察器、退避的觀察器和條件觀察器。
  9. Misc——不同類型的事件、WebSockets和web workers 的功能

這些類別中的大多數都包含幾個不同的功能,所以VueUse對于你的使用情況來說是很靈活的,可以作為一個很好的地方來快速開始構建Vue應用程序。

在本教程中,我們將看一下5個不同的VueUse函數,這樣你就可以了解在這個庫中工作是多么容易。

但首先,讓我們將其添加到Vue項目中!

將 VueUse 安裝到你的 Vue 項目中

VueUse的最大特點之一是,它只用一個軟件包就能同時兼容Vue 2和Vue 3!

安裝VueUse有兩種選擇npm或CDN

  1. npm i @vueuse/core # yarn add @vueuse/core 
  2. <script src="https://unpkg.com/@vueuse/shared"></script> 
  3. <script src="https://unpkg.com/@vueuse/core"></script> 

我建議使用NPM,因為它使用法更容易理解,但如果我們使用CDN,VueUse將在應用程序中通過 window.VueUse 訪問。

對于NPM的安裝,所有的功能都可以通過使用標準的對象重構從 @vueuse/core 中導入,像這樣訪問。

  1. import { useRefHistory } from '@vueuse/core' 

好了,現在我們已經安裝了VueUse,讓我們在應用程序中使用它!

useRefHistory 跟蹤響應式數據的更改

useRefHistory 跟蹤對Ref所做的每一個改變,并將其存儲在一個數組中。這使我們能夠輕松地為我們的應用程序提供撤銷和重做功能。

讓我們看一個示例,其中我們正在構建一個我們希望能夠撤消的文本區域。

第一步是在不使用 VueUse 的情況下創建我們的基本組件——使用 ref、textarea 和用于撤消和重做的按鈕。

  1. <template> 
  2.   <p>  
  3.     <button> Undo </button> 
  4.     <button> Redo </button> 
  5.   </p> 
  6.   <textarea v-model="text"/> 
  7. </template> 
  8.  
  9. <script setup> 
  10. import { ref } from 'vue' 
  11. const text = ref(''
  12. </script> 
  13.  
  14. <style scoped> 
  15.   button { 
  16.     border: none; 
  17.     outline: none; 
  18.     margin-right: 10px; 
  19.     background-color: #2ecc71; 
  20.     color: white; 
  21.     padding: 5px 10px;; 
  22.   } 
  23. </style> 

然后,讓我們通過導入 useRefHistory 函數,然后從我們的文本 ref 中提取history、undo 和 redo 屬性來添加 VueUse。這就像調用 useRefHistory 并傳遞我們的 ref 一樣簡單。

  1. import { ref } from 'vue' 
  2. import { useRefHistory } from '@vueuse/core' 
  3.  
  4. const text = ref(''
  5. const { history, undo, redo } = useRefHistory(text) 

每次我們的 ref 更改時,這都會觸發一個觀察者——更新我們剛剛創建的 history 屬性。 

然后,為了讓我們能真正看到發生了什么,讓我們打印出模板內的歷史記錄,同時在點擊相應的按鈕時調用我們的 undo 和 redo 函數。

  1. <template> 
  2.   <p>  
  3.     <button @click="undo"> Undo </button> 
  4.     <button @click="redo"> Redo </button> 
  5.   </p> 
  6.   <textarea v-model="text"/> 
  7.   <ul> 
  8.     <li v-for="entry in history" :key="entry.timestamp"
  9.       {{ entry }} 
  10.     </li> 
  11.   </ul> 
  12. </template> 
  13.  
  14. <script setup> 
  15. import { ref } from 'vue' 
  16. import { useRefHistory } from '@vueuse/core' 
  17. const text = ref(''
  18. const { history, undo, redo } = useRefHistory(text) 
  19. </script> 
  20.  
  21. <style scoped> 
  22.   button { 
  23.     border: none; 
  24.     outline: none; 
  25.     margin-right: 10px; 
  26.     background-color: #2ecc71; 
  27.     color: white; 
  28.     padding: 5px 10px;; 
  29.   } 
  30. </style> 

好的,讓我們運行它。當我們輸入時,每個字符都會觸發歷史數組中的一個新條目,如果我們點擊undo/redo,我們會轉到相應的條目。

還有不同的選項可以為此功能添加更多功能。例如,我們可以深入跟蹤反應對象并限制這樣的歷史條目的數量。

  1. const { history, undo, redo } = useRefHistory(text, { 
  2.   deep: true
  3.   capacity: 10, 
  4. }) 

有關完整的選項清單,請務必查看文檔。

onClickOutside 關閉模態

onClickOutside 檢測在一個元素之外的任何點擊。根據我的經驗,這個功能最常見的使用情況是關閉任何模式或彈出窗口。

通常情況下,我們希望我們的模態擋住網頁的其他部分,以吸引用戶的注意力并限制錯誤。然而,如果他們真的點擊了模態之外的內容,我們希望它能夠關閉。

只需兩個步驟即可完成此操作:

  1. 為我們要檢測的元素創建一個模板引用
  2. 使用此模板引用運行 onClickOutside

這是一個使用 onClickOutside 的帶有彈出窗口的簡單組件。

  1. <template> 
  2.   <button @click="open = true"Open Popup </button> 
  3.   <div class="popup" v-if='open'
  4.     <div class="popup-content" ref="popup"
  5.       Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis aliquid autem reiciendis eius accusamus sequi, ipsam corrupti vel laboriosam necessitatibus sit natus vero sint ullam! Omnis commodi eos accusantium illum? 
  6.     </div> 
  7.   </div> 
  8. </template> 
  9.  
  10. <script setup> 
  11. import { ref } from 'vue' 
  12. import { onClickOutside } from '@vueuse/core' 
  13. const open = ref(false) // state of our popup 
  14. const popup = ref() // template ref 
  15. // whenever our popup exists, and we click anything BUT it 
  16. onClickOutside(popup, () => { 
  17.   open.value  = false 
  18. }) 
  19. </script> 
  20.  
  21. <style scoped> 
  22.   button { 
  23.     border: none; 
  24.     outline: none; 
  25.     margin-right: 10px; 
  26.     background-color: #2ecc71; 
  27.     color: white; 
  28.     padding: 5px 10px;; 
  29.   } 
  30.   .popup { 
  31.     position: fixed; 
  32.     top: ; 
  33.     left: ; 
  34.     width: 100vw; 
  35.     height: 100vh; 
  36.     display: flex; 
  37.     align-items: center; 
  38.     justify-content: center; 
  39.     background: rgba(, , , 0.1); 
  40.   } 
  41.   .popup-content { 
  42.     min-width: 300px; 
  43.     padding: 20px; 
  44.     width: 30%; 
  45.     background: #fff; 
  46.   } 
  47. </style> 

結果是這樣的,我們可以用我們的按鈕打開彈出窗口,然后在彈出內容窗口外點擊關閉它。

useVModel 簡化了 v-model 綁定

Vue 開發人員的一個常見用例是為組件創建自定義 v-model 綁定。這意味著我們的組件接受一個值作為 prop,并且每當該值被修改時,我們的組件都會向父級發出更新事件。

useVModel函數將其簡化為只使用標準的 ref 語法。假設我們有一個自定義的文本輸入,試圖為其文本輸入的值創建一個 v-model。通常情況下,我們必須接受一個值的prop,然后emit一個變化事件來更新父組件中的數據值。

我們可以使用useVModel,把它當作一個普通的ref,而不是使用ref并調用 props.value 和 update:value。這有助于減少我們需要記住的不同語法的數量!

  1. <template> 
  2.     <div> 
  3.         <input  
  4.             type="text"  
  5.             :value="data" 
  6.             @input="update" 
  7.         /> 
  8.     </div> 
  9. </template> 
  10.  
  11. <script> 
  12. import { useVModel } from '@vueuse/core' 
  13. export default { 
  14.   props: ['data'], 
  15.   setup(props, { emit }) { 
  16.     const data = useVModel(props, 'data', emit) 
  17.     console.log(data.value) // equal to props.data 
  18.     data.value = 'name' // equal to emit('update:data''name'
  19.     const update = (event) => { 
  20.         data.value = event.target.value 
  21.     } 
  22.     return { 
  23.         data, 
  24.         update 
  25.     } 
  26.   }, 
  27. </script> 

每當我們需要訪問我們的值時,我們只需調用 .value,useVModel將從我們的組件props中給我們提供值。而每當我們改變對象的值時,useVModel會向父組件發出一個更新事件。

下面是一個快速的例子,說明該父級組件可能是什么樣子...

  1. <template> 
  2.   <div> 
  3.     <p> {{ data }} </p> 
  4.     <custom-input  
  5.       :data="data"  
  6.       @update:data="data = $event" 
  7.     /> 
  8.   </div> 
  9. </template> 
  10.  
  11. <script> 
  12. import CustomInput from './components/CustomInput.vue' 
  13. import { ref } from 'vue' 
  14. export default { 
  15.   components: { 
  16.     CustomInput, 
  17.   }, 
  18.   setup () { 
  19.     const data = ref('hello'
  20.     return { 
  21.       data 
  22.     } 
  23.   } 

結果看起來像這樣,我們在父級中的值始終與子級中的輸入保持同步。

使用IntersectionObserver 跟蹤元素可見性

在確定兩個元素是否重疊時,Intersection Observers [2] 非常強大。一個很好的用例是檢查元素當前是否在視口中可見。

本質上,它檢查目標元素與根元素/文檔相交的百分比。如果該百分比超過某個閾值,它會調用一個回調來確定目標元素是否可見。

useIntersectionObserver 提供了一個簡單的語法來使用IntersectionObserver API。我們所需要做的就是為我們想要檢查的元素提供一個模板ref。默認情況下,IntersectionObserver將以文檔的視口為根基,閾值為0.1——所以當這個閾值在任何一個方向被越過時,我們的交集觀察器將被觸發。 

這個例子的代碼可能是這樣的:我們有一個假的段落,只是在我們的視口中占據了空間,我們的目標元素,然后是一個打印語句,打印我們元素的可見性。

  1. <template> 
  2.   <p> Is target visible? {{ targetIsVisible }} </p> 
  3.   <div class="container"
  4.     <div class="target" ref="target"
  5.       <h1>Hello world</h1> 
  6.     </div> 
  7.   </div> 
  8. </template> 
  9.  
  10. <script> 
  11. import { ref } from 'vue' 
  12. import { useIntersectionObserver } from '@vueuse/core' 
  13. export default { 
  14.   setup() { 
  15.     const target = ref(null
  16.     const targetIsVisible = ref(false
  17.     const { stop } = useIntersectionObserver( 
  18.       target, 
  19.       ([{ isIntersecting }], observerElement) => { 
  20.         targetIsVisible.value = isIntersecting 
  21.       }, 
  22.     ) 
  23.     return { 
  24.       target, 
  25.       targetIsVisible, 
  26.     } 
  27.   }, 
  28. </script> 
  29.  
  30. <style scoped> 
  31. .container { 
  32.   width: 80%; 
  33.   margin:  auto; 
  34.   background-color: #fafafa; 
  35.   max-height: 300px; 
  36.   overflow: scroll
  37. .target { 
  38.   margin-top: 500px; 
  39.   background-color: #1abc9c; 
  40.   color: white; 
  41.   padding: 20px; 
  42. </style> 

當我們運行并滾動它時,我們會看到它正確地更新了。

我們還可以為 Intersection Observer 指定更多選項,例如更改其根元素、邊距(用于計算交點的根邊界框的偏移量)和閾值級別。

  1. const { stop } = useIntersectionObserver( 
  2.   target, 
  3.   ([{ isIntersecting }], observerElement) => { 
  4.     targetIsVisible.value = isIntersecting 
  5.   }, 
  6.   { 
  7.     // root, rootMargin, threshold, window 
  8.     // full options in the source: https://github.com/vueuse/vueuse/blob/main/packages/core/useIntersectionObserver/index.ts 
  9.     threshold: 0.5, 
  10.   } 

同樣重要的是,這個方法返回一個 stop 函數,我們可以調用這個函數來停止觀察交叉點。如果我們只想追蹤一個元素在屏幕上第一次可見的時候,這就特別有用。

在這段代碼中,一旦 targetIsVisible 被設置為 true,觀察者就會停止,即使我們滾動離開目標元素,我們的值也會保持為true。

  1. const { stop } = useIntersectionObserver( 
  2.   target, 
  3.   ([{ isIntersecting }], observerElement) => { 
  4.     targetIsVisible.value = isIntersecting 
  5.     if (isIntersecting) { 
  6.       stop() 
  7.     } 
  8.   }, 

useTransition 在值之間過渡

useTransition 是整個veuse庫中我最喜歡的函數之一。它允許我們在一行內平滑地轉換數值。

我們有一個存儲為ref的數字源和一個將在不同數值之間緩和的輸出。例如,假設我們想建立一個計數器。

我們可以通過三個步驟來做到這一點:

  • 創建我們的 count ref并將其初始化為零
  • 使用 useTransition 創建 output ref(設置持續時間和轉換類型)
  • 更改 count 的值
  1. <script setup> 
  2. import { ref } from 'vue' 
  3. import { useTransition, TransitionPresets } from '@vueuse/core' 
  4.  
  5. const source = ref(0) 
  6.  
  7. const output = useTransition(source, { 
  8.   duration: 3000, 
  9.   transition: TransitionPresets.easeOutExpo, 
  10. }) 
  11.  
  12. source.value = 5000 
  13.  
  14. </script> 

然后,在我們的模板中,我們希望顯示 output 的值,因為它可以在不同值之間平滑過渡。

  1. <template> 
  2.   <h2>  
  3.     <p> Join over </p> 
  4.     <p> {{ Math.round(output) }}+ </p> 
  5.     <p>Developers </p> 
  6.   </h2> 
  7. </template> 
  8.  
  9. <script setup> 
  10. import { ref } from 'vue' 
  11. import { useTransition, TransitionPresets } from '@vueuse/core' 
  12. const source = ref() 
  13. const output = useTransition(source, { 
  14.   duration: 3000, 
  15.   transition: TransitionPresets.easeOutExpo, 
  16. }) 
  17. source.value = 5000 
  18. </script> 

這就是結果!

我們還可以使用 useTransition 來過渡整個數字數組,這在處理位置或顏色時很有用。處理顏色的一個絕招是使用一個計算屬性將RGB值格式化為正確的顏色語法。

  1. <template> 
  2.   <h2 :style="{ color: color } "> COLOR CHANGING </h2> 
  3. </template> 
  4.  
  5. <script setup> 
  6. import { ref, computed } from 'vue' 
  7. import { useTransition, TransitionPresets } from '@vueuse/core' 
  8. const source = ref([, , ]) 
  9. const output = useTransition(source, { 
  10.   duration: 3000, 
  11.   transition: TransitionPresets.easeOutExpo, 
  12. }) 
  13. const color = computed(() => { 
  14.   const [r, g, b] = output.value 
  15.   return `rgb(${r}, ${g}, $)` 
  16. }) 
  17. source.value = [255, , 255] 
  18. </script> 

 

一些進一步定制的酷方法是使用任何內置的過渡預設或使用CSS緩動函數來定義我們自己的過渡。

最后的想法

這絕不是 VueUse 的完整指南,這些只是我發現 VueUse 庫中最有趣的許多函數。

我喜歡所有這些實用功能對加快開發速度的幫助,因為它們中的每一個都是為了解決具體而又常見的用例。

我很想聽聽你是如何在自己的項目中實施VueUse的。請在下面留下任何評論。

原文:https://learnvue.co/2021/07/5-vueuse-library-functions-that-can-speed-up-development/ 

作者:Matt Maribojoc

參考資料

[1]官方文檔: https://vueuse.org/functions.html

[2]Intersection Observers : https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver

本文轉載自微信公眾號「前端全棧開發者」,可以通過以下二維碼關注。轉載本文請聯系前端全棧開發者公眾號。

 

責任編輯:武曉燕 來源: 前端全棧開發者
相關推薦

2021-08-11 09:33:15

Vue 技巧 開發工具

2018-09-11 09:00:50

工具開發應用程序

2011-02-17 14:43:29

Windows 7加速

2009-12-01 15:14:32

PHP Substr庫

2010-06-17 13:16:07

SQLServer 數

2022-08-05 13:38:08

C語言庫函數printf()

2023-12-27 14:19:33

Python內置函數開發

2015-07-29 10:11:18

Tableviews加速開發

2009-12-08 11:10:20

PHP GD庫函數

2010-06-13 10:18:08

MySQL 數據庫函數

2015-07-30 09:49:33

Table ViewsTips加速

2011-09-05 09:53:36

CSS

2025-04-24 08:31:57

2022-12-16 15:20:19

RustC 語言

2022-11-15 16:37:38

PyTorch抽樣函數子集

2022-12-26 10:17:14

2014-06-05 14:36:09

移動游戲手游開發技巧

2022-01-03 16:08:36

深度學習PyTorchNumPy

2010-11-29 10:36:18

Sybase數據庫函數

2025-07-29 09:01:35

if-else代碼
點贊
收藏

51CTO技術棧公眾號

99热手机在线| 欧美日韩国产精品一卡| 久操免费在线视频| 免费萌白酱国产一区二区三区| 五月婷婷综合在线| 日韩中文字幕av在线| 国产视频aaa| 国产精品嫩草99av在线| 中文字幕精品视频| 欧美性生交xxxxx| av在线不卡精品| 亚洲另类在线视频| 日本不卡二区| 亚洲精品久久久久久久久久久久久久| 久久精品一区| 欧美激情国产精品| 婷婷综合在线视频| 日韩超碰人人爽人人做人人添| 欧美日韩成人综合天天影院 | 国际av在线| 激情成人午夜视频| 国产精品99久久久久久www| 久久久久亚洲天堂| 久久伦理在线| 亚洲精品一区二区三区不| 一级黄色免费毛片| 国产人妖一区| 色婷婷久久久久swag精品| av日韩在线看| 老司机在线看片网av| 久久久久国产一区二区三区四区 | 夜夜春成人影院| 欧美大片免费久久精品三p| 亚洲一区在线不卡| 欧美电影h版| 婷婷久久综合九色国产成人| 国产手机视频在线观看| 成年人免费在线视频| 99re8在线精品视频免费播放| 99热最新在线| 国产女人18毛片水真多| 美女网站视频久久| 国产精品激情自拍| 亚洲毛片一区二区三区| 国产精品人人爽人人做我的可爱| 欧美激情国产精品| 久青草视频在线观看| 亚洲欧美亚洲| 久久久精品在线观看| 日韩不卡av在线| 欧洲杯什么时候开赛| 亚洲欧美综合精品久久成人| 欧美做受喷浆在线观看| 欧美电影在线观看免费| 亚洲国产成人精品女人久久久 | 久久九九精品视频| 在线电影院国产精品| 亚洲最大天堂网| 精品国产亚洲日本| 日韩精品中文字幕在线不卡尤物| 色婷婷激情视频| 精品午夜av| 欧美一区二区三区视频免费| 九色91porny| 日本精品在线播放 | 涩多多在线观看| 国产区一区二| 日韩欧美亚洲国产精品字幕久久久 | 中文字幕第二区| 欧美裸体在线版观看完整版| 中文字幕不卡av| 蜜桃av.com| 中文字幕免费一区二区| 欧美大片第1页| 久久草视频在线| 久久国产精品亚洲77777| 国产成人精品电影| 一级做a爱片性色毛片| 国产麻豆精品视频| 国产精品10p综合二区| 亚洲av片在线观看| 欧美国产日产图区| 日韩视频一二三| 欧美成人精品一区二区免费看片| 亚洲国产www| thepron国产精品| 麻豆一区区三区四区产品精品蜜桃| 日本一区二区三区在线观看视频| 国产亚洲va综合人人澡精品 | 久久久精品视频国产| 成人h动漫精品一区二区器材| 日韩成人在线视频网站| 日本精品久久久久中文| 欧美日韩调教| 国产精品久久久久高潮| 99精品在线视频观看| 99re成人精品视频| 9999在线观看| 桃色av一区二区| 欧美精品一二三四| xxxx黄色片| 久久精品国产www456c0m| 久久久亚洲国产| 一级一级黄色片| 福利视频网站一区二区三区| 日韩成人av电影在线| 天天干在线视频论坛| 在线观看欧美精品| 中文字幕在线观看91| 成人羞羞在线观看网站| 国外视频精品毛片| 亚洲最大成人在线视频| 91美女蜜桃在线| 日本老太婆做爰视频| www.成人在线视频| 亚洲精品720p| 欧产日产国产v| 日韩成人一级片| 国产一区二区不卡视频| 黄色网址视频在线观看| 在线亚洲免费视频| www.美色吧.com| 天天射天天综合网| 国产精品福利网| 亚洲av电影一区| 亚洲午夜在线电影| 91香蕉视频在线观看视频| 青青草原综合久久大伊人精品| 久久久久中文字幕2018| 国产视频一区二区三| 亚洲国产精品高清| 国产午夜伦鲁鲁| 18国产精品| 欧美成人免费一级人片100| 中文字幕第315页| www国产成人免费观看视频 深夜成人网 | 亚洲免费不卡视频| 亚洲乱码国产乱码精品精98午夜| 麻豆三级在线观看| 狠狠操综合网| 国产极品精品在线观看| 色吊丝在线永久观看最新版本| 亚洲国产va精品久久久不卡综合 | 亚洲视频自拍| 视频一区视频二区国产精品| 久久久久久久久久一级| 久久久噜噜噜久噜久久综合| 国产免费一区二区三区视频| 色婷婷狠狠五月综合天色拍| 26uuu另类亚洲欧美日本老年| 人妻精品一区一区三区蜜桃91| 亚洲一区国产视频| 在线中文字日产幕| 亚洲电影成人| 久久国产一区二区| 成人福利视频| 亚洲欧美在线x视频| 人妻丰满熟妇av无码区| 91丝袜美腿高跟国产极品老师 | 免费成人在线影院| 亚洲mv在线看| 日韩午夜电影免费看| 日韩一区二区av| 国产夫妻性生活视频| 亚洲综合一区二区| 手机在线成人av| 中文高清一区| 欧美日韩精品免费看| 国产超碰精品| 久久精品久久久久| 国产三级按摩推拿按摩| 亚洲国产日韩av| 18禁裸乳无遮挡啪啪无码免费| 午夜亚洲视频| 神马影院我不卡| 国产精品麻豆| 97精品视频在线播放| 免费成人av电影| 欧美美女直播网站| 精品一级少妇久久久久久久| 26uuu久久天堂性欧美| 亚洲福利精品视频| 亚洲精品久久| 极品尤物一区二区三区| 精品免费av在线| 久久中文精品视频| 外国精品视频在线观看 | 91av久久久| 一区二区三区加勒比av| 中文字幕一区二区人妻在线不卡| 青青草视频一区| 天堂а√在线中文在线| 日韩mv欧美mv国产网站| 国产欧美 在线欧美| 色www永久免费视频首页在线 | 在线国产电影不卡| 国产女人18水真多毛片18精品| www.成人在线| 小泽玛利亚视频在线观看| 狠狠色综合网| 亚洲国产综合自拍| 久久1电影院| 国产欧美日韩专区发布| av中文在线资源库| xxx欧美精品| 欧洲毛片在线| 欧美v日韩v国产v| 日韩欧美一级大片| 亚洲18色成人| √天堂中文官网8在线| 91亚洲午夜精品久久久久久| 亚洲av毛片在线观看| 久久中文在线| 被灌满精子的波多野结衣| av中文一区| 国产美女精品在线观看| 亚洲欧美一级| 欧美与黑人午夜性猛交久久久| 岛国成人毛片| 最近2019年好看中文字幕视频| 性感美女视频一二三| 欧美一级片在线| 中国黄色一级视频| 色综合中文字幕国产| 国产精品不卡av| 亚洲黄色av一区| 人人干在线观看| 国产欧美一区二区精品性色| 日本黄色动态图| 国产成人午夜视频| √天堂资源在线| 另类欧美日韩国产在线| 无码无遮挡又大又爽又黄的视频| 激情婷婷久久| 亚洲国产精品无码av| 午夜日韩在线| 欧美另类videos| 国产精品99在线观看| 天堂社区 天堂综合网 天堂资源最新版| 精品久久97| 国产一区二区自拍| 7m精品国产导航在线| 99国精产品一二二线| 免费一区二区三区在线视频| 91亚洲精品一区| 亚洲精品v亚洲精品v日韩精品| 成人黄色av播放免费| 啪啪av大全导航福利综合导航| 国产精品久久久久久av| 韩日一区二区| 国产精品爽爽爽爽爽爽在线观看| 欧美成a人片在线观看久| 国产精品户外野外| 成人国产激情在线| 国产精品永久免费视频| 国产精品久久久久久久久久齐齐| 国产精品久久久久久久久久久久久久 | 国产日产精品一区二区三区四区的观看方式| 久久久久久九九| 亚洲精品推荐| 日韩欧美亚洲区| 日韩啪啪电影网| 中文字幕一区二区三区最新| 91精品精品| 日韩成人三级视频| 一区二区三区成人精品| 少妇性饥渴无码a区免费| 久久亚洲美女| 国产福利精品一区二区三区| 国产99久久久国产精品潘金| 麻豆精品国产传媒av| ww亚洲ww在线观看国产| 国产日韩精品中文字无码| 自拍视频在线观看一区二区| 欧美成人精品激情在线视频| 亚洲国产精品久久不卡毛片 | 69久久夜色精品国产69蝌蚪网| japanese国产| 日韩av一区在线观看| aaa在线免费观看| 不用播放器成人网| 超碰在线cao| 国产精品久久久| 警花av一区二区三区| 久久久久久久久久久久久久久久av| 成人3d精品动漫精品一二三| 男女激烈动态图| 国产精品女主播一区二区三区| 中文字幕成人在线视频| 国产91色综合久久免费分享| 四虎影成人精品a片| 亚洲欧美日韩国产一区二区三区| 国产精品成人网站| 欧美天天综合网| 亚洲乱码国产乱码精品精软件| 亚洲欧美精品中文字幕在线| 超碰个人在线| 国产成人免费91av在线| 日韩精品一区二区三区中文在线 | 999精品色在线播放| 久久久亚洲国产精品| 美女网站视频久久| 国产在线观看无码免费视频| 国产精品久久久久久久久快鸭| 日本天堂网在线观看| 欧美年轻男男videosbes| 四虎精品在永久在线观看| 久久香蕉频线观| 唐人社导航福利精品| av观看久久| 97视频热人人精品免费| 欧美 日韩 国产一区| 国产成人亚洲综合色影视| 蜜桃av免费观看| 懂色aⅴ精品一区二区三区蜜月| 国产精品久久婷婷| 亚洲精品中文字幕有码专区| 女人黄色免费在线观看| 国产日本欧美一区| 九九精品久久| 久草热视频在线观看| 国产福利一区在线| 韩国一级黄色录像| 色狠狠一区二区三区香蕉| 人妻一区二区三区| 欧美xxxx14xxxxx性爽| 涩涩涩久久久成人精品| 日韩免费电影一区二区| 亚洲综合社区| 午夜剧场免费看| 亚洲综合精品久久| 国产视频在线观看免费| 久久精品国产亚洲精品2020| 91成人在线| 国产一区二区三区免费不卡| 欧美xxx在线观看| 爽爽爽在线观看| 中文字幕一区二区三区在线不卡| 中文字幕亚洲乱码熟女1区2区| 亚洲精品国产综合久久| bl视频在线免费观看| 国产传媒一区| 在线成人av| 中文字幕第九页| 午夜激情久久久| 五月婷婷综合久久| 78色国产精品| 希岛爱理av免费一区二区| 日韩中文字幕在线视频观看| proumb性欧美在线观看| 日韩手机在线观看| 亚洲精品视频在线播放| 成人片免费看| 日韩av电影免费观看| 日本亚洲视频在线| 免费黄色在线网址| 欧美巨大另类极品videosbest | 久久综合88中文色鬼| 日韩护士脚交太爽了| 亚洲欧美日韩另类精品一区二区三区 | 欧美精品免费在线观看| 亚洲一二三区视频| 99色这里只有精品| 91在线播放网址| 无码人妻aⅴ一区二区三区有奶水| 亚洲人午夜精品| 男女啪啪999亚洲精品| 日本成人性视频| 岛国一区二区三区| 国产无人区码熟妇毛片多| 亚洲视频国产视频| 成人噜噜噜噜| 99在线免费视频观看| 久久久另类综合| 91片黄在线观看喷潮| 欧美激情在线狂野欧美精品| 天堂资源在线亚洲| 9久久婷婷国产综合精品性色| 亚洲欧洲日韩综合一区二区| 亚洲黄色片视频| 欧亚精品中文字幕| 久久电影院7| 国产免费无码一区二区| 一本到不卡免费一区二区| 亚洲成人三级| 国产精品免费一区二区三区在线观看| 校园激情久久| 搜索黄色一级片| 亚洲精品wwwww| 亚洲av无码乱码国产麻豆| 亚洲精品成人在线| 色窝窝无码一区二区三区成人网站| 日韩美女主播视频| 欧美影院一区| 日韩在线免费观看av| 欧美精品日韩一区| 日本在线影院| 精品91一区二区三区| 99久久99久久免费精品蜜臀| 国产精品一区二区人人爽|