国产成人综合洲欧美在线_精品一精品国产一级毛片_天天噜噜日日噜噜久久综合网_一级毛片成人免费看免费不卡

世界快資訊:Vue入門淺析

2023-05-15 17:33:23 來源: 博客園

title: vue入門淺析author: Sun-Winddate: May 14,2022

寫這篇博文的目的在于為初學vue的同學對vue有一些更進一步的了解讀這篇博文前,您應該至少安裝了vue環境,能在本地運行一個簡單的demo本文將淺析vue項目工程的結構,以及用npm運行項目的過程中發生的一些事件注明:該文本應在2022.5.14發表,由于博主有其他安排耽擱后面忘了,現在補上。

項目的文件結構主文件結構

一般的vue工程項目核心部分都在src里存放 vue 項目的源代碼。其文件夾下的各個文件(文件夾)分別為:


(資料圖片)

assets?:資源文件,比如存放 css,圖片等資源component?:組件文件夾,用來存放 vue 的公共組件(注冊于全局,在整個項目中通過關鍵詞便可直接輸出)。router?:用來存放 ?index.js?,這個 js 用來配置路由tool?:用來存放工具類 js,將 js 代碼封裝好放入這個文件夾可以全局調用(比如常見的? api.js?,?http.js? 是對 http 方法和 api 方法的封裝)views?:用來放主體頁面,雖然和組件文件夾都是 vue 文件,但 views 下的 vue 文件是可以用來充當路由 view 的。main.js?:是項目的入口文件,作用是初始化 vue 實例,并引入所需要的插件。app.vue?:是項目的主組件,所有頁面都是在該組件下進行切換的.?其他文件結構public:用于存放靜態文件public/index.html:是一個模板文件,作用是生成項目的入口文件,webpack打包的js,css也會自動注入到該頁面中。我們瀏覽器訪問項目的時候就會默認打開生成好的index.htmlpackage.json: 模塊基本信息項目開發所需要模塊,版本,項目名稱vue.config.js:包含vue項目的其他配置,包括端口等信息node_modules:項目的依賴模塊dist:打包文件npm run serve/dev淺析

我們在本地運行vue項目,常見的指令就是npm run serve/dev;與其說是指令,不如說是腳本我們通常會在package.json中配置 script 字段作為 NPM 的執行腳本。以個人開發項目為例,Vue.js 源碼構建的腳本如下:

"scripts": {    "serve": "vue-cli-service serve",    "build": "vue-cli-service build",    "lint": "vue-cli-service lint",    "stylelint": "stylelint src/css/*.* --fix",    "htmlhint": "htmlhint **.html",    "eslint": "eslint src/**/*.js src/**/*.vue",    "eslint-fix-js": "eslint src/**/*.js --fix",    "eslint-fix-vue": "eslint src/**/*.vue --fix"  },

所以當我們在終端運行npm run serve時,實際上運行的是vue-cli-service serve通過這個腳本去構建整個vue項目

構建的過程中發生了什么public/index.html

之前我們提到過,這個文件作為項目的入口文件,首先加載這個html文件下面這些代碼是個例子

        

我們注意到一個特別的div塊,它的id為app

src/main.js

這里的app其實與src/main.js文件有關

import Vue from "vue";new Vue({  el: "#app",  render: h => h(app)});

我們都知道,new 關鍵字在 Javascript 語言中代表實例化是一個對象,而 Vue 實際上是一個類,類在 Javascript 中是用 Function 來實現的,在vue.js源碼中是這樣定義的

function Vue (options) {  if (process.env.NODE_ENV !== "production" &&    !(this instanceof Vue)  ) {    warn("Vue is a constructor and should be called with the `new` keyword")  }  this._init(options)}

可以看到vue只能通過關鍵字初始化,this._init函數這里就不再具體介紹Vue 初始化主要就干了幾件事情,合并配置,初始化生命周期,初始化事件中心,初始化渲染,初始化 data、props、computed、watcher 等等。

在初始化的最后,檢測到如果有 el 屬性,則調用 vm.$mount 方法掛載 vm,掛載的目標就是把模板渲染成最終的DOM在compiler版本的$mount實現中,它對 el 做了限制,Vue 不能掛載在 body、html這樣的根節點上。接下來的是很關鍵的邏輯 —— 如果沒有定義 render 方法,則會把 el 或者 template字符串轉換成 render 方法。

這里我們要牢記,在 Vue 2.0 版本中,所有 Vue 的組件的渲染最終都需要 render方法,無論我們是用單文件 .vue 方式開發組件,還是寫了 el 或者 template 屬性,最終都會轉換成 render 方法,那么這個過程是 Vue 的一個在線編譯的過程。

最后,調用原先原型上的 $mount 方法掛載。

結合之前public/index.html中的例子

實際上是編寫了如下render函數

render: function (createElement) {  return createElement("div", {     attrs: {        id: "app"      },  })}

vm._render 最終是通過執行 createElement 方法并返回的是 vnode,它是一個虛擬 Node

Virtual DOM介紹

瀏覽器真正的DOM通常是非常龐大的,因為瀏覽器產生DOM的標準本身就比較復雜,當我們頻繁地進行DOM更新,就會產生一系列的性能問題而 Virtual DOM 就是用一個原生的 JS 對象去描述一個 DOM 節點,所以它比創建一個 DOM 的代價要小很多。在 Vue.js 中,Virtual DOM 是用 VNode 這么一個 Class 去描述在 Vue.js 中,VNode 的 create 是通過之前提到的 createElement 方法創建的。

生命周期

這也是一張比較經典的圖了在開發過程中,我們會頻繁地跟vue的生命周期打交道

beforeCreate 和 created 函數都是在實例化 Vue 的階段在vue.js源碼中 beforeCreate 和 created 的鉤子調用是在 initState 的前后,initState 的作用是初始化 props、data、methods、watch、computed 等屬性

在執行 vm._render() 函數渲染 VNode 之前,執行了 beforeMount 鉤子函數,在執行完 vm._update() 把 VNode patch 到真實 DOM 后,執行 mouted 鉤子。beforeUpdate 和 updated 的鉤子函數執行時機都應該是在數據更新的時候,比如雙向綁定等等

export function mountComponent (  vm: Component,  el: ?Element,  hydrating?: boolean): Component {  // ...  // we set this to vm._watcher inside the watcher"s constructor  // since the watcher"s initial patch may call $forceUpdate (e.g. inside child  // component"s mounted hook), which relies on vm._watcher being already defined  new Watcher(vm, updateComponent, noop, {    before () {      if (vm._isMounted) {        callHook(vm, "beforeUpdate")      }    }  }, true /* isRenderWatcher */)  // ...}

可以看到這里有一個vm._isMounted的判斷,也就是說組件在mounted后才會去執行這個鉤子函數同時這里實例化了一個watcher去監聽vm上的數據變化重新渲染

beforeDestroy 和 destroyed 鉤子函數的執行時機在組件銷毀的階段注意mounted和destroyed的執行過程都是先子后父從下圖可以看到初始化vue到最終渲染的整個過程

注冊組件

在開發一個組件的過程中往往會用到其他的組件組件注冊的語法如下

Vue.component("my-component", {  // 選項})

import HelloWorld from "./components/HelloWorld"export default {  components: {    HelloWorld  }}

注冊組件實際上是一個合并的過程,合并option再創建vnode。

由于博主在這一部分學識尚淺,暫不做過多的描述

下載插件

開發的過程中很可能需要一些其他的插件如Element等使用一般來說通過Vue.use()來下載插件,并且會阻止多次注冊相同的插件

export function initUse (Vue: GlobalAPI) { Vue.use = function (plugin: Function | Object) {  const installedPlugins = (this._installedPlugins || (this._installedPlugins = []))  if (installedPlugins.indexOf(plugin) > -1) {   return this  }  const args = toArray(arguments, 1)  args.unshift(this)  if (typeof plugin.install === "function") {   plugin.install.apply(plugin, args)  } else if (typeof plugin === "function") {   plugin.apply(null, args)  }  installedPlugins.push(plugin)  return this }}

這是use方法的源碼,可以看到其參數只能是object或者function,然后判斷其是否被注冊過然后再調用該插件的install方法

可以看到 Vue 提供的插件注冊機制很簡單,每個插件都需要實現一個靜態的 install 方法,當我們執行 Vue.use 注冊插件的時候,就會執行這個 install 方法,并且在這個 install 方法的第一個參數我們可以拿到 Vue 對象,這樣的好處就是作為插件的編寫方不需要再額外去import Vue 了。

路由

路由的主要作用是根據不同的路徑映射到不同的視圖,一般我們用官方插件vue-router來解決路由的問題

Object.defineProperty(Vue.prototype, "$router", {    get () { return this._routerRoot._router }  })  Object.defineProperty(Vue.prototype, "$route", {    get () { return this._routerRoot._route }  })

在vue-router的類定義中有在vue原型上定義的 $router 和 $route 兩個屬性的get方法,這也是為什么可以在組件實例上訪問 this.$router和this.$route

在new一個vueRouter后會返回它的實例,在beforecreate()中有這樣一段代碼

beforeCreate() {  if (isDef(this.$options.router)) {    // ...    this._router = this.$options.router    this._router.init(this)    // ...  }}  

所以在執行該鉤子函數時,如果有傳入router實例,則會執行router.init方法匹配是利用matcher匹配,并且會生成用戶的路由表(具體細節暫時不表)當我們點擊router-link的時候,會通過一系列函數找到完整的url,執行pushState方法

export function pushState (url?: string, replace?: boolean) {  saveScrollPosition()  const history = window.history  try {    if (replace) {      history.replaceState({ key: _key }, "", url)    } else {      _key = genKey()      history.pushState({ key: _key }, "", url)    }  } catch (e) {    window.location[replace ? "replace" : "assign"](url)  }}

該方法會更新瀏覽器的url地址,并且把當前url壓入歷史棧中有一個專門的監聽器會監聽歷史棧的變化情況

setupListeners () {  const router = this.router  const expectScroll = router.options.scrollBehavior  const supportsScroll = supportsPushState && expectScroll  if (supportsScroll) {    setupScroll()  }  window.addEventListener(supportsPushState ? "popstate" : "hashchange", () => {    const current = this.current    if (!ensureSlash()) {      return    }    this.transitionTo(getHash(), route => {      if (supportsScroll) {        handleScroll(this.router, route, current, true)      }      if (!supportsPushState) {        replaceHash(route.fullPath)      }    })  })}

當點擊瀏覽器的返回按鈕時,會觸發popstate事件,通過同樣的方法拿到當前要跳轉的url并進行路徑轉換

在router-view中

data.routerView = true// ...while (parent && parent._routerRoot !== parent) {  if (parent.$vnode && parent.$vnode.data.routerView) {    depth++  }  if (parent._inactive) {    inactive = true  }  parent = parent.$parent}const matched = route.matched[depth]// ...const component = cache[name] = matched.components[name]

這個循環就是從當前的的父節點向上找,一直找到根節點(vue實例),遍歷完成后,就根據當前遍歷的深度和路徑找到對應的組件并進行渲染在router-view的最后有根據 component 渲染出對應的組件 vonde:

return h(component, data, children)
hash模式:單頁應用標配,hash發生變化的url都會被瀏覽器記錄下來history模式:可以進行切換和修改(歷史狀態),使得路由配置更自由其他vuex

Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。該狀態管理模式包含以下幾個部分:

state:驅動數據的應用源view:以聲明方法將state映射到視圖actions:響應在view上用戶的輸入導致的狀態變化以下是一個簡單的數據流模式

需要注意以下兩點

Vuex 的狀態存儲是響應式的。當 Vue 組件從 store 中讀取狀態的時候,若 store 中的狀態發生變化,那么相應的組件也會相應地得到高效更新。你不能直接改變 store 中的狀態。改變 store 中的狀態的唯一途徑就是顯式地提交 (commit) mutation。這樣使得我們可以方便地跟蹤每一個狀態的變化,從而讓我們能夠實現一些工具幫助我們更好地了解我們的應用。

參考書籍《vue.js技術揭秘》

關鍵詞:

精選 導讀

世界快資訊:Vue入門淺析

title:vue入門淺析author:Sun-Winddate:May14,2022寫這篇博文的目的在于為初學vue的同學對vue有一些更進一

發布時間: 2023-05-15 17:33
要聞   2023-05-15

熱點!從“靠鋼吃飯”到“棄鋼突圍”:一家鋼企的數字變身

新華社天津5月12日電(記者郭方達)尚未進入廠區,灰色外墻上一幅巨大的鯤形彩繪率先映入眼中。多彩墻體結

發布時間: 2023-05-15 16:54
要聞   2023-05-15

左洛復鹽酸舍曲林說明書_舍曲林說明書-天天通訊

1、有證據表明,舍曲林在過量服用時仍有很大的安全范圍。2、曾有舍曲林單獨過量服用高達13 5g的報道。3、曾

發布時間: 2023-05-15 16:21
要聞   2023-05-15

“互換通”啟動 金融開放穩步推進

“互換通”啟動金融開放穩步推進

發布時間: 2023-05-15 16:06
要聞   2023-05-15

煙臺市萊山區第八小學開展地震應急疏散演練活動

為進一步增強師生安全意識,提高全校師生緊急避險、自救自護和應變的能力,掌握地震來臨時最有效的逃生方法

發布時間: 2023-05-15 15:14
要聞   2023-05-15

熱點 推薦

世界快資訊:Vue入門淺析

title:vue入門淺析author:Sun-Winddate:May14,2022寫這篇博文的目的在于為初學vue的同學對vue有一些更進一

發布時間: 2023-05-15 17:33
要聞   2023-05-15

萬里印刷(08385.HK)一季度凈虧損1069.9萬港元

格隆匯5月15日丨萬里印刷(08385 HK)公布,截至2023年3月31日止第一季度,公司收益為4221 7萬港元,同比減少

發布時間: 2023-05-15 17:31
IT   2023-05-15

天津創業型人才落戶準遷證獲取方式

??天津創業型人才落戶準遷證獲取方式獲取方式一覽業務辦理進度查詢提交成功后個人中心的“業務網辦進度”

發布時間: 2023-05-15 17:09
國內   2023-05-15

世界快看:蘭州市博物館參觀攻略(門票預約+開放時間+交通指

蘭州市博物館參觀攻略博物館地處市中心繁華地段的慶陽路240號,依明代白衣寺舊址而建。現有包括中軸線上的

發布時間: 2023-05-15 17:03
科技   2023-05-15

東風本田征戰TCR China 揭幕戰斬獲亞軍上演賽道“名場面”

賽道競逐,風云再起。5月12日-14日,2023年CTCC中國汽車場地職業聯賽超級杯·TCR中國系列賽震撼來襲,首站

發布時間: 2023-05-15 17:02
汽車   2023-05-15

熱點!從“靠鋼吃飯”到“棄鋼突圍”:一家鋼企的數字變身

新華社天津5月12日電(記者郭方達)尚未進入廠區,灰色外墻上一幅巨大的鯤形彩繪率先映入眼中。多彩墻體結

發布時間: 2023-05-15 16:54
要聞   2023-05-15

感恩母親 體驗“孕媽媽”艱辛-新動態

母愛,是每個人成長道路上不可或缺的親情。她最關心我們,對我們無私奉獻,不求回報。5月14日,在母親節這

發布時間: 2023-05-15 17:05
IT   2023-05-15

聯想ThinkPad春季新品發布會預熱,30周年限定禮盒“驚喜出艙”

IT之家5月15日消息,聯想ThinkPad官博發布預熱,新品發布會即將在5月18日舉行。官博發布的視頻介紹的是Thin

發布時間: 2023-05-15 16:46
國內   2023-05-15

敏華控股(01999)將于7月20日派發末期股息每股10港仙_全球熱頭條

敏華控股(01999)公布,公司將于2023年7月20日派發末期股息每股10港仙。

發布時間: 2023-05-15 16:59
科技   2023-05-15

左洛復鹽酸舍曲林說明書_舍曲林說明書-天天通訊

1、有證據表明,舍曲林在過量服用時仍有很大的安全范圍。2、曾有舍曲林單獨過量服用高達13 5g的報道。3、曾

發布時間: 2023-05-15 16:21
要聞   2023-05-15

四川調研督導道路交通安全和運輸執法領域突出問題專項整治工

四川新聞網-首屏新聞成都5月15日訊(記者胡旭陽)為扎實推進道路交通安全和運輸執法領域突出問題專項整治工

發布時間: 2023-05-15 16:21
IT   2023-05-15

石墨文檔回應崩了:故障正在全力排查搶修中

針對服務器宕機一事,在線協同辦公平臺石墨文檔回應稱,因技術原因,目前部分石墨文檔暫時無法編輯,故障正

發布時間: 2023-05-15 16:21
國內   2023-05-15

拼多多貨在路上可以申請退款嗎?拼多多退款多久可以到賬?

拼多多是大家經常使用并且非常熟悉的一家電商平臺,用戶可以在上面買到各種商品,并享受不同類型的優惠,其中拼團優惠是拼多多比較突出的一

發布時間: 2023-05-15 16:28
推薦   2023-05-15

V8混動 蘭博基尼Urus PHEV諜照曝光

[本站海外諜照]日前,外媒在蘭博基尼工廠附近拍攝到了UrusPHEV測試車。按照計劃這款車將會在2024年正式發布

發布時間: 2023-05-15 16:09
汽車   2023-05-15

年產250臺 AC Cobra GT Roadster首發 天天速讀

[本站新車首發]曾經為世界車迷貢獻了傳世經典跑車ACCobra的英國AC汽車公司近日正式推出該車的復刻版本――A

發布時間: 2023-05-15 16:23
汽車   2023-05-15

環球即時看!阿斯頓·馬丁新DB系列將于5月24日首發

[本站資訊]近日,我們從阿斯頓?馬丁官方獲取了三張全新一代DBGT的預告圖,新車將于5月24日首發。阿斯頓?

發布時間: 2023-05-15 16:02
汽車   2023-05-15

拼多多退店要等30天嗎? 退店的條件是什么?

拼多多平臺的店鋪數量越來越多了, 競爭非常激烈,在這種情況下,很多人選擇將自己的店鋪轉讓出去或者是關閉掉,那么,拼多多退店要等30天

發布時間: 2023-05-15 16:25
推薦   2023-05-15

當前熱點-畫蛋糕圖片大全大圖涂色_畫蛋糕圖片

你們好,最近小活發現有諸多的小伙伴們對于畫蛋糕圖片大全大圖涂色,畫蛋糕圖片這個問題都頗為感興趣的,今

發布時間: 2023-05-15 16:00
科技   2023-05-15

七天無理由退貨有運費險嗎?七天之內退貨運費誰出?

線上購物是現在比較熱門的一種購物方式,一方面線上購物發貨比較快,甚至第二天就能到貨,另一方面線上購物商品價格會更加優惠、便宜。此外

發布時間: 2023-05-15 16:21
社會   2023-05-15

買車可以用支付寶支付嗎?全款買車都是怎么支付的?

買車的時候,選擇好汽車等待商家提交訂單即可支付了, 買車可以用銀行卡也可以用現金,那么,買車可以用支付寶支付嗎?全款買車都是怎么支

發布時間: 2023-05-15 16:18
社會   2023-05-15
国产成人综合洲欧美在线_精品一精品国产一级毛片_天天噜噜日日噜噜久久综合网_一级毛片成人免费看免费不卡

        亚洲欧美另类久久久精品2019| 日韩一区二区三区在线观看| 精品国产免费人成在线观看| 亚洲欧美另类小说视频| 韩国视频一区二区| 国产午夜亚洲精品理论片色戒 | 亚洲欧美日韩小说| 精品中文av资源站在线观看| 国产午夜亚洲精品不卡| 欧洲一区在线观看| 国产欧美精品一区二区三区四区| 奇米888四色在线精品| 久久精品欧美日韩| 欧美亚洲动漫另类| 中文字幕一区二区在线播放| 国内外成人在线视频| 中文字幕一区免费在线观看| 欧美高清激情brazzers| 一区2区3区在线看| www.一区二区| 色综合久久久久久久久久久| 欧美国产一区在线| 国产一区欧美日韩| 亚洲摸摸操操av| 精品国产成人系列| 秋霞午夜鲁丝一区二区老狼| 中文字幕av不卡| 日韩一级黄色大片| 日韩国产在线一| 国产精品色哟哟| 欧美一区二区三区公司| 午夜精品一区二区三区三上悠亚| 久久在线免费观看| 欧美区一区二区三区| 艳妇臀荡乳欲伦亚洲一区| 99精品久久99久久久久| 欧洲一区二区三区在线| 一区二区三区在线视频免费观看| 99国产麻豆精品| 欧美天堂一区二区三区| 亚洲在线视频网站| 国产女人18水真多18精品一级做| 欧美剧情片在线观看| 亚洲成人av在线电影| 亚洲国产成人一区二区三区| 日韩三级高清在线| 免费人成精品欧美精品| 有码一区二区三区| 欧美激情一区二区三区在线| 成人综合婷婷国产精品久久免费| 色综合一区二区三区| 亚洲激情自拍偷拍| 中文字幕不卡的av| 久久毛片高清国产| 高清在线观看日韩| 欧美三级欧美一级| 三级影片在线观看欧美日韩一区二区| 国产精品福利一区二区| 久久久.com| 成人激情黄色小说| 欧美日韩高清一区二区| 日本中文在线一区| 一区二区三区高清| 亚洲精品免费在线播放| 欧美激情一区二区三区全黄| 欧美精品一区二| 国产suv精品一区二区6| 欧美吻胸吃奶大尺度电影 | 欧美激情一区在线观看| www.性欧美| 欧美一区二区视频网站| 激情综合五月天| 午夜视频在线观看一区| 午夜视频一区二区| 一区二区三区四区激情| 亚洲精品久久久蜜桃| 国产精品卡一卡二| 国产精品久久久久久久午夜片| 91丨porny丨中文| 精品国产免费视频| www.亚洲色图| 亚洲精品一区二区在线观看| 成人黄色电影在线| 欧美一级xxx| 高清在线不卡av| 日韩一区二区视频在线观看| 国产成人av电影| 日韩午夜中文字幕| 成人性视频网站| 欧美大胆人体bbbb| 白白色 亚洲乱淫| 久久理论电影网| 久久综合99re88久久爱| 国产日韩综合av| 国产欧美日韩卡一| 中文字幕在线免费不卡| 一色桃子久久精品亚洲| 亚洲女人****多毛耸耸8| 亚洲视频一区在线观看| 亚洲综合激情小说| 亚洲一区视频在线| 亚洲mv在线观看| 色域天天综合网| 麻豆91免费观看| 欧美亚洲综合另类| 国产精品中文字幕欧美| 欧美精品三级日韩久久| 国产九色精品成人porny| 欧美一级片免费看| 99国产精品久| 国产精品毛片高清在线完整版| 国产精品久久久久天堂| 亚洲自拍偷拍九九九| 午夜久久久影院| 极品少妇xxxx精品少妇| 日韩欧美一级二级三级久久久| 91在线视频网址| 国产精品免费人成网站| 亚洲人成亚洲人成在线观看图片| 亚洲成人黄色小说| 欧美综合欧美视频| 岛国一区二区在线观看| 国产欧美精品一区aⅴ影院| 亚洲欧洲性图库| 午夜精品久久久久久久久久| 欧美视频日韩视频| 成人av手机在线观看| 国产精品伦理在线| 亚洲国产欧美一区二区三区丁香婷| 美美哒免费高清在线观看视频一区二区 | wwwwxxxxx欧美| 国产精品大尺度| 亚洲r级在线视频| 韩国成人福利片在线播放| 精品国产伦一区二区三区免费| 亚洲国产高清在线| 首页亚洲欧美制服丝腿| 欧美精品自拍偷拍动漫精品| 91亚洲午夜精品久久久久久| ●精品国产综合乱码久久久久| 亚洲成人免费视| 国产盗摄一区二区| 国产精品丝袜91| 亚洲成va人在线观看| 国产精品一区二区免费不卡| 国产欧美一二三区| 亚洲大片在线观看| 成人激情免费电影网址| 136国产福利精品导航| 色婷婷精品大在线视频| 成人不卡免费av| 亚洲美女淫视频| 欧美日韩国产精品自在自线| 久久一日本道色综合| 亚洲成人一区在线| 欧美一级高清片在线观看| 中文字幕人成不卡一区| 久久精品二区亚洲w码| 久久久久久久免费视频了| 亚洲精品高清在线| 风间由美一区二区av101| 国产精品久久久久影院色老大| 天天综合色天天| 91免费在线看| 日韩va亚洲va欧美va久久| 精品国产乱码久久久久久1区2区| 亚洲精品国产a| 成人免费视频网站在线观看| 亚洲色图欧美激情| 在线播放中文字幕一区| 《视频一区视频二区| 国产精品综合av一区二区国产馆| 中文字幕一区二区三区四区不卡| 欧美主播一区二区三区| 久久精品日产第一区二区三区高清版 | 麻豆国产精品官网| 国产精品妹子av| 欧美在线观看视频一区二区| 久久精品亚洲精品国产欧美kt∨| 免费三级欧美电影| 国产精品少妇自拍| 欧美精品亚洲一区二区在线播放| 中文字幕视频一区| 国产91综合网| 亚洲成年人网站在线观看| 26uuu精品一区二区在线观看| 亚洲一区二区欧美| 91丨九色丨国产丨porny| 麻豆一区二区99久久久久| 国产精品美女久久久久久久久| 欧美三级欧美一级| 最好看的中文字幕久久| 成人一二三区视频| 五月婷婷久久综合| 欧美经典一区二区三区| 精品1区2区3区| 亚洲激情图片一区| 337p粉嫩大胆色噜噜噜噜亚洲| 蜜臀久久99精品久久久久久9| 1000精品久久久久久久久|