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

五個可以加速開發(fā)的 VueUse 庫函數(shù)

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

[[413578]]

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

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

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

VueUse 有哪些實用程序?

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

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

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

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

但首先,讓我們將其添加到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將在應(yīng)用程序中通過 window.VueUse 訪問。

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

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

好了,現(xiàn)在我們已經(jīng)安裝了VueUse,讓我們在應(yīng)用程序中使用它!

useRefHistory 跟蹤響應(yīng)式數(shù)據(jù)的更改

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

讓我們看一個示例,其中我們正在構(gòu)建一個我們希望能夠撤消的文本區(qū)域。

第一步是在不使用 VueUse 的情況下創(chuàng)建我們的基本組件——使用 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> 

然后,讓我們通過導(dǎo)入 useRefHistory 函數(shù),然后從我們的文本 ref 中提取history、undo 和 redo 屬性來添加 VueUse。這就像調(diào)用 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 更改時,這都會觸發(fā)一個觀察者——更新我們剛剛創(chuàng)建的 history 屬性。 

然后,為了讓我們能真正看到發(fā)生了什么,讓我們打印出模板內(nèi)的歷史記錄,同時在點擊相應(yīng)的按鈕時調(diào)用我們的 undo 和 redo 函數(shù)。

  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> 

好的,讓我們運行它。當(dāng)我們輸入時,每個字符都會觸發(fā)歷史數(shù)組中的一個新條目,如果我們點擊undo/redo,我們會轉(zhuǎn)到相應(yīng)的條目。

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

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

有關(guān)完整的選項清單,請務(wù)必查看文檔。

onClickOutside 關(guān)閉模態(tài)

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

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

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

  1. 為我們要檢測的元素創(chuàng)建一個模板引用
  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> 

結(jié)果是這樣的,我們可以用我們的按鈕打開彈出窗口,然后在彈出內(nèi)容窗口外點擊關(guān)閉它。

useVModel 簡化了 v-model 綁定

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

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

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

  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> 

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

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

  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.   } 

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

使用IntersectionObserver 跟蹤元素可見性

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

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

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

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

  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> 

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

我們還可以為 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 函數(shù),我們可以調(diào)用這個函數(shù)來停止觀察交叉點。如果我們只想追蹤一個元素在屏幕上第一次可見的時候,這就特別有用。

在這段代碼中,一旦 targetIsVisible 被設(shè)置為 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庫中我最喜歡的函數(shù)之一。它允許我們在一行內(nèi)平滑地轉(zhuǎn)換數(shù)值。

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

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

  • 創(chuàng)建我們的 count ref并將其初始化為零
  • 使用 useTransition 創(chuàng)建 output ref(設(shè)置持續(xù)時間和轉(zhuǎn)換類型)
  • 更改 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> 

這就是結(jié)果!

我們還可以使用 useTransition 來過渡整個數(shù)字數(shù)組,這在處理位置或顏色時很有用。處理顏色的一個絕招是使用一個計算屬性將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}, ${b})` 
  16. }) 
  17. source.value = [255, , 255] 
  18. </script> 

 

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

最后的想法

這絕不是 VueUse 的完整指南,這些只是我發(fā)現(xiàn) VueUse 庫中最有趣的許多函數(shù)。

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

我很想聽聽你是如何在自己的項目中實施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

本文轉(zhuǎn)載自微信公眾號「前端全棧開發(fā)者」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系前端全棧開發(fā)者公眾號。

 

責(zé)任編輯:武曉燕 來源: 前端全棧開發(fā)者
相關(guān)推薦

2021-08-11 09:33:15

Vue 技巧 開發(fā)工具

2018-09-11 09:00:50

工具開發(fā)應(yīng)用程序

2011-02-17 14:43:29

Windows 7加速

2009-12-01 15:14:32

PHP Substr庫

2010-06-17 13:16:07

SQLServer 數(shù)

2022-08-05 13:38:08

C語言庫函數(shù)printf()

2023-12-27 14:19:33

Python內(nèi)置函數(shù)開發(fā)

2010-06-13 10:18:08

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

2009-12-08 11:10:20

PHP GD庫函數(shù)

2015-07-29 10:11:18

Tableviews加速開發(fā)

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抽樣函數(shù)子集

2022-12-26 10:17:14

2014-06-05 14:36:09

移動游戲手游開發(fā)技巧

2022-01-03 16:08:36

深度學(xué)習(xí)PyTorchNumPy

2010-11-29 10:36:18

Sybase數(shù)據(jù)庫函數(shù)

2025-07-29 09:01:35

if-else代碼
點贊
收藏

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

亚洲成人日韩| 欧美怡红院视频| 欧美久久久久久久| 欧美1区2区3区4区| 精品裸体舞一区二区三区| 欧美日韩免费做爰大片| 亚洲少妇最新在线视频| 北条麻妃在线观看| 国产不卡在线视频| 亚洲精品一区二区三区av| 亚洲狠狠婷婷| 国产精品视频福利| 午夜久久影院| 成人av男人的天堂| 婷婷综合久久| 成人av免费看| 亚洲欧美清纯在线制服| 韩国成人一区| 美女诱惑一区| 亚洲成人第一| 韩国三级电影一区二区| 在线观看成人av电影| 久久成人免费网站| 国产免费xxx| 国产999精品久久久久久绿帽| 日韩中文字幕亚洲精品欧美| 国产一区二区0| 蜜臀av色欲a片无码精品一区 | 日韩中文字幕视频| 日韩和的一区二在线| 在线午夜精品自拍| 91蝌蚪精品视频| 国产成人精品日本亚洲专区61| 先锋影音国产精品| 91精品久久久久久久久| 欧美a级片网站| 免费国产一区| 国产激情精品久久久第一区二区| 日本香蕉视频在线观看| 亚洲国产精品二十页| 日本私人影院在线观看| 欧美顶级少妇做爰| 欧美福利在线播放| 97在线精品国自产拍中文| 亚洲h色精品| 欧美日韩在线免费观看视频| 久久综合av免费| 欧美女子与性| 国产一区二区三区毛片| 国产精品毛片av| 鬼打鬼之黄金道士1992林正英| 麻豆精品国产91久久久久久| 成人免费无码av| 欧美影院午夜播放| 日韩免费va| 国产91免费看片| 在线亚洲免费| 欧美少妇性生活视频| 一级女性全黄久久生活片免费| 欧美成人hd| 欧美理论电影在线观看| 韩国自拍一区| 激情五月婷婷六月| 亚洲国产cao| jizz内谢中国亚洲jizz| 午夜欧美不卡精品aaaaa| 国产日韩欧美一区二区三区在线观看| 久久久久久免费看| 在线观看欧美日本| 国产视频一区二| 国产伦精品一区二区三区视频孕妇| 国产精品亚洲成人| 无人视频在线观看免费| 中文字幕精品av| 欧美色123| 午夜视频在线瓜伦| 日韩欧美的一区二区| 交换国产精品视频一区| 日韩不卡在线| 日韩av影片在线观看| 国产精品久久久久毛片软件| 91精品久久久久久久久久久久久久 | 蜜桃传媒视频麻豆一区| 日韩在线观看高清| 欧美日韩午夜影院| 99热在这里有精品免费| 精品成人免费一区二区在线播放| 欧美精品videosex性欧美| 久久久久久久久久久久久女国产乱 | www.av一区视频| 久久久久久亚洲综合| 视频精品导航| 7878视频在线观看| 日韩欧美精品免费| 国内精品久久久久久久久| **性色生活片久久毛片| 日韩大片在线| 女人黄色免费在线观看| 午夜精品久久久久久99热| 欧美精品aⅴ在线视频| 久久福利一区| 深夜成人在线| 在线观看小视频| 精品一区二区三区毛片| 欧美日韩视频在线第一区| 黄色日韩在线| 免费在线观看黄色网| 亚洲一区在线不卡| 欧美成人免费大片| 久久精品视频一区二区三区| 精品国产91乱码一区二区三区四区| 污污视频在线| 新版的欧美在线视频| 中文精品99久久国产香蕉| 中文字幕av一区二区三区免费看| 欧美专区在线| 久久电影天堂| 亚洲老女人av| 在线免费观看av的网站| 懂色av粉嫩av蜜臀av| 精品国产一区二区三区麻豆免费观看完整版 | 亚洲一区二区三区视频在线播放| 丁香婷婷久久| 少妇高潮流白浆| 欧美本精品男人aⅴ天堂| 亚洲精品1区2区| 日本最新在线视频| 国产尤物91| 欧美性xxxxxxxx| 国产精品vip| 91成人高清| 九九九九九精品| 欧美日本在线观看| 亚洲伦伦在线| 最爽无遮挡行房视频在线| 久久riav二区三区| 日韩一区国产二区欧美三区| 久久国产毛片| 一根才成人网| 国产黄色一级网站| 欧美大成色www永久网站婷| 国产日韩欧美精品在线| 亚洲春色h网| 日本人妖在线| 欧美精品免费观看二区| 日韩av中文在线| aaa国产一区| 免费观看成人www动漫视频| 男人的天堂在线播放| 99九九视频| 日韩av在线资源| 久久先锋影音av| 嫩草一区二区三区| 91精品国产91久久久久游泳池 | 亚洲美女少妇无套啪啪呻吟| 黄色网页在线免费观看| 中文字幕色一区二区| www高清在线视频日韩欧美| 国产精品丝袜在线| 一区二区三区四区日韩| jizz一区二区三区| 激情网站五月天| 国产专区欧美专区| 日韩精品在线一区二区| www.色综合.com| 国内成人自拍| 女同一区二区免费aⅴ| 免费观看精品视频| 亚洲va欧美va国产综合剧情| 精品福利一二区| 国产精品理论片| 激情一区二区| 美女色狠狠久久| 国产超碰精品在线观看 | 亚洲高清一区二| 国产人成一区二区三区影院| 久久中文亚洲字幕| 综合日韩av| 久久精品无码一区二区日韩av| 久久国产日韩欧美| 久久久精品视频成人| 欧美日韩国产精品专区| 国产呦萝稀缺另类资源| 欧美一区二区三区高清视频| 精品捆绑调教一区二区三区| 成年人视频在线网站| 亚洲精品国产精品久久| 97在线免费观看| 精品久久人人做人人爽| 中文字幕日韩精品一区| 久久先锋资源| 国产日韩视频在线| 日本综合字幕| 国产一二三区在线视频| 玩弄japan白嫩少妇hd| 国产亚洲福利社区| 5278欧美一区二区三区| 日韩精品中文字幕有码专区| 欧美日韩人人澡狠狠躁视频| 91亚洲国产成人精品一区二区三|