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

一個優秀的Vue團隊代碼規范是什么樣子的?

開發 前端
規范與每個團隊和個人都是息息相關的,因為其影響的不只是只是代碼的維護和理解成本,嚴重的時候是會影響成員開發的心情

[[333636]]

 規范與每個團隊和個人都是息息相關的,因為其影響的不只是只是代碼的維護和理解成本,嚴重的時候是會影響成員開發的心情

一個團隊的編碼規范、git規范等,并沒有絕對的最優解,心里要清楚明白沒有銀彈,規范是為了讓團隊統一,提高代碼閱讀性、降低代碼維護成本等,本文是記錄一些在項目code review中常見的規范,僅供參考

JS部分

和渲染無關的數據

vue中data的數據默認便會進行雙向數據綁定,若是將大量的和渲染無關的數據直接放置在data中,將會浪費雙向數據綁定時所消耗的性能,將這些和渲染無關的數據進行抽離并配合Object.freeze進行處理

table中columns數據可以單獨提取一個外部js文件作為配置文件,也可以在當前.vue文件中定義一個常量定義columns數據,因為無論如何都是固定且不會修改的數據,應該使用Object.freeze進行包裹,既可以提高性能還可以將固定的數據抽離,一些下拉框前端固定的數據也建議此操作 

  1. const columnList = Object.freeze([  
  2.   { title: '姓名', key: 'name', align: 'center' },  
  3.   { title: '性別', key: 'gender', align: 'center' }  
  4. ]) 

需要注意的是 Object.freeze() 凍結的是值,這時仍然可以將變量的引用替換掉,還有確保數據不會變才可以使用這個語法,如果要對數據進行修改和交互,就不適合使用凍結了。

Modal框的控制

一個頁面種通常會存在很多個不同功能的彈框,若是每一個彈框都設置一個對應的變量來控制其顯示,則會導致變量數量比較冗余和命名困難,可以使用一個變量來控制同一頁面中的所有Modal彈框的展示

比如某個頁面中存在三個Modal彈框 

  1. // bad  
  2. // 每一個數據控制對應的Modal展示與隱藏  
  3. new Vue({  
  4.     data() {  
  5.         return {  
  6.             modal1: false,  
  7.             modal2: false,  
  8.             modal3: false,  
  9.         }  
  10.     }  
  11. })  
  12. // good  
  13. // 當modalType為對應的值時 展示其對應的彈框  
  14. new Vue({  
  15.     data() {  
  16.         return {  
  17.             modalType: '' // modalType值為 modal1,modal2,modal3  
  18.         }  
  19.     }  
  20. }) 

debounce使用

例如遠程搜索時需要通過接口動態的獲取數據,若是每次用戶輸入都接口請求,是浪費帶寬和性能的

當一個按鈕多次點擊時會導致多次觸發事件,可以結合場景是否立即執行immediate 

  1. <Select :remote-method="remoteMethod">  
  2.     <Option v-for="item in temoteList" :value="item.value" :key="item.id">{{item.label}}</Option>  
  3. </Select>  
  1. import {debounce} from 'lodash'  
  2. methods:{  
  3.     remoteMethod:debounce(function (query) {  
  4.         // to do ...  
  5.        // this 的指向沒有問題  
  6.     }, 200),  

圖片

功能的開發過程中,圖片的處理往往是比較容易被忽略的環節,也會在一定程度影響開發的效率和頁面的性能

  •  圖片壓縮問題,除非特別要求圖片必須高質量的顯示,否則都應該進行對應的壓縮處理
  •  不同業務場景進行圖片格式的選型
    •   JPG 適用于呈現色彩豐富的圖片,JPG 圖片經常作為大的背景圖、輪播圖或 Banner 圖出現等
    •   Logo、顏色簡單且對比強烈的圖片或背景、需要透明度等
    •   將常用且變動頻率很低的小圖片進行合并成雪碧圖,對于變動比較頻繁和小于6KB的圖片進行base64處理
    •   根據項目圖片數量和項目的用戶機型分布等,考慮采取webp進行圖片的處理

路由組件傳參

在組件中使用 $route 會使之與其對應路由形成高度耦合,從而使組件只能在某些特定的 URL 上使用,限制了其靈活性。

使用 props 將組件和路由解耦:

取代與 $route 的耦合 

  1. const User = {  
  2.   template: '<div>User {{ $route.params.id }}</div>
  3.  
  4. const router = new VueRouter({  
  5.   routes: [  
  6.     { path: '/user/:id', component: User }  
  7.   ]  
  8. }) 

通過 props 解耦

這樣你便可以在任何地方使用該組件,使得該組件更易于重用和測試。 

  1. const User = {  
  2.   props: ['id'],  
  3.   template: '<div>User {{ id }}</div> 
  4.  
  5. const router = new VueRouter({  
  6.   routes: [  
  7.     { path: '/user/:id', component: User, props: true },  
  8.     // 對于包含命名視圖的路由,你必須分別為每個命名視圖添加 `props` 選項:  
  9.     {  
  10.       path: '/user/:id',  
  11.       components: { default: User, sidebar: Sidebar },  
  12.       props: { default: true, sidebar: false }  
  13.     }  
  14.   ]  
  15. }) 

參考:路由組件傳參

Vue生命周期

在父子組件中,掌握父子組件對應的生命周期鉤子加載順序可以讓開發者在更合適的時候做適合的事情父組件 

  1. <template>  
  2.   <div>  
  3.     <h3>home</h3>  
  4.     <list @hook:mounted="listMounted" />  
  5.   </div>  
  6. </template>  
  7. <script>  
  8. import List from './list'  
  9. export default {  
  10.   name: "home",  
  11.   components: {  
  12.     List  
  13.   },  
  14.   methods: {  
  15.     listMounted(){  
  16.       console.log('------------ listMounted');  
  17.     }  
  18.   },  
  19.   beforeCreate() {  
  20.     console.log("home beforeCreate"); 
  21.   },  
  22.   created() {  
  23.     console.log("home created");  
  24.   },  
  25.   beforeMount() {  
  26.     console.log("home beforeMount");  
  27.   },  
  28.   mounted() {  
  29.     console.log("home mounted");  
  30.   },  
  31.   beforeDestroy() {  
  32.     console.log("home beforeDestroy");  
  33.   },  
  34.   destroyed() {  
  35.     console.log("home destroyed");  
  36.   }  
  37.  
  38. </script> 

子組件 

  1. <template>  
  2.   <div>  
  3.     list  
  4.   </div>  
  5. </template>  
  6. <script>  
  7. export default {  
  8.   naem: "list",  
  9.   beforeCreate() {  
  10.     console.log("list beforeCreate");  
  11.   },  
  12.   created() {  
  13.     console.log("list created");  
  14.   },  
  15.   beforeMount() {  
  16.     console.log("list beforeMount");  
  17.   },  
  18.   mounted() {  
  19.     console.log("list mounted");  
  20.   },  
  21.   beforeDestroy() {  
  22.     console.log("list beforeDestroy");  
  23.   },  
  24.   destroyed() {  
  25.     console.log("list destroyed");  
  26.   }  
  27.  
  28. </script> 

加載時父子組件的加載順序 

  1. home beforeCreate --> home created --> home beforeMount --> list created --> list beforeMount --> list mounted 

銷毀時父子組件的銷毀順序 

  1. home beforeDestroy --> list beforeDestroy --> list destroyed --> home destroyed 

實際開發過程中會遇到當子組件某個生命周期完成之后通知父組件,然后在父組件做對應的處理

emit up 

  1. // 子組件在對應的鉤子中發布事件  
  2. created(){  
  3.   this.$emit('done')  
  4.  
  5. // 父組件訂閱其方發  
  6. <list @done="childDone"> 

hook

通過@hook監聽子組件的生命周期 

  1. <list @hook:mounted="listMounted" /> 

Select優化

下拉框遍歷時,需要注意options標簽保持同一行,若是存在換行,會導致選中時的值存在多余的空白 

  1. <!-- bad -->  
  2. <Select :remote-method="remoteMethod">  
  3.     <Option v-for="item in temoteList" :value="item.value" :key="item.id">  
  4.         {{item.label}}  
  5.     </Option>  
  6. </Select> 

需要將Options和下拉框的值保持在同一行 

  1. <!-- good -->  
  2. <Select :remote-method="remoteMethod">  
  3.     <Option v-for="item in temoteList" :value="item.value" :key="item.id">{{item.label}}</Option>  
  4. </Select> 

data數據層級

data數據具有數據層級結構,切勿過度扁平化或者嵌套層級過深,若是過度扁平化會導致數據命名空間沖突,參數傳遞和處理,若是層級嵌套過深也會導致vue數據劫持的時候遞歸層級過深,若是嵌套層級喪心病狂那種的,小心遞歸爆棧的問題。而且層級過深會導致數據操作和處理不便,獲取數據做容錯處理也比較繁瑣。一般層級保持2-3層最好。

若是只有一層數據,過于扁平 

  1.  
  2.     name: '',  
  3.     age: '',  
  4.     gender: ''  

導致處理不方便 

  1. // 作為接口參數傳遞  
  2. ajax({  
  3.  this.name, this.age, this.gender  
  4. })  
  5. // 接口獲取數據,批量處理  
  6. ajax().then(res => {  
  7.  const {name, age, gender} = res.data  
  8.     this.name = name  
  9.     this.age = age  
  10.     this.gender = gender  
  11. }) 

適當的層級結構不僅增加代碼的維護和閱讀性,還可以增加操作和處理的便捷性 

  1.  
  2.     person: { // 個人信息  
  3.         name: '',  
  4.         age: '',  
  5.         gender: ''  
  6.     }  

可以針對person進行操作 

  1. // 作為接口參數傳遞  
  2. ajax(this.person)  
  3. // 接口獲取數據,批量處理  
  4. ajax().then(res => {  
  5.  const {name, age, gender} = res.data  
  6.     this.$set(this, 'person', {name, age, gender})  
  7. }) 

策略模式

策略模式的使用,避免過多的if else判斷,也可以替代簡單邏輯的switch 

  1. const formatDemandItemType = (value) => {  
  2.     switch (value) {  
  3.         case 1:  
  4.             return '基礎'  
  5.         case 2:  
  6.             return '高級'  
  7.         case 3:  
  8.             return 'VIP'  
  9.     }  
  10.  
  11. // 策略模式  
  12. const formatDemandItemType2 = (value) => {  
  13.     const obj = {  
  14.         1: '基礎',  
  15.         2: '高級',  
  16.         3: 'VIP',  
  17.     }   
  18.     return obj[value]  

解構

解構賦值以及默認值,當解構的數量小于多少時適合直接解構并賦值默認值,數據是否進行相關的聚合處理 

  1. const {  
  2.   naem = '' 
  3.   age = 10 
  4.   gender = 'man'  
  5. } = res.data  
  6. // bad  
  7. this.name = name  
  8. this.age = age  
  9. this.gender = gender  
  10. // good  
  11. this.person = {  
  12.   naem,  
  13.   age,  
  14.   gender  

職責單一

任何時候盡量是的一個函數就做一件事情,而不是將各種邏輯全部耦合在一起,提高單個函數的復用性和可讀性

每個頁面都會在加載完成時進行數據的請求并展示到頁面 

  1. created() {  
  2.   this.init();  
  3. },  
  4. methods: {  
  5.   // 將全部的請求行為聚合在init函數中  
  6.   // 將每個請求單獨拆分  
  7.   init() {  
  8.     this.getList1()  
  9.     this.getList2()  
  10.   },  
  11.   getList1() {  
  12.     // to do ...  
  13.   },  
  14.   getList2() {  
  15.     // to do ...  
  16.   }  

v-bind

HTML部分

html書寫

編寫template模板時,屬性過多時,是否換行 

  1. <template>  
  2.   <!-- 不換行 -->  
  3.   <VueButton class="icon-button go-up" icon-left="keyboard_arrow_up" v-tooltip="$t('org.vue.components.folder-explorer.toolbar.tooltips.parent-folder')" @click="openParentFolder" /> 
  4.    <!-- 換行 -->  
  5.   <VueButton  
  6.     class="icon-button go-up"  
  7.     icon-left="keyboard_arrow_up"  
  8.     v-tooltip="$t('org.vue.components.folder-explorer.toolbar.tooltips.parent-folder')"  
  9.     @click="openParentFolder"  
  10.   />  
  11. </template> 

實體使用

html中展示一些如<,>,&等字符時,使用字符實體代替 

  1. <!-- bad -->  
  2. <div>  
  3.   > 1 & < 12  
  4. </div>  
  5. <!-- bad -->  
  6. <div>  
  7.   &gt; 1 &amp; &lt; 12  
  8. </div> 

CSS部分

樣式穿透

在開發中修改第三方組件樣式是很常見,但由于 scoped 屬性的樣式隔離,可能需要去除 scoped 或是另起一個 style 。這些做法都會帶來副作用(組件樣式污染、不夠優雅),樣式穿透在css預處理器中使用才生效。

  •  less使用  /deep/ 
  1. <style scoped lang="less">  
  2. .content /deep/ .el-button {  
  3.  height: 60px;  
  4.  
  5. </style> 
  •  scss使用 ::v-deep 
  1. <style scoped lang="scss">  
  2. .content ::v-deep .el-button {  
  3.   height: 60px;  
  4.  
  5. </style> 
  •  stylus使用 >>> 
  1. <style scoped ang="stylus">  
  2. 外層 >>> .custon-components{  
  3.   height: 60px; 
  4.   
  5. </style> 

空格

適當的空格可以提升代碼的閱讀體驗,顯得更為優雅和美觀

選擇器后、屬性值 

  1. .custom-style { // 選擇器和{ 之間空格  
  2.   margin: 0; // 屬性值前  
  3.   transform: scale(1.5, 2.2); // 逗號之后增加空格  

換行

和html類型,當某行的屬性很多,適當的換行可以提高閱讀和美觀 

  1. .custom-style{  
  2.   // 可以在一次聲明中定義一個或多個屬性  
  3.   background: background-clip  
  4.     background-color  
  5.     background-image  
  6.     background-origin  
  7.     background-position  
  8.     background-repeat  
  9.     background-size;  

當一個規則包含多個選擇器時,每個選擇器聲明必須獨占一行,過長導致需要橫向滾動閱讀剩余的內容,應該盡量使得閱讀順序縱向化 

  1. .custom .header .title,  
  2. .other .header .title { 
  3.   color: #f0f;  

嵌套層級

瀏覽器在解析css時,是按照從右到左遞歸匹配的,過深的層級嵌套不僅影響性能,而且還會導致樣式閱讀性和代碼維護性降低,一般層架控制在5層之內

雙引號

屬性選擇器中的值必須用雙引號包圍,不允許使用單引號,也不允許不使用引號,html的屬性值也是推薦使用雙引號,js中使用單引號 

  1. .custom-style{  
  2. font-family: "PingFang SC", "STHeitiSC-Light";  

屬性順序

同一 規則下的屬性在書寫時,應按功能進行分組。并以 Formatting Model(布局方式、位置) > Box Model(尺寸) > Typographic(文本相關) > Visual(視覺效果) 的順序書寫,以提高代碼的可讀性。

解釋:

  •  Formatting Model 相關屬性包括:position / top / right / bottom / left / float / display / overflow 等
  •  Box Model 相關屬性包括:border / margin / padding / width / height 等
  •  Typographic 相關屬性包括:font / line-height / text-align / word-wrap 等
  •  Visual 相關屬性包括:background / color / transition / list-style 等

另外,為增加可讀性,如果包含 content 屬性,應放在屬性的最前面。 

 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2020-07-15 07:57:17

代碼Vue開發

2020-11-04 11:17:20

好代碼程序員整潔

2022-10-10 08:47:49

ITCIO數據

2021-02-19 10:14:49

云計算公共云

2021-05-08 13:11:58

物聯網IOT物聯網技術

2024-03-04 09:19:33

CSSbackground前端

2021-05-27 09:30:51

Java流程控制

2021-11-29 07:42:44

CSS 技巧CSS 繪圖技巧

2014-04-08 09:56:30

銷售易CRM

2021-12-06 10:51:26

Windows 11微軟廣告

2015-08-21 17:06:41

2023-04-19 15:03:52

2021-09-30 19:12:46

通信網絡ADSL

2022-11-18 10:17:10

2019-09-03 14:57:33

智慧城市虛擬新加坡3D

2021-03-24 15:25:44

AI

2012-10-29 15:45:51

2018-01-16 15:02:20

存儲RAIDSAN

2021-10-04 15:46:31

網絡通信5G

2023-02-17 14:40:06

物聯網供應鏈
點贊
收藏

51CTO技術棧公眾號

1区2区3区在线观看| 欧美深性狂猛ⅹxxx深喉| 91福利在线视频| 日韩av不卡一区二区| 一区二区三区视频免费| 看欧美ab黄色大片视频免费| jizz在线免费观看| 蜜臀va亚洲va欧美va天堂 | 亚洲精品国偷自产在线99热| 成人黄色大片网站| 日本黄色片一级片| 精品一区二区无码| 久久密一区二区三区| 51精品久久久久久久蜜臀| 椎名由奈jux491在线播放| 99国产在线播放| 亚洲国产专区| 国产一区二区三区视频 | 欧美24videosex性欧美| 97久久精品人人澡人人爽| 国产成人精品久久久| 天堂av免费在线| 91福利在线视频| 国产成人av电影在线观看| 国产91在线播放九色快色| 免费无遮挡无码永久在线观看视频| 欧美人与拘性视交免费看| 日韩欧美国产系列| 日本xxxx黄色| 综合久久2023| 亚洲一区二区三区在线看| 四虎一区二区| 香港一级纯黄大片| 欧日韩在线视频| 亚洲图片在线| 北条麻妃99精品青青久久| 久久精品一区二区免费播放| 亚洲免费一区三区| 欧美欧美午夜aⅴ在线观看| 六月激情综合网| 秋霞在线午夜| 一区二区在线电影| 女同性恋一区二区| 麻豆视频在线| 国产精品色婷婷久久58| 日韩免费av一区二区三区| 亚洲 美腿 欧美 偷拍| 成人黄页毛片网站| 高清不卡一区二区三区| 午夜精品久久久久久久99| 精品一区二区三区在线观看| 国产精品久久久久久亚洲调教| 国产又黄又猛又粗又爽| 性xx色xx综合久久久xx| 国内久久久精品| 日韩av黄色片| 亚洲国产一区二区精品专区| 性欧美xxxx| 日本学生初尝黑人巨免费视频| 极品日韩av| 国内外成人免费激情在线视频网站| 国产亚洲色婷婷久久99精品| 国产精品av一区二区| 欧美精品激情视频| 国产午夜小视频| 国产一区二区高清| 国产成人jvid在线播放| 最近中文字幕在线视频| 飘雪影院手机免费高清版在线观看 | 亚洲天堂av中文字幕| 成人久久电影| 精品国产网站地址| 免费在线观看国产精品| 黑丝一区二区三区| 欧美一区第一页| 最近中文字幕免费观看| 精品一区二区免费视频| 亚洲一区二区在线播放| 日本美女一级视频| 久久天天做天天爱综合色| 视频一区亚洲 | 1区2区3区欧美| 欧美日韩午夜爽爽| 国产精品一区二区日韩| 在线精品视频小说1| 久久久久xxxx| 国产丝袜一区| 一本色道久久88综合亚洲精品ⅰ| 国产探花视频在线| 激情视频一区| 国产精品电影观看| 国产成人a人亚洲精品无码| eeuss影院一区二区三区| 日韩免费av一区二区三区| 爆操欧美美女| 欧美三级欧美成人高清www| 九一精品在线观看| 爱爱精品视频| 一区二区三区四区在线观看视频| 三级影片在线看| 久久成人精品| 亚洲va欧美va国产综合剧情| 三级无遮挡在线观看| 国产精品久久网站| 欧美牲交a欧美牲交| 在线视频成人| 亚洲美女av黄| 久久午夜无码鲁丝片| 日日夜夜免费精品视频| 国产精品日韩二区| 日本福利在线| 欧美午夜片在线免费观看| 激情图片中文字幕| 精品国产一区二区三区四区 | 亚洲精品国产精品国产自| 99在线视频免费| 99在线观看免费视频精品观看| 国产精品自拍网| 日韩私人影院| 亚洲午夜视频在线| 一起操在线视频| 欧美人妖视频| 久久99久国产精品黄毛片入口 | 91精品国产麻豆| 国产手机在线观看| 1024精品一区二区三区| 成人激情视频在线| aⅴ在线视频男人的天堂| 午夜国产精品影院在线观看| 欧美一级特黄aaa| 精品国产午夜| 国产精品1234| 深夜福利在线看| 亚洲一区二区四区蜜桃| 古装做爰无遮挡三级聊斋艳谭| 激情婷婷综合| 琪琪第一精品导航| 午夜福利视频一区二区| 亚洲午夜三级在线| 国产女主播在线播放| 欧美日韩亚洲一区| 1卡2卡3卡精品视频| 欧美一区二区三区| 欧美三级一区二区| 国产又粗又长免费视频| 久久亚洲二区| 欧美精品一区在线发布| 欧美激情20| 日韩电影中文字幕av| 久久国产精品系列| 久久综合久久综合久久| 国产乱子伦农村叉叉叉| 香蕉久久精品| 国产精品草莓在线免费观看| 国产三级电影在线| 欧美主播一区二区三区美女| 亚洲区自拍偷拍| 日韩综合一区二区| 无遮挡亚洲一区| 亚洲欧洲二区| 欧美国产极速在线| 免费观看黄一级视频| 午夜久久久久久久久| 亚洲第一黄色网址| 日韩国产精品91| 亚洲国产一区二区三区在线播 | 91精品久久久久久粉嫩| 欧美一级视频精品观看| 免费一级片视频| 99久久99久久精品国产片果冻| 黄色片视频在线免费观看| 国产va免费精品观看精品视频| 日本在线观看天堂男亚洲| www.久久热.com| 91精品欧美一区二区三区综合在| 久久久久久福利| 久久久久久久久伊人| 狠狠躁狠狠躁视频专区| 综合久久精品| 精品国产乱码久久久久久丨区2区| 日韩深夜视频| 日韩亚洲欧美中文在线| 成人黄色免费视频| 日本精品一区二区三区高清| 蜜桃视频最新网址| 成人精品在线视频观看| 欧美国产日韩在线播放| 久久久久久美女精品| 国产欧美日韩在线播放| 户外露出一区二区三区| 久久97久久97精品免视看| 久久av少妇| 91精品国产一区二区三区香蕉 | 黄色一级大片在线免费看产| 亚洲国产91色在线| 91激情在线观看| 岛国av一区二区| 黄色片子在线观看| 26uuu亚洲| 亚洲性图第一页| 老司机久久99久久精品播放免费| 欧美日韩午夜爽爽| 欧美日韩性在线观看| 99国产在线观看| 成人精品电影在线| 高清一区二区三区日本久| 1024免费在线视频| 国产手机视频精品| 亚洲av色香蕉一区二区三区| 在线视频国内一区二区| 国产极品美女高潮无套嗷嗷叫酒店 | 成人毛片网站| 欧美成人毛片| 国产精品va在线播放| 免费污视频在线观看| 日韩中文字幕不卡视频| 日本福利片高清在线观看| 精品999在线播放| 国产绿帽刺激高潮对白| 欧美亚洲综合网| 特级毛片www| 五月综合激情日本mⅴ| 日本中文字幕免费在线观看| 欧美激情一区二区三区四区| 99久久国产精| 国产99久久久国产精品潘金| 美女在线视频一区二区| 可以看av的网站久久看| 午夜精品久久久久久久无码| 欧美日韩网站| 欧美 日韩 国产精品| 香蕉国产精品| 中文字幕中文字幕在线中心一区| 欧洲乱码伦视频免费| 久久波多野结衣| 黄色美女久久久| 国产欧美日本在线| 97色成人综合网站| 国产a一区二区| 福利欧美精品在线| 99在线视频播放| 1313精品午夜理伦电影| 99国产精品久久久久老师| aaa国产精品视频| 成人欧美一区二区| 精品久久97| 久久精品ww人人做人人爽| 欧美大胆a级| 欧美大陆一区二区| 国产一区二区三区四区二区| 天堂社区 天堂综合网 天堂资源最新版| 竹菊久久久久久久| 日韩啊v在线| 成人影院在线| 中文字幕久久综合| 最新国产精品久久久| 超碰超碰超碰超碰超碰| 伊人精品视频| 国产午夜伦鲁鲁| 噜噜噜91成人网| 91极品尤物在线播放国产| 毛片av一区二区| 中文写幕一区二区三区免费观成熟| 国产高清精品在线| 中文字幕无码人妻少妇免费| 久久影院视频免费| 一级片黄色录像| 亚洲综合色视频| 亚洲免费激情视频| 在线影视一区二区三区| 91在线观看喷潮| 亚洲成色999久久网站| 你懂的在线播放| 日韩在线视频观看正片免费网站| av网址在线免费观看| 欧美精品国产精品日韩精品| www.日韩| 91麻豆国产语对白在线观看| 91精品国产乱码久久久竹菊| 久久久久一区二区三区| 日韩精品dvd| 很污的网站在线观看| 久久综合网络一区二区| 激情久久综合网| 91麻豆精品在线观看| 青青青视频在线播放| 亚洲一区二区三区不卡国产欧美| 国产精品视频免费播放| 欧美精品日韩精品| 天天摸天天干天天操| 中文字幕免费精品一区| 牛牛电影国产一区二区| 日韩av色综合| 97品白浆高清久久久久久| 视频三区二区一区| 99综合在线| 日日干日日操日日射| 91丨porny丨户外露出| 天海翼在线视频| 色综合天天综合网天天狠天天| 精品国产av鲁一鲁一区| 亚洲视频专区在线| 国产精品蜜臀| 成人高h视频在线| 视频一区欧美| www.好吊操| 精品亚洲国产成人av制服丝袜| 日本黄色片在线播放| 亚洲精品免费视频| 中文av免费观看| 日韩av一卡二卡| 日本高清在线观看| 国产精品一区二区三区久久久| 琪琪久久久久日韩精品| 久久久久久久免费视频| 免费在线观看视频一区| 久久久亚洲av波多野结衣| 亚洲卡通动漫在线| 中文字幕人妻一区二区三区视频| 亚洲精品一区二区三区精华液| 麻豆传媒视频在线观看| 国产精品都在这里| 免费一区二区| 一本大道熟女人妻中文字幕在线 | 92国产精品久久久久首页| 天堂日韩电影| 国产极品在线视频| 成人91在线观看| 久久精品国产亚洲AV无码麻豆 | 欧美日韩免费做爰大片| 国外色69视频在线观看| 中文字幕一区日韩精品| 欧美日韩一区二区三区电影| 麻豆精品一区二区av白丝在线| av中文字幕免费观看| 色婷婷久久99综合精品jk白丝| 五月天婷婷激情网| 国产91精品不卡视频| 日韩精品a在线观看91| 男女视频网站在线观看| 成人高清伦理免费影院在线观看| 久久久久久久久久久久久久久久久| 91精品婷婷国产综合久久| 黄av在线免费观看| 91社区国产高清| 中文字幕日韩欧美精品高清在线| 中文字幕国产高清| 亚洲老妇xxxxxx| 高h调教冰块play男男双性文| 午夜精品久久久久久久99热| 欧美亚视频在线中文字幕免费| 日本福利视频在线| 久久综合九色欧美综合狠狠| 日韩欧美成人一区二区三区| 精品无人区乱码1区2区3区在线| 在线观看爽视频| 欧美另类视频在线| 免费视频最近日韩| 日韩精品123区| 精品久久久久久久人人人人传媒| 成人女同在线观看| 久久伊人资源站| 美日韩一级片在线观看| 99久久99久久精品国产| 欧美大片在线观看一区二区| bl在线肉h视频大尺度| 麻豆91蜜桃| 久久99热99| 久久久久久久九九九九| 精品视频www| 国产91精品在线| 日韩精品免费一区| 97久久超碰精品国产| 日本熟妇一区二区三区| 久久久久999| 精品中国亚洲| 欧美午夜aaaaaa免费视频| 亚洲欧美乱综合| 天天躁日日躁狠狠躁伊人| 国产精品美女主播| 欧美三区在线| 最近中文字幕在线mv视频在线| 欧美二区乱c少妇| 蜜臀久久精品| 9999在线观看| 99久久婷婷国产综合精品电影 | 亚洲美女av在线| 精品国产第一国产综合精品| 91专区在线观看| 亚洲人成电影网站色mp4| 日韩有码第一页| 国产精品美女av| 在线成人国产| 懂色av粉嫩av蜜臀av一区二区三区| 亚洲精品在线三区| 91综合国产| 国产在线精品91| 亚洲精品国产a| av在线电影网| 国产综合动作在线观看|