日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > vue >内容正文

vue

尚硅谷Vue2.0+Vue3.0全套教程视频笔记 + 代码 [P101-135]

發(fā)布時(shí)間:2023/12/31 vue 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 尚硅谷Vue2.0+Vue3.0全套教程视频笔记 + 代码 [P101-135] 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?視頻鏈接:尚硅谷Vue2.0+Vue3.0全套教程丨vuejs從入門到精通_嗶哩嗶哩_bilibili


P1-50:尚硅谷Vue2.0+Vue3.0全套教程視頻筆記 + 代碼 [P001-050]_小白桶子的博客-CSDN博客

P51-100:尚硅谷Vue2.0+Vue3.0全套教程視頻筆記 + 代碼 [P051-100]_小白桶子的博客-CSDN博客

P101-135:當(dāng)前頁(yè)面。

P101-110:

- P101 - vue-resource

課堂筆記:

(1)安裝指令:npm i vue-resource

(2)這個(gè)庫(kù)官方已不維護(hù),轉(zhuǎn)交的團(tuán)隊(duì)維護(hù)頻率低,僅當(dāng)了解,最好還是使用axios。

- P102 - 默認(rèn)插槽

(總結(jié)在P104)本節(jié)部分代碼:

App.vue頁(yè)面:

<template><div class="container"><Category title="美食"><img src="https://s3.ax1x.com/2021/01/16/srJlq0.jpg" alt=""/></Category><Category title="游戲"><ul><li v-for="(g,index) in games" :key="index">{{g}}</li></ul></Category><Category title="電影"><video controls src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"></video></Category></div> </template><script> import Category from './components/Category.vue'; export default {name: "App",components: { Category },data() {return {foods:['火鍋','燒烤','小龍蝦','牛排'],games:['紅色警戒','穿越火線','勁舞團(tuán)','超級(jí)瑪麗'],films:['《教父》','《拆彈專家》','《你好,李煥英》','《尚硅谷》']}}, } </script><style> .container{display: flex;justify-content: space-around; } img{width: 100%; } video{width: 100%; } </style>

Category.vue頁(yè)面:

<template><div class="category"><h3>{{title}}分類</h3><!-- 定義一個(gè)插槽(挖個(gè)坑,等著組件的使用者進(jìn)行填充) --><slot>我是一個(gè)默認(rèn)值,當(dāng)使用者沒有傳遞具體結(jié)構(gòu)時(shí),我會(huì)出現(xiàn)</slot><!-- --></div> </template><script> export default {name:'Category',props:['title'] } </script><style scoped> .category{background-color: skyblue;width: 200px;height: 300px; } h3{text-align: center;background-color: orange; }</style>

- P103 - 具名插槽

(總結(jié)在P104)本節(jié)部分代碼:

App.vue頁(yè)面:

<template><div class="container"><Category title="美食"><img slot="center" src="https://s3.ax1x.com/2021/01/16/srJlq0.jpg" alt=""/><a slot="footer" href="http://www.atguigu.com">更多美食</a></Category><Category title="游戲"><ul slot="center"><li v-for="(g,index) in games" :key="index">{{g}}</li></ul><div class="foot" slot="footer"><a href="http://www.atguigu.com">單機(jī)游戲</a><a href="http://www.atguigu.com">網(wǎng)絡(luò)游戲</a></div></Category><Category title="電影"><video slot="center" controls src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"></video><template v-slot:footer><div class="foot"><a href="http://www.atguigu.com">經(jīng)典</a><a href="http://www.atguigu.com">熱門</a><a href="http://www.atguigu.com">推薦</a></div><h4>歡迎前來觀影</h4></template></Category></div> </template><script> import Category from './components/Category.vue'; export default {name: "App",components: { Category },data() {return {foods:['火鍋','燒烤','小龍蝦','牛排'],games:['紅色警戒','穿越火線','勁舞團(tuán)','超級(jí)瑪麗'],films:['《教父》','《拆彈專家》','《你好,李煥英》','《尚硅谷》']}}, } </script><style> .container,.foot{display: flex;justify-content: space-around; } img{width: 100%; } video{width: 100%; } h4{text-align: center; } </style>

Category.vue頁(yè)面:

<template><div class="category"><h3>{{title}}分類</h3><!-- 定義一個(gè)插槽(挖個(gè)坑,等著組件的使用者進(jìn)行填充) --><slot name="center">我是一個(gè)默認(rèn)值,當(dāng)使用者沒有傳遞具體結(jié)構(gòu)時(shí),我會(huì)出現(xiàn)1</slot><slot name="footer">我是一個(gè)默認(rèn)值,當(dāng)使用者沒有傳遞具體結(jié)構(gòu)時(shí),我會(huì)出現(xiàn)2</slot></div> </template><script> export default {name:'Category',props:['title'] } </script><style scoped> .category{background-color: skyblue;width: 200px;height: 300px; } h3{text-align: center;background-color: orange; }</style>

- P104 - 作用域插槽

老師總結(jié):

插槽:

????????1.作用:讓父組件可以向子組件指定位置插入html結(jié)構(gòu),也是一種組件間通信的方式,適用于 父組件 ===>子組件。

????????2.分類:默認(rèn)插槽、具名插槽、作用域插槽。

????????3.使用方式:

????????????????(1)默認(rèn)插槽:

父組件中:<Category><div>html結(jié)構(gòu)1</div></Category> 子組件中:<template><div><!-- 定義插槽 --><slot>插槽默認(rèn)內(nèi)容...</slot></div></template>

????????????????(2)具名插槽:

父組件中:<Category><template slot="footer"><div>html結(jié)構(gòu)1</div></template></Category><Category><template v-slot:footer><div>html結(jié)構(gòu)2</div></template></Category> 子組件中:<template><div><!-- 定義插槽 --><slot name="center">插槽默認(rèn)內(nèi)容...</slot><slot name="footer">插槽默認(rèn)內(nèi)容...</slot></div></template>

????????????????(3)作用域插槽:

????????????????????????①理解:數(shù)據(jù)在組件的自身,但根據(jù)數(shù)據(jù)生成的結(jié)構(gòu)需要組件的使用者來決定。(games數(shù)據(jù)在Category組件中,但使用數(shù)據(jù)所遍歷出來的結(jié)構(gòu)由App組件決定)

????????????????????????②具體編碼:

父組件中:<Category><template scope="scopeData"><!-- 生成的是ul列表 --><ul><li v-for="g in scopeData.games" :key="g">{{g}}</li></ul></template></Category><Category><template scope="{games}"><!-- 生成的是ul列表 --><h4 v-for="g in games" :key="g">{{g}}</h4></template></Category> 子組件中:<template><div><slot :games="games"></slot></div></template><script>export default {name:'Category',//數(shù)據(jù)在子組件自身data() {return {games:['紅色警戒','穿越火線','勁舞團(tuán)','超級(jí)瑪麗'],}},}</script>

本節(jié)部分代碼:

App.vue頁(yè)面:

<template><div class="container"><Category title="游戲"><template scope="atguigu"><ul><li v-for="(g,index) in atguigu.games" :key="index">{{g}}</li></ul></template></Category><Category title="游戲"><template scope="{games}"><ol><li v-for="(g,index) in games" :key="index">{{g}}</li></ol></template></Category><Category title="游戲"><template scope="{games}"><h4 v-for="(g,index) in games" :key="index">{{g}}</h4></template></Category></div> </template><script> import Category from './components/Category.vue'; export default {name: "App",components: { Category } } </script><style> .container,.foot{display: flex;justify-content: space-around; } img{width: 100%; } video{width: 100%; } h4{text-align: center; } </style>

Category.vue頁(yè)面:

<template><div class="category"><h3>{{title}}分類</h3><slot :games="games">我是默認(rèn)的一些內(nèi)容</slot></div> </template><script> export default {name:'Category',props:['title'],data() {return {games:['紅色警戒','穿越火線','勁舞團(tuán)','超級(jí)瑪麗'],}}, } </script><style scoped> .category{background-color: skyblue;width: 200px;height: 300px; } h3{text-align: center;background-color: orange; }</style>

- P105 - Vuex簡(jiǎn)介

課堂筆記:

(1)老師的課件圖:

老師總結(jié):

vuex是什么:

????????1.概念:專門在Vue中實(shí)現(xiàn)集中式狀態(tài)(數(shù)據(jù))管理的一個(gè)Vue插件,對(duì)Vue應(yīng)用中對(duì)各組件的共享狀態(tài)進(jìn)行集中式的管理(讀/寫),也是一種組件間通信的方式,且適用于任意組件間通信。

????????2.Github地址:GitHub - vuejs/vuex: 🗃? Centralized State Management for Vue.js.

什么時(shí)候用Vuex:

????????1.多個(gè)組件依賴于同一狀態(tài)

????????2.來自不同組件的行為需要變更同一狀態(tài)

- P106 - 求和案例_純vue版

課堂筆記:

(1)關(guān)于select的option值問題:

????????為什么value前面加冒號(hào)有效?不加就是字符串。加上冒號(hào)之后,引號(hào)里的內(nèi)容都會(huì)當(dāng)成JS表達(dá)式去分析,就變成了數(shù)字。

????????最好的做法還是在v-model中加number修飾符。但是上面那個(gè)方法也要清楚。

本節(jié)部分代碼:

Count.vue頁(yè)面:

<template><div><h1>當(dāng)前求和為:{{sum}}</h1><select v-model.number="n"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><button @click="increment">+</button><button @click="decrement">-</button><button @click="incrementOdd">當(dāng)前求和為奇數(shù)再加</button><button @click="incrementWait">等一等再加</button></div> </template><script> export default {name:'Count',data() {return {n:1, //用戶選擇的數(shù)字sum:0 //當(dāng)前的和}},methods: {increment(){this.sum += this.n},decrement(){this.sum -= this.n},incrementOdd(){if(this.sum % 2){this.sum += this.n}},incrementWait(){setTimeout(() => {this.sum += this.n}, 500);}}, } </script><style scoped> button{margin-left: 5px; }</style>

- P107 - Vuex工作原理圖

課堂筆記:

(1)圖:

(2)圖總流程簡(jiǎn)述:

????????①State:把數(shù)據(jù)交給Vuex其實(shí)就是把數(shù)據(jù)交給Vuex中的state。這個(gè)state的本質(zhì)就是Object對(duì)象(本節(jié)的例子是{ ... sum:0 })。

????????②Vue Components:把數(shù)據(jù)遞給Vue組件。在組件中調(diào)用API,為dispatch。

dispatch在調(diào)用的時(shí)候需要傳兩個(gè)參數(shù),分別是動(dòng)作類型和值(如dispatch( 'jia',2 ))。

????????③Actions:本質(zhì)也是一個(gè)Object對(duì)象。

????????????????在調(diào)用了dispatch之后,Actions里面一定會(huì)有一個(gè)key,和該動(dòng)作對(duì)應(yīng)(如{ ... jia:function })。

????????????????這個(gè)函數(shù)一旦被調(diào)用,就會(huì)收到dispatch傳的值(如2)。

????????????????在這個(gè)對(duì)應(yīng)的函數(shù)中,自己調(diào)用commit(如commit( 'jia',2 ))。提交后繼續(xù)往下走。

????????④Mutations:數(shù)據(jù)類型也是一個(gè)Object對(duì)象。

????????????????其中也會(huì)有很多key value,但是肯定會(huì)有之前傳入的動(dòng)作(如{ ... jia:function })。

????????????????這個(gè)函數(shù)會(huì)拿到兩個(gè)東西,一個(gè)是整個(gè)state,還有一個(gè)是傳過來的值(如2)。只要函數(shù)中寫了“ state.sum += 2 ”,那么Mutate就會(huì)自動(dòng)執(zhí)行。

????????⑤再到State:最后State中的值變了(如{ ... sum:2})。通過Render重新渲染傳給組件。

(3)圖其它解析:

????????①為什么需要Actions,而不是直接傳給Mutations來Mutate?

????????????????Actions對(duì)接Backend API(后端接口),它是用來執(zhí)行異步操作的。

????????②如果已經(jīng)有了數(shù)據(jù)的話,官方是允許Vue Components直接Commit給Mutations的。

????????③Devtools是vuex官方開發(fā)的瀏覽器插件。

????????④圖中沒畫出來的是,Vuex中的Actions、Mutations、State都需要經(jīng)過store管理。dispatch、commit都是由store提供的。

(4)老師的比喻,助理解:

????????Vue Components是客人,Actions是服務(wù)員,Mutations是后廚團(tuán)隊(duì),State就是最終上的菜。

????????客人張嘴說話就是dispatch,客人點(diǎn)單蛋炒飯一份,就相當(dāng)于dispatch( 'jia',2 )。

????????服務(wù)員收到后,將具體的單交給后廚團(tuán)隊(duì)就是commit。

????????后廚收到菜單后做菜就是Mutate。

????????最后做出菜Statue,給客人上菜。

????????如果客人跟后廚很熟(不需要服務(wù)員的菜單Backend API調(diào)用數(shù)據(jù)),也可以直接跳過服務(wù)員Actions,跟后廚講一下,上菜就好了。

- P108 - 搭建Vuex環(huán)境

課堂筆記:

(1)Vuex安裝指令:npm i vuex@3

????????(如果直接npm i vuex,那么安裝的是vuex4,只能在Vue3中使用)

老師總結(jié):

搭建vuex環(huán)境

????????1.創(chuàng)建文件:src/store/index.js

// 引入Vue核心庫(kù) import Vue from 'vue' // 引入Vuex import Vuex from 'vuex' // 應(yīng)用Vuex插件 Vue.use(Vuex)// 準(zhǔn)備actions對(duì)象——用于響應(yīng)組件中的動(dòng)作 const actions = {} // 準(zhǔn)備mutations對(duì)象——用于操作數(shù)據(jù)(state) const mutations = {} // 準(zhǔn)備state對(duì)象——用于存儲(chǔ)數(shù)據(jù) const state = {}// 創(chuàng)建并暴露store export default new Vuex.Store({actions,mutations,state })

????????2.在main.js中創(chuàng)建vm時(shí)傳入store配置項(xiàng)

...... // 引入store import store from './store' ......// 創(chuàng)建vm new Vue({el:'#app',render: h => h(App),store })

- P109 - 求和案例_vuex版

本節(jié)部分代碼:

store.js頁(yè)面:

// 該文件用于創(chuàng)建Vuex中最為核心的store // 引入Vue import Vue from 'vue' // 引入Vuex import Vuex from 'vuex' // 應(yīng)用Vuex插件 Vue.use(Vuex)// 準(zhǔn)備actions——用于響應(yīng)組件中的動(dòng)作 const actions = {/* jia(context,value){// console.log('actions中的jia被調(diào)用了',context,value)context.commit('JIA',value)},jian(context,value){// console.log('actions中的jian被調(diào)用了',context,value)context.commit('JIAN',value)}, */jiaOdd(context,value){if(context.state.sum % 2){context.commit('JIA',value)}},jiaWait(context,value){setTimeout(() =>{context.commit('JIA',value)},500)}, } // 準(zhǔn)備mutations——用于操作數(shù)據(jù)(state) const mutations = {JIA(state,value){// console.log('mutations中的JIA被調(diào)用了',state,value)state.sum += value},JIAN(state,value){// console.log('mutations中的JIAN被調(diào)用了',state,value)state.sum -= value}} // 準(zhǔn)備state——用于存儲(chǔ)數(shù)據(jù) const state = {sum:0 //當(dāng)前的和 }// 創(chuàng)建并暴露store export default new Vuex.Store({actions,mutations,state })

Count.vue頁(yè)面:

<template><div><h1>當(dāng)前求和為:{{$store.state.sum}}</h1><select v-model.number="n"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><button @click="increment">+</button><button @click="decrement">-</button><button @click="incrementOdd">當(dāng)前求和為奇數(shù)再加</button><button @click="incrementWait">等一等再加</button></div> </template><script> export default {name:'Count',data() {return {n:1, //用戶選擇的數(shù)字}},methods: {increment(){this.$store.commit('JIA',this.n)},decrement(){this.$store.commit('JIAN',this.n)},incrementOdd(){this.$store.dispatch('jiaOdd',this.n)},incrementWait(){setTimeout(() => {this.$store.dispatch('jiaWait',this.n)}, 500);}}, } </script><style scoped> button{margin-left: 5px; }</style>

- P110 - vuex開發(fā)者工具的使用

課堂筆記:

(1)vue控制臺(tái)切換:

老師視頻里是這樣的:

我這里的更新了,和老師的不一樣,直接選這個(gè):

P111-120:

- P111 - getters配置項(xiàng)

課堂筆記:

(1)state和getters的關(guān)系就像data和computed的關(guān)系。

(2)不是說數(shù)據(jù)處理必須要用這個(gè),在數(shù)據(jù)處理邏輯復(fù)雜,且需要復(fù)用的情況下推薦使用。

老師總結(jié):

1.概念:當(dāng)state中的數(shù)據(jù)需要經(jīng)過加工后再使用時(shí),可以使用getters加工。

2.在store.js中追加getters配置:

...... const getters = {bigSum(state){return state.sum*10} } ...... // 創(chuàng)建并暴露store export default new Vuex.Store({actions,mutations,state,getters })

3.組件中讀取數(shù)據(jù):$store.getters.bigSum

- P112 - mapState和mapGetters

課堂筆記:

(1)ES6中的 ... 為擴(kuò)展運(yùn)算符,能將 [ 數(shù)組 ] 或?qū)ο筠D(zhuǎn)換為逗號(hào)分隔的參數(shù)序列。

老師總結(jié):

四個(gè)map方法的使用(前兩個(gè)):

????????1.mapState方法:用于幫助我們映射state中的數(shù)據(jù)為計(jì)算屬性

computed:{ // 借助mapState生成計(jì)算屬性,從state中讀取數(shù)據(jù)。(對(duì)象寫法)...mapState({sum:'sum',school:'school',subject:'subject'}),// 借助mapState生成計(jì)算屬性,從state中讀取數(shù)據(jù)。(數(shù)組寫法)...mapState(['sum','school','subject']), },

????????2.mapGetters方法:用于幫助我們映射getters中的數(shù)據(jù)為計(jì)算屬性

computed:{ // 借助mapGetters生成計(jì)算屬性,從getters中讀取數(shù)據(jù)。(對(duì)象寫法)...mapGetters({bigSum:'bigSum'}),// 借助mapGetters生成計(jì)算屬性,從getters中讀取數(shù)據(jù)。(數(shù)組寫法)...mapGetters(['bigSum']) },

(代碼在P116)

- P113 - mapActions與mapMutations

老師總結(jié):

四個(gè)map方法的使用(后兩個(gè)):

????????3.mapActions方法:用于幫助我們生成與actions對(duì)話的方法,即:包含$store.dispatch(xxx)的函數(shù)。

methods:{ // 借助mapActions生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用commit去練習(xí)mutations(對(duì)象寫法)...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'}),// 借助mapActions生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用commit去練習(xí)mutations(數(shù)組寫法)...mapActions(['jiaOdd','jiaWait']), }

????????4.mapMutations方法:用于幫助我們生成與mutations對(duì)話的方法,即:包含$store.commit(xxx)的函數(shù)。

methods:{ // 借助mapMutations生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用commit去練習(xí)mutations(對(duì)象寫法)...mapMutations({increment:'JIA',decrement:'JIAN'}),// 借助mapMutations生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用commit去練習(xí)mutations(數(shù)組寫法)...mapMutations(['JIA','JIAN']), }

備注:mapActions與mapMutations使用時(shí),若需要傳遞參數(shù),需要:在模板中綁定事件時(shí)傳遞好參數(shù),否則參數(shù)是事件對(duì)象。

(代碼在P116)

- P114 - 多組件共享數(shù)據(jù)

(代碼在P116)

- P115 - vuex模塊化+namespace_1

(代碼在P116)

- P116 - vuex模塊化+namespace_2

課堂筆記:

(1)老師的小語錄鏈接:

https://api.uixsj.cn/hitokoto/get?type=social

老師總結(jié):

模塊化+命名空間

????????1.目的:讓代碼更好維護(hù),讓多種數(shù)據(jù)分析更加明確。

????????2.修改store.js

const countAbout = {namespaced:true,//開啟命名空間state:{x:1},mutations:{......},actions:{......},getters:{bigSum(state){return state.sum*10}} }const personAbout = {namespaced:true,//開啟命名空間state:{......},mutations:{......},actions:{......} }const store = new Vuex.Store({modules:{countAbout,personAbout}})

????????3.開啟命名空間后,組件中讀取state數(shù)據(jù):

//方式一:自己直接讀取 this.$store.state.personAbout.list //方式二:借助mapState讀取 ...mapState('countAbout',['sum','school','subject']),

????????4.開啟命名空間后,組件中讀取getters數(shù)據(jù):

//方式一:自己直接讀取 this.$store.getters['personAbout/firstPersonName'] //方式二:借助mapGetters讀取 ...mapGetters('countAbout',['bigSum'])

????????5.開啟命名空間后,組件中調(diào)用dispatch:

//方式一:自己直接讀取 this.$store.dispatch('personAbout/addPersonWang',personObj) //方式二:借助mapGetters讀取 ...mapActions('countAbout',{incrementOdd:'jiaOdd',incrementWait:'jiaWait'}),

????????6.開啟命名空間后,組件中調(diào)用commit:

//方式一:自己直接讀取 this.$store.commit('personAbout/ADD_PERSON',personObj) //方式二:借助mapGetters讀取 ...mapMutations('countAbout',{increment:'JIA',decrement:'JIAN'}),

本節(jié)部分代碼(求和案例_vuex升級(jí)版)

store/index.js頁(yè)面:

// 該文件用于創(chuàng)建Vuex中最為核心的store // 引入Vue import Vue from 'vue' // 引入Vuex import Vuex from 'vuex' import countOptions from './count' import personOptions from './person' // 應(yīng)用Vuex插件 Vue.use(Vuex)// 創(chuàng)建并暴露store export default new Vuex.Store({modules:{countAbout:countOptions,personAbout:personOptions}})

store/count.js頁(yè)面:

// 求和相關(guān)的配置 export default {namespaced:true,actions:{jiaOdd(context,value){if(context.state.sum % 2){context.commit('JIA',value)}},jiaWait(context,value){setTimeout(() =>{context.commit('JIA',value)},500)},},mutations:{JIA(state,value){// console.log('mutations中的JIA被調(diào)用了',state,value)state.sum += value},JIAN(state,value){// console.log('mutations中的JIAN被調(diào)用了',state,value)state.sum -= value},},state:{sum:0, //當(dāng)前的和school:'尚硅谷',subject:'前端',},getters:{bigSum(state){return state.sum*10}}, }

store/person.js頁(yè)面:

import axios from "axios" import { nanoid } from "nanoid"// 人員管理相關(guān)的配置 export default {namespaced:true,actions:{addPersonWang(context,value){if(value.name.indexOf('王') === 0){context.commit('ADD_PERSON',value)}else{alert('添加的人必須姓王')}},addPersonServer(context){axios.get('https://api.uixsj.cn/hitokoto/get?type=social').then(response => {context.commit('ADD_PERSON',{id:nanoid(),name:response.data})},error => {alert(error.message)}) }},mutations:{ADD_PERSON(state,value){state.personList.unshift(value)}},state:{personList:[{id:'001',name:'張三'}]},getters:{firstPersonName(state){return state.personList[0].name}}, }

Count.vue頁(yè)面:

<template><div><h1>當(dāng)前求和為:{{sum}}</h1><h3>當(dāng)前求和放大10倍為:{{bigSum}}</h3><h3>我在{{school}},學(xué)習(xí){{subject}}</h3><h3 style="color:red;">Person組件的總?cè)藬?shù)是:{{personList.length}}</h3><select v-model.number="n"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><button @click="increment(n)">+</button><button @click="decrement(n)">-</button><button @click="incrementOdd(n)">當(dāng)前求和為奇數(shù)再加</button><button @click="incrementWait(n)">等一等再加</button></div> </template><script> import {mapGetters, mapState,mapActions,mapMutations} from 'vuex' export default {name:'Count',data() {return {n:1, //用戶選擇的數(shù)字}},computed:{// 借助mapState生成計(jì)算屬性,從state中讀取數(shù)據(jù)。(數(shù)組寫法)...mapState('countAbout',['sum','school','subject']),...mapState('personAbout',['personList']),// 借助mapGetters生成計(jì)算屬性,從getters中讀取數(shù)據(jù)。(數(shù)組寫法)...mapGetters('countAbout',['bigSum'])},methods: {// 借助mapMutations生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用commit去練習(xí)mutations(對(duì)象寫法)...mapMutations('countAbout',{increment:'JIA',decrement:'JIAN'}),// 借助mapActions生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用commit去練習(xí)mutations(對(duì)象寫法)...mapActions('countAbout',{incrementOdd:'jiaOdd',incrementWait:'jiaWait'}),} } </script><style scoped> button{margin-left: 5px; }</style>

Person.vue頁(yè)面:

<template><div><h1>人員列表</h1><h3 style="color:red;">Count組件求和為:{{sum}}</h3><h3>列表中第一個(gè)人的名字是:{{firstPersonName}}</h3><input type="text" placeholder="請(qǐng)輸入名字" v-model="name"/><button @click="add">添加</button><button @click="addWang">添加一個(gè)姓王的人</button><button @click="addPersonServer">添加一個(gè)人,名字隨機(jī)</button><ul><li v-for="p in personList" :key="p.id">{{p.name}}</li></ul></div> </template><script> import {nanoid} from 'nanoid' export default {name:'Person',data() {return {name:''}},computed:{personList(){return this.$store.state.personAbout.personList},sum(){return this.$store.state.countAbout.sum},firstPersonName(){return this.$store.getters['personAbout/firstPersonName']}},methods: {add(){const personObj = {id:nanoid(),name:this.name}this.$store.commit('personAbout/ADD_PERSON',personObj)// console.log(personObj)this.name = ''},addWang(){const personObj = {id:nanoid(),name:this.name}this.$store.dispatch('personAbout/addPersonWang',personObj)this.name = ''},addPersonServer(){this.$store.dispatch('personAbout/addPersonServer')}}, } </script><style></style>

- P117 - 路由的簡(jiǎn)介

課堂筆記:

(1)老師課件截圖:

老師總結(jié):

1.vue-router的理解:

????????vue的一個(gè)插件庫(kù),專門用來實(shí)現(xiàn)SPA應(yīng)用。

2.對(duì)SPA應(yīng)用的理解:

????????(1)單頁(yè)Web應(yīng)用(single page web application, SPA)。

????????(2)整個(gè)應(yīng)用只有一個(gè)完整的頁(yè)面。

????????(3) 點(diǎn)擊頁(yè)面中的導(dǎo)航鏈接不會(huì)刷新頁(yè)面,只會(huì)做頁(yè)面的局部更新。

????????(4)數(shù)據(jù)需要通過 ajax 請(qǐng)求獲取。

3.路由的理解:

????????(1)什么是路由?

????????????????① 一個(gè)路由就是一組映射關(guān)系(key - value)

????????????????② key 為路徑, value 可能是 function 或 componen

????????(2)路由分類

????????????????① 后端路由:

????????????????????????1)理解:value 是 function, 用于處理客戶端提交的請(qǐng)求。

????????????????????????2)工作過程:服務(wù)器接收到一個(gè)請(qǐng)求時(shí), 根據(jù)請(qǐng)求路徑找到匹配的函數(shù)來處理請(qǐng)求, 返回響應(yīng)數(shù)據(jù)。

????????????????② 前端路由:

????????????????????????1)理解:value 是 component,用于展示頁(yè)面內(nèi)容。

????????????????????????2)工作過程:當(dāng)瀏覽器的路徑改變時(shí), 對(duì)應(yīng)的組件就會(huì)顯示。

important!從這節(jié)開始,路由系列一般不貼代碼,老師的筆記里做法部分的代碼寫的很全,再貼代碼就有點(diǎn)冗余了)

- P118 - 路由基本使用

課堂筆記:

(1)Vuex安裝指令:npm i vue-router@3

????????(如果直接npm i vue-router,那么安裝的是vue-router4,只能在Vue3中使用)

(2)router-link標(biāo)簽最終轉(zhuǎn)換到頁(yè)面上就是a標(biāo)簽。

老師總結(jié):

路由

????????理解:一個(gè)路由(route)就是一組映射關(guān)系(key - value),多個(gè)路由需要路由器(router)進(jìn)行管理。

????????前端路由:key是路徑,value是組件。

1.基本使用:

????????(1)安裝vue-router,命令:npm i vue-router

????????(2)應(yīng)用插件:Vue.use(VueRouter)

????????(3)編寫router配置項(xiàng):

// 引入VueRouter import VueRouter from "vue-router"; // 引入路由組件 import About from '../components/About' import Home from '../components/Home'// 創(chuàng)建router實(shí)例對(duì)象,去管理一組一組的路由規(guī)則 const router = new VueRouter({routes:[{path:'/about',component:About},{path:'/home',component:Home}] }) // 暴露router expot default router

????????(4)實(shí)現(xiàn)切換(active-class可配置高亮樣式)

<router-link active-class="active" to="/about">About</router-link>

????????(5)指定展示位置

<router-view></router-view>

- P119 - 幾個(gè)注意點(diǎn)

老師總結(jié):

2.幾個(gè)注意點(diǎn)

????????(1)路由組件通常存放在pages文件夾,一般組件通常存放在components文件夾。

????????(2)通過切換,“隱藏”了的路由組件,默認(rèn)是被銷毀掉的,需要的時(shí)候再去掛載。

????????(3)每個(gè)組件都有自己的$route屬性,里面存儲(chǔ)著自己的路由信息。

????????(4)整個(gè)應(yīng)用中只有一個(gè)router,可以通過組件的$router屬性獲取到。

- P120 - 嵌套路由

老師總結(jié):

3.多級(jí)路由

????????(1)配置路由規(guī)則,使用children配置項(xiàng):

routes:[{path:'/about',component:About},{path:'/home',component:Home,children:[ //通過children配置子級(jí)路由{path:'news', //此處一定不要寫‘/news’component:News,},{path:'message', //此處一定不要寫‘/message’component:Message,}]} ]

????????(2)跳轉(zhuǎn)(要寫完整路徑):

<router-link to="/home/news">News</router-link>

P121-130:

- P121 - 路由的query參數(shù)

課堂筆記:

(老師寫了,但是視頻沒放出來,也沒找到這個(gè)課件,所以我自己總結(jié)了一下)

路由的query參數(shù)

? ? ? ? (1)作用:跳轉(zhuǎn)的時(shí)候傳遞參數(shù)

? ? ? ? (2)如何使用:

????????????????①跳轉(zhuǎn)路由并攜帶query參數(shù),有兩種寫法:

<!-- 跳轉(zhuǎn)路由并攜帶query參數(shù),to的字符串寫法 --> <router-link :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{m.title}}</router-link><!-- 跳轉(zhuǎn)路由并攜帶query參數(shù),to的對(duì)象寫法 --> <router-link :to="{path:'/home/message/detail',query:{id:m.id,title:m.title} }">{{m.title}} </router-link>

????????????????②用$route.query接收參數(shù):

<li>消息編號(hào):{{$route.query.id}}</li> <li>消息標(biāo)題:{{$route.query.title}}</li>

- P122 - 命名路由

老師總結(jié):

5.命名路由

????????(1)作用:可以簡(jiǎn)化路由的跳轉(zhuǎn)。

????????(2)如何使用:

????????????????①給路由命名:

{path:'/demo',component:Demo,children:[{path:'test',component:Test,children:[{name:'hello',path:'detail',component:Detail,}]}] }

????????????????②簡(jiǎn)化跳轉(zhuǎn):

<!-- 簡(jiǎn)化前,需要寫完整的路徑 --> <router-link to="demo/test/welcome">跳轉(zhuǎn)</router-link><!-- 簡(jiǎn)化后,直接通過名字跳轉(zhuǎn) --> <router-link :to="{name:'hello'}">跳轉(zhuǎn)</router-link><!-- 簡(jiǎn)化寫法配合傳遞參數(shù) --> <router-link :to="{name:'hello',query:{id:666,title:'你好' }}" >跳轉(zhuǎn)</router-link>

- P123 - 路由的params參數(shù)

老師總結(jié):

6.路由的params參數(shù)

????????(1)配置路由,聲明接收params參數(shù)

{path:'/home',component:Home,children:[{path:'news',component:News,},{path:'message',component:Message,children:[{name:'xiangqing',path:'detail/:id/:title', //使用占位符聲明接收params參數(shù)component:Detail,}]}] }

????????(2)傳遞參數(shù)

<!-- 跳轉(zhuǎn)路由并攜帶params參數(shù),to的字符串寫法 --> <router-link :to="`/home/message/detail/666/你好`">{{m.title}}</router-link><!-- 跳轉(zhuǎn)路由并攜帶params參數(shù),to的對(duì)象寫法 --> <router-link :to="{name:'xiangqing',params:{id:666,title:'你好'} }">{{m.title}} </router-link>

特別注意:路由攜帶params參數(shù)時(shí),若使用to的對(duì)象寫法,則不能使用path配置項(xiàng),必須使用name配置!

????????(3)接收參數(shù)

$route.params.id $route.params.title

- P124 - 路由的props配置

老師總結(jié):

7.路由的props配置

????????作用:讓路由組件更方便的收到參數(shù)

{name:'xiangqing',path:'detail',component:Detail,// props的第一種寫法,值為對(duì)象,該對(duì)象中的所有key-value都會(huì)以props的形式傳給Detail組件// props:{a:1,b:'hello'}// props的第二種寫法,值為布爾值,若布爾值為真,就會(huì)把該路由組件收到的所有params參數(shù),以props的形式傳給Detail組件// props:true// props的第三種寫法,值為函數(shù),該函數(shù)返回的對(duì)象中每一組key-value都會(huì)通過props傳給Detail組件props({$route}){return {id:$route.query.id,title:$route.query.title}} }

- P125 - router-link的replace屬性

老師總結(jié):

8. router-link的replace屬性

????????(1)作用:控制路由跳轉(zhuǎn)時(shí)操作瀏覽器歷史記錄的模式

????????(2)瀏覽器的歷史記錄有兩種寫入方式,分別為push和replace,push是追加歷史記錄,replace是替換當(dāng)前記錄。路由跳轉(zhuǎn)時(shí)候默認(rèn)為push。

????????(3)如何開啟replace模式:

<router-link replace ...... >News</router-link>

- P126 - 編程式路由導(dǎo)航

老師總結(jié):

9.編程式路由導(dǎo)航

????????(1)作用:不借助router-link實(shí)現(xiàn)路由跳轉(zhuǎn),讓路由跳轉(zhuǎn)更加靈活

????????(2)具體編碼:

//$routere的兩個(gè)API this.$router.push({name:'xiangqing',params:{id:xxx,title:xxx } })this.$router.replace({name:'xiangqing',params:{id:xxx,title:xxx } })this.$router.forward() //前進(jìn) this.$router.back() //后退 this.$router.go(3) //可前進(jìn)也可后退

- P127 - 緩存路由組件

老師總結(jié):

10.緩存路由組件

????????(1)作用:讓不展示的路由組件保持掛載,不被銷毀。

????????(2)具體編碼:

<!-- 緩存多個(gè)路由組件 --> <keep-alive :include="['News','Message']"><router-view></router-view> </keep-alive><!-- 緩存一個(gè)路由組件 --> <keep-alive include="News"><router-view></router-view> </keep-alive>

- P128 - 兩個(gè)新的生命周期鉤子

課堂筆記:

(1)$nextTick(真實(shí)DOM出來之后再回調(diào),回顧P90)和activated、deactivated是生命周期中不在圖中的剩下三個(gè)。

老師總結(jié):

11.兩個(gè)新的生命周期鉤子

????????(1)作用:路由組件所獨(dú)有的兩個(gè)鉤子,用于捕獲路由組件的激活狀態(tài)。

????????(2)具體名字:

????????????????① activated 路由組件被激活時(shí)觸發(fā)。

????????????????② deactivated 路由組件失活時(shí)觸發(fā)。

- P129 - 全局前置_路由守衛(wèi)

(老師總結(jié)和P130整合在一起)

- P130 - 全局后置_路由守衛(wèi)

課堂筆記:

(1)$route中的meta:路由元信息。

老師總結(jié):

12.路由守衛(wèi)

????????(1)作用:對(duì)路由進(jìn)行權(quán)限控制

????????(2)分類:全局守衛(wèi)、獨(dú)享守衛(wèi)、組件內(nèi)守衛(wèi)

????????(3)全局守衛(wèi):

// 全局前置路由守衛(wèi)——初始化時(shí)執(zhí)行、每次路由切換前被調(diào)用 router.beforeEach((to,from,next) => {console.log('beforeEach',to,from)if(to.meta.isAuth){ //判斷當(dāng)前路由是否需要進(jìn)行權(quán)限控制if(localStorage.getItem('school')==='atguigu'){ //權(quán)限控制的具體規(guī)則next() //放行}else{alert('暫無權(quán)限查看')// next({name:'guanyu'})}}else{next() //放行} })// 全局后置路由守衛(wèi)——初始化時(shí)執(zhí)行、每次路由切換之后被調(diào)用 router.afterEach((to,from) => {console.log('afterEach',to,from)if(to.meta.title){document.title = to.meta.title //修改網(wǎng)頁(yè)的title }else{document.title = 'vue_test' }})

P131-135:

- P131 - 獨(dú)享路由守衛(wèi)

老師總結(jié):

(4)獨(dú)享守衛(wèi):

beforeEnter:(to, from, next) => {console.log('beforeEnter',to, from)if(to.meta.isAuth){ //判斷當(dāng)前路由是否需要進(jìn)行權(quán)限控制if(localStorage.getItem('school')==='atguigu'){next()}else{alert('學(xué)校名不對(duì),沒有查看權(quán)限!')}}else{next()} }

- P132 - 組件內(nèi)路由守衛(wèi)

老師總結(jié):

(5)組件內(nèi)守衛(wèi):

// 進(jìn)入守衛(wèi):通過路由規(guī)則,進(jìn)入該組件時(shí)被調(diào)用 beforeRouteEnter (to, from, next){ }, // 離開守衛(wèi):通過路由規(guī)則,離開該組件時(shí)被調(diào)用 beforeRouteLeave (to, from, next){ },

- P133 - history模式與hash模式

課堂筆記:

(1)哈希值(如 http://localhost:8080/#/home/message 中的 #/home/message 就是哈希值)最大的特點(diǎn)就是,不會(huì)隨著http請(qǐng)求發(fā)送給服務(wù)器。

(2)打包指令:npm run build

????????(生成的東西需要放到服務(wù)器中部署才能用。)

(3)課中的nodeJS的express(僅了解不需要掌握),可以看這個(gè):NodeJS之Express基礎(chǔ)_不起眼的皮皮蝦的博客-CSDN博客_express nodejs

(4)中間件 connect-history-api-fallback

????????安裝指令:npm i connect-history-api-fallback

????????后端引入(必須得在靜態(tài)資源前引入)調(diào)用:

const history = require('npm i connect-history-api-fallback'); ...... app.use(history())

(5)nginx也可以實(shí)現(xiàn),起到中間代理作用(僅了解)

老師總結(jié):

13.路由器的兩種工作模式

????????(1)對(duì)于一個(gè)url來說,什么是hash值?——#及其后面的內(nèi)容就是hash值。

????????(2)hash值不會(huì)包含在HTTP請(qǐng)求中,即:hash值不會(huì)帶給服務(wù)器。

????????(3)hash模式:

????????????????①地址中永遠(yuǎn)帶著#號(hào),不美觀。

????????????????②若以后將地址通過第三方手機(jī)app分享,若app校驗(yàn)嚴(yán)格,則地址會(huì)被標(biāo)記為不合法。

????????????????③兼容性較好。

????????(4)history模式:

????????????????①地址干凈,美觀。

????????????????②兼容性和hash模式相比略差。

????????????????③應(yīng)用部署上線時(shí)需要后端人員支持,解決刷新頁(yè)面服務(wù)端404的問題。

- P134 - element-ui基本使用

課堂筆記:

(1)安裝指令:npm i element-ui -S

老師總結(jié):

Vue UI組件庫(kù)

????????1.移動(dòng)端常用 UI 組件庫(kù)

????????????????(1)Vant Vant 3 - Mobile UI Components built on Vue

????????????????(2)Cube UI cube-ui Document

????????????????(3)Mint UI Mint UI

????????2.PC 端常用 UI 組件庫(kù)

????????????????(1)Element UI Element - The world's most popular Vue UI framework

????????????????(2)IView UI iView / View Design 一套企業(yè)級(jí) UI 組件庫(kù)和前端解決方案

本節(jié)部分代碼:

main.js頁(yè)面:

// 引入Vue import Vue from 'vue' // 引入App import App from './App.vue'// 完整引入 // 引入ElementUI組件庫(kù) import ElementUI from 'element-ui' // 引入ElementUI全部樣式 import 'element-ui/lib/theme-chalk/index.css' // 關(guān)閉Vue的生產(chǎn)提示 Vue.config.productionTip = false // 應(yīng)用ElementUI Vue.use(ElementUI)// 創(chuàng)建vm new Vue({el:'#app',render: h => h(App), })

- P135 - element-ui按需引入

課堂筆記:

(1)按需引入指令:npm install babel-plugin-component -D

(npm xxx -D 代表著安裝開發(fā)依賴。)

(2)報(bào)錯(cuò)解決:

如果報(bào) not found ’xxx' 的錯(cuò),那就在指令中輸入: npm i xxx

如果是跟老師一樣的問題,那需要在babel.config.js頁(yè)面的presets配置項(xiàng)中,將原先的 es2015 修改成 @babel/preset-env

~ ??? ~ Vue2.0?完 結(jié) 撒 花?~ ??? ~

——————————————————————————————————————

——————————————原創(chuàng)不易,轉(zhuǎn)載請(qǐng)聲明——————————————

總結(jié)

以上是生活随笔為你收集整理的尚硅谷Vue2.0+Vue3.0全套教程视频笔记 + 代码 [P101-135]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

亚洲天堂精品视频在线观看 | 最近2019中文免费高清视频观看www99 | 国产69久久 | 五月天激情电影 | 久久久久久久久爱 | 久久er99热精品一区二区三区 | 精品一区二区三区久久 | 久久综合九色综合97_ 久久久 | 亚洲精品九九 | 久久久久亚洲精品男人的天堂 | 999成人免费视频 | 亚洲欧美成人综合 | 免费观看的av | 日韩一区二区三区高清免费看看 | 国内外激情视频 | 一区二区视频在线观看免费 | 91香蕉视频好色先生 | 国产精品久久久久久久久费观看 | 婷婷伊人综合亚洲综合网 | 九九99 | av在线影视 | 99热国产在线观看 | 亚洲五月激情 | 激情久久小说 | 国内精品久久天天躁人人爽 | 在线精品亚洲 | 91视频在线观看免费 | 欧美久久久久久久久中文字幕 | 日韩欧美电影在线观看 | 国产精品毛片 | 婷婷激情小说网 | 欧美性黄网官网 | 日韩中字在线 | 成人免费在线观看电影 | 天天综合狠狠精品 | 午夜美女av | 日韩剧情 | 成人在线视频网 | 91成人精品一区在线播放69 | 91亚洲欧美激情 | 9在线观看免费高清完整版在线观看明 | 97超碰人人澡 | 精品高清视频 | 久久99精品久久久久蜜臀 | 色婷婷综合成人av | 色综合综合 | 91中文字幕 | 13日本xxxxxⅹxxx20 | 伊人天天狠天天添日日拍 | 国产手机在线播放 | 亚洲第一色 | 国产黄色免费观看 | 中文字幕在线看视频国产中文版 | 久久精品国产亚洲aⅴ | 亚洲午夜大片 | 久久婷婷视频 | 又爽又黄又无遮挡网站动态图 | 亚洲午夜久久久影院 | 国产成人区 | 久久专区 | 97超碰超碰久久福利超碰 | 免费开视频 | 日本韩国欧美在线观看 | 国产在线a视频 | 又黄又色又爽 | 中文字幕色婷婷在线视频 | 成 人 黄 色 免费播放 | 狠狠色丁香婷婷综合久小说久 | 中文字幕一区二区三区四区视频 | 婷婷射五月| 综合色中文 | 久久九九免费 | 国产高清视频在线播放 | 国产美女黄网站免费 | a在线v| 2022国产精品视频 | 色婷婷播放 | 91精品久久久久久综合五月天 | 在线观看日韩一区 | 国产精品中文字幕在线 | 国产精品欧美久久 | 99久久99久久精品免费 | 三级大片网站 | 久久污视频| 久久综合中文字幕 | 伊人丁香 | 精品99免费 | 黄色的网站免费看 | 亚洲欧洲一区二区在线观看 | 国产精品久久久久久久婷婷 | 国产精品一区二区久久久 | 香蕉视频网址 | 91香蕉视频黄色 | 欧美狠狠操 | 亚洲日本欧美 | 最新国产精品拍自在线播放 | 丁香婷婷色综合亚洲电影 | 午夜精品久久久久久 | 国产手机视频 | 又黄又爽又刺激视频 | 在线av资源| 欧美日韩亚洲在线观看 | 天天天操天天天干 | 天天综合网国产 | 中文字幕4| 成人影片在线播放 | 国模一二三区 | 久草在线视频在线观看 | 日韩二级毛片 | 夜夜干天天操 | 亚洲人成网站精品片在线观看 | 亚洲国产精品激情在线观看 | av看片网 | 91麻豆高清视频 | 五月天欧美精品 | 久久久久久国产精品美女 | 亚洲一级性| 欧美另类交人妖 | 久久艹艹 | 在线观看免费黄色 | 激情图片久久 | 在线看国产 | 国产精品麻豆三级一区视频 | 国产精品久久婷婷六月丁香 | 黄色免费高清视频 | 亚洲精品视频在线播放 | 在线电影日韩 | 91免费视频国产 | 正在播放日韩 | 亚洲更新最快 | 色久天 | 久久精品视频在线播放 | 天天色天天射天天操 | 婷婷丁香六月天 | 欧美日视频 | 韩国av免费在线观看 | 国产成人精品在线观看 | 国产精品美女在线观看 | 97视频免费在线观看 | 久久综合久色欧美综合狠狠 | 97看片吧| 天天综合视频在线观看 | 毛片随便看 | 国产成人一级 | 久久综合九色99 | 亚洲日本一区二区在线 | 婷婷在线播放 | 中文资源在线观看 | 欧美久久久久久久 | 亚洲欧洲视频 | 国产精品一区二区在线免费观看 | 色干综合 | 天天干夜夜爱 | 2020天天干夜夜爽 | 久久久久久蜜桃一区二区 | 欧美孕妇视频 | 国产99久久久国产 | 亚洲黄色在线观看 | 精品一区在线 | 色吊丝在线永久观看最新版本 | 日本久久久影视 | 日韩一区二区三免费高清在线观看 | 人人射人人插 | 亚洲成年人在线播放 | 99精品在线播放 | 国产又黄又爽又猛视频日本 | 91桃色在线免费观看 | 国产人成看黄久久久久久久久 | 亚洲成人免费在线 | 亚洲午夜精品久久久久久久久 | 中文字幕网站视频在线 | 婷婷在线精品视频 | 精品国产久 | 欧美片网站yy | 成人高清在线观看 | 欧美午夜久久久 | 亚洲少妇天堂 | 婷婷久久综合九色综合 | 人人射人人射 | 色五月成人 | 视频在线99re | 最近免费观看的电影完整版 | 日韩电影在线看 | 亚洲国产一区在线观看 | 成人在线视频论坛 | 五月婷影院 | 黄色app网站在线观看 | 黄色av成人在线观看 | 91网址在线看 | 久久99这里只有精品 | 一本之道乱码区 | av电影 一区二区 | a√天堂中文在线 | 天天射天天色天天干 | 久久a级片 | 88av网站 | 成人黄视频 | 日日夜夜精品免费 | 国产一区在线视频 | 日韩av网页 | 18国产精品白浆在线观看免费 | 国产色小视频 | 99热在线国产 | 国产人成免费视频 | 免费观看一级成人毛片 | 91精品国产综合久久婷婷香蕉 | 日韩视频免费 | 毛片网在线播放 | 久久婷婷一区 | 久久久久国产一区二区三区四区 | 亚洲视频每日更新 | 97超碰人人澡人人爱学生 | 国产精品一区二区三区电影 | 色综合天天干 | 成人超碰在线 | 韩国三级一区 | 国产99久久久精品 | 一区二区三区影院 | 日韩精品无 | 婷婷激情五月 | 中文字幕在线日亚洲9 | 久久久久欠精品国产毛片国产毛生 | 热久久这里只有精品 | 国产精品成人国产乱 | 国产黄色片免费观看 | 91麻豆精品国产91久久久久久 | 在线免费观看黄网站 | 久久视频这里有精品 | 怡红院成人在线 | 超碰com | 婷婷激情综合五月天 | 国产亚洲精品bv在线观看 | 久久av高清| 国产精品久久久久久爽爽爽 | 久久婷婷久久 | 五月综合色 | 中文字幕在线网址 | 91av视频导航 | 国产黄色特级片 | 热re99久久精品国产66热 | 日韩欧美观看 | av不卡中文字幕 | 欧美激情视频一区二区三区 | 蜜臀久久99精品久久久酒店新书 | 超级碰视频 | 91精品国产一区二区三区 | 99精品在线免费在线观看 | 97超碰在线免费观看 | 91九色视频网站 | 99视频在线精品免费观看2 | 91精品导航 | 91丨九色丨国产女 | 国产精品丝袜久久久久久久不卡 | av免费成人 | 黄色免费网站下载 | 亚洲毛片在线观看. | 91亚·色 | 欧美一区在线看 | 91精品国产99久久久久久红楼 | 99久久久久久 | 日韩在线视频不卡 | 欧美贵妇性狂欢 | 中文字幕中文字幕在线中文字幕三区 | 在线黄色毛片 | a视频在线观看免费 | 久久久网页 | 最新在线你懂的 | 国产精品第三页 | 欧美成年黄网站色视频 | 一级欧美一级日韩 | 91成人免费在线视频 | 久久视频在线免费观看 | 欧美一二三视频 | 狠狠做深爱婷婷综合一区 | 日本久久中文字幕 | 91精品蜜桃 | 久久久久网址 | 久久好看免费视频 | 欧美一性一交一乱 | 天天操夜操视频 | 玖玖在线精品 | 福利视频网址 | 国产亚洲午夜高清国产拍精品 | 久热av | 国产一级淫片在线观看 | 亚洲国产69 | 亚洲闷骚少妇在线观看网站 | 国产麻豆精品一区二区 | 日韩网站在线免费观看 | 手机在线小视频 | 日韩69视频 | 久久高清免费视频 | 色综合久久久久久中文网 | 天堂av高清 | 欧美激情在线网站 | 久草资源免费 | 91麻豆精品| 91精品国产91 | 人人爽人人爱 | 91视频国产免费 | 久草国产在线 | 久草在线视频在线观看 | 成片免费| 亚洲精品视频第一页 | 中文字幕在线免费播放 | 亚洲japanese制服美女 | 久久亚洲精品电影 | 九九免费精品视频在线观看 | .精品久久久麻豆国产精品 亚洲va欧美 | 国产黄色资源 | 午夜123| 色偷偷男人的天堂av | 亚洲 成人 欧美 | 这里只有精品视频在线观看 | 美女精品在线 | a黄色片在线观看 | 亚洲综合一区二区精品导航 | 亚洲欧美国产视频 | 免费福利在线观看 | 亚洲麻豆精品 | 精品一区二区在线免费观看 | 久久午夜国产 | 国内精品久久久 | 午夜视频在线观看一区二区三区 | 欧美日高清视频 | 日韩成人免费在线观看 | 亚洲激情网站免费观看 | 久久久久国产免费免费 | 国产精品黄色在线观看 | 狠狠狠干 | 久久精品电影院 | 丁香六月在线 | 亚洲黄色一级大片 | 亚洲午夜激情网 | 国产精品久久免费看 | 一本一道久久a久久精品蜜桃 | 日韩女同一区二区三区在线观看 | 欧美一级电影片 | 久久99热久久99精品 | 香蕉免费在线 | 国产日韩精品一区二区 | 国产午夜av| 国产精品99久久久久久久久 | 99精品国产一区二区三区不卡 | 999成人| 一区二区三区四区五区在线 | 亚洲精品国偷拍自产在线观看 | 久青草国产在线 | 国内精品久久久久久久久久久久 | 色综合久久中文综合久久牛 | 亚洲人人射 | 日韩免费观看一区二区 | 国产精品美女久久久久久 | 99热精品在线观看 | 天天色影院| 亚洲精品视频在线免费播放 | 美女视频a美女大全免费下载蜜臀 | 国产精品美女久久久久久免费 | 狠狠干夜夜操天天爽 | 亚洲一区二区天堂 | 免费观看的黄色 | 91在线精品播放 | 麻豆视频入口 | 天天鲁天天干天天射 | 久久久国产一区二区三区四区小说 | 九九久久久久99精品 | 国产精品中文 | 国产成人一区二区三区电影 | 一性一交视频 | 天天艹日日干 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 天天透天天插 | 日本中文字幕在线电影 | 少妇bbw撒尿 | 麻豆高清免费国产一区 | 欧美在线1| 日韩精品专区在线影院重磅 | 日韩二区三区在线 | 国产精品久久久久久久久久妇女 | 在线国产视频一区 | 亚洲国产精品久久久久 | 国产色视频一区 | 国产精品网在线观看 | 丁香花五月 | 在线观看中文字幕视频 | 这里只有精品视频在线观看 | 粉嫩av一区二区三区四区 | 91亚洲激情| 久久夜色精品国产欧美乱极品 | 在线天堂中文www视软件 | 国产精品一区二区免费 | 久久精品福利视频 | 久久香蕉国产 | 天天干天天操人体 | 精品久久久久久亚洲综合网 | 999久久久久久 | 日日婷婷夜日日天干 | 麻豆91在线 | 亚洲精品午夜久久久 | 亚洲人人av| 人人擦 | av网址最新 | 五月天综合 | 国产一区私人高清影院 | 日韩精品免费专区 | 久久avav| 国产精品高清免费在线观看 | 免费看日韩 | 亚洲成人二区 | 午夜视频在线瓜伦 | 国产一区麻豆 | 日韩国产在线观看 | 日韩大片免费在线观看 | 天天弄天天干 | 不卡视频一区二区三区 | 欧美国产日韩在线视频 | 99re视频在线观看 | 欧美激情h| 国产成人一级电影 | 1024在线看片 | 婷婷免费视频 | 999在线精品 | 国产免费美女 | av成人免费在线 | 九九久久久久99精品 | 五月天,com | 久久免费视频一区 | 99精品视频网站 | 久草av在线播放 | 成人在线观看网址 | 欧美一二区在线 | 中文字幕你懂的 | 午夜黄色一级片 | 九九九热视频 | 国产精品成人在线 | 黄色电影在线免费观看 | 国产黄视频在线观看 | 中文字幕在线观看第二页 | 日本三级大片 | 国产精品一区在线播放 | 欧美在线aa | 成人在线免费小视频 | 亚洲国产资源 | 国产美女网 | 国产精品自产拍在线观看网站 | 在线国产一区二区三区 | 麻豆视频在线免费观看 | 久久久久久国产精品免费 | 国产美女精品人人做人人爽 | 夜色在线资源 | 中文字幕中文 | 亚洲欧美怡红院 | 最近免费中文字幕大全高清10 | 国内精品久久久久影院日本资源 | 日韩精品中文字幕在线 | 中文字幕av免费 | 久久人人爽爽人人爽人人片av | av一区二区三区在线 | 1000部18岁以下禁看视频 | 久久精品永久免费 | 成人久久视频 | 国产美女精品久久久 | 又黄又爽又湿又无遮挡的在线视频 | 不卡视频一区二区三区 | 亚洲精品99 | 国产精品video爽爽爽爽 | 狠狠色狠狠色 | 中国一级片视频 | 欧美少妇影院 | www成人精品 | 综合在线亚洲 | 日本久久久久久科技有限公司 | av在线免费观看不卡 | 午夜视频在线观看网站 | 国产一区二区三区免费在线 | 欧美日韩激情视频8区 | 欧美91精品久久久久国产性生爱 | 久草在线观 | 97av视频| 天堂av网在线| 狠狠狠色丁香婷婷综合激情 | 日韩在线首页 | 国产在线观看免 | 探花视频免费在线观看 | 国产资源站 | 久久99久久精品国产 | 性色av免费在线观看 | 欧美日韩亚洲精品在线 | 久久免费黄色大片 | 久草在线免费新视频 | 成人片在线播放 | 国产免费精彩视频 | 亚洲日日日 | 欧美成人中文字幕 | 国产精品网站 | 欧美久久影院 | 性色av一区二区三区在线观看 | av在线h| 亚洲天天 | 97精品欧美91久久久久久 | av日韩国产 | 69国产盗摄一区二区三区五区 | 人人干在线| 最新久久久 | 成年人av在线播放 | 日韩精品你懂的 | 日韩午夜精品福利 | 亚洲精品成人av在线 | 91九色蝌蚪视频 | 天天操天天操天天操天天操天天操天天操 | 婷婷激情五月 | 中文字幕日韩免费视频 | 亚洲精品高清一区二区三区四区 | 狠狠色丁香婷婷综合最新地址 | 色婷婷激情网 | 国产看片免费 | 欧美精品乱码久久久久 | 亚洲不卡av一区二区三区 | 中文字幕在线看视频国产 | 国产精品成人一区二区三区 | 久久亚洲国产精品 | 91专区在线观看 | 最近中文字幕国语免费高清6 | 国产一级做a爱片久久毛片a | 亚洲成成品网站 | 久久国产免 | 人人讲下载 | 午夜精品福利影院 | 中文字幕一区二区三区乱码不卡 | 91免费看黄| 91亚洲夫妻| 久久免费黄色 | 国产精品免费小视频 | 日韩欧美综合视频 | 免费视频一区 | 婷婷丁香九月 | 99国产一区二区三精品乱码 | 免费中文字幕在线观看 | 右手影院亚洲欧美 | 欧美成人在线免费观看 | 日韩欧美国产视频 | 欧美亚洲精品在线观看 | 久久人人爽爽人人爽人人片av | 人人爽影院 | 国产一区视频在线 | 人人干人人干人人干 | 日韩久久久久久久久久 | 婷婷久草 | 色婷婷成人网 | 在线观看理论 | 色综合天天综合 | 亚洲男人天堂a | 国产视频资源在线观看 | 亚洲精品高清在线 | 天天天天色综合 | 亚洲精品乱码久久久久久蜜桃91 | 日韩精品一区二区免费视频 | 日韩一区二区在线免费观看 | 五月婷婷视频在线观看 | 天天草天天干天天 | 国产黄网在线 | 美女视频黄频 | 欧美色图东方 | 在线观看亚洲电影 | 久久色视频 | 久久激情久久 | 狠狠插狠狠干 | 99一级片 | 欧美激情片在线观看 | 992tv人人网tv亚洲精品 | 福利精品在线 | 在线播放日韩av | 99国产一区 | 亚洲一区不卡视频 | 欧美日韩精品在线观看视频 | 九九久久国产精品 | 色婷婷狠 | 亚洲九九九在线观看 | 久久99在线| 中文字幕乱码亚洲精品一区 | 久草在线91| 手机看片国产 | av东方在线| 国产成人精品一区二区三区福利 | 在线观看免费国产小视频 | 亚洲免费国产 | 美女国内精品自产拍在线播放 | 国产精品va在线观看入 | www婷婷| 韩国精品视频在线观看 | 国产成人在线免费观看 | 国产精品av在线 | 免费十分钟 | 天天干天天干天天干天天干天天干天天干 | 日本大片免费观看在线 | 黄网站色成年免费观看 | 免费福利小视频 | 久久免费视频99 | 国产精品国产三级国产aⅴ9色 | 天堂av网址| 天天操操操操操 | 欧美日韩免费观看一区二区三区 | 亚洲电影图片小说 | 精品视频专区 | 欧美在线99 | 日韩二区三区在线 | 亚洲精品国产区 | 国产91免费看 | 久久精品欧美一 | 国产一级片网站 | 久久99这里只有精品 | 欧美中文字幕第一页 | 精品产品国产在线不卡 | 国产亚洲精品久久久久久久久久久久 | 一区二区不卡视频在线观看 | 成人蜜桃网 | 亚州精品成人 | 日韩中文字幕亚洲一区二区va在线 | 国产短视频在线播放 | 九九在线视频免费观看 | 亚洲香蕉视频 | 久草视频在 | 久久综合视频网 | 天天操天天操一操 | 五月综合 | 97超碰免费 | 天天操天天干天天爱 | 国产色女人| 日韩精品中文字幕一区二区 | 午夜色站 | 又黄又爽的视频在线观看网站 | 亚洲va在线va天堂 | 99久久精品免费看国产四区 | av电影免费观看 | 精品国产乱码一区二区三区在线 | 天天操福利视频 | 在线日韩一区 | 免费的国产精品 | 天天干一干 | 最近中文字幕国语免费av | 二区三区av| 成人国产精品av | 久久综合久久综合这里只有精品 | 国产中文在线观看 | 最近中文字幕高清字幕在线视频 | 69av视频在线 | 97碰在线 | 久久精品视频网站 | 97视频免费在线看 | 99久久精品久久亚洲精品 | 99色| 日韩高清一区 | 亚洲美女视频在线观看 | 一区二区三区高清不卡 | 久久图 | 久青草视频| 午夜日b视频 | 在线播放视频一区 | 永久免费精品视频网站 | 91麻豆网| 成年人免费在线观看 | 午夜视频在线观看一区二区三区 | 九九在线高清精品视频 | 久久久精品视频成人 | www五月| 国产成人精品一区二区三区福利 | 色资源二区在线视频 | 国产午夜不卡 | 久久精品视频中文字幕 | 黄色录像av | av中文字幕在线免费观看 | 96在线| 免费在线一区二区三区 | 久久成人高清视频 | 成片免费观看视频999 | 午夜91视频 | 国产精品1区2区在线观看 | av电影免费 | 日韩av片免费在线观看 | 久久久久久久久久久久国产精品 | 日日爽夜夜操 | 日本xxxxav| 国产精品青青 | 99热免费在线 | 日本三级在线观看中文字 | 日韩在线播放视频 | 成人毛片一区二区三区 | 国产精品久久久久久久免费大片 | 精品久久网 | 日韩深夜在线观看 | 日韩丝袜在线 | 成人免费亚洲 | 怡红院av| 久操免费视频 | 91免费网站在线观看 | 久久久久久久久久久精 | 国产精品私人影院 | 91香蕉视频好色先生 | 91亚洲精品国偷拍 | h网站免费在线观看 | 国产精品 国产精品 | 亚洲精品综合欧美二区变态 | 色国产精品一区在线观看 | 97在线免费观看视频 | 久久99亚洲热视 | 操操操日日日干干干 | 99热这里只有精品国产首页 | 国产品久精国精产拍 | 国产成人高清 | 日韩av成人在线观看 | 日韩精品不卡 | 日韩a在线看| 午夜精品区 | 91福利在线导航 | 一本一道波多野毛片中文在线 | 嫩草伊人久久精品少妇av | 少妇bbbb揉bbbb日本 | 欧美日韩视频在线一区 | 日韩一区在线免费观看 | 国产福利精品一区二区 | 久久国产一区 | 国产主播大尺度精品福利免费 | 日本一区二区免费在线观看 | 久久久 激情 | 国产中文字幕亚洲 | 国产欧美精品一区二区三区四区 | 日韩激情片在线观看 | 五月婷婷另类国产 | 黄色小网站在线观看 | 九七在线视频 | 国内精品久久久久影院日本资源 | 精品人人人| 久久艹中文字幕 | 国产精品免费一区二区三区 | 99视频99| 99久久99久久免费精品蜜臀 | 国产精品99久久久久人中文网介绍 | 午夜免费视频网站 | 婷婷丁香激情综合 | 黄网站免费看 | 99 久久久久 | 中文字幕日韩一区二区三区不卡 | 日韩欧美高清在线观看 | 三上悠亚一区二区在线观看 | 99免费国产 | 国产精品青草综合久久久久99 | 久久视频免费观看 | 超碰精品在线 | 亚州精品天堂中文字幕 | 在线观看中文字幕一区二区 | 2018亚洲男人天堂 | 激情综合五月天 | 日韩av五月天 | 国产精品av在线免费观看 | 黄色三级在线观看 | 国产视频2 | 久久国产精品视频 | 夜色资源站wwwcom | 色片网站在线观看 | 亚洲欧美视频在线观看 | 久久精品99北条麻妃 | 久久艹艹| 99精品免费视频 | av爱干| 精品国产一区二区三区在线 | 一区二区三区电影在线播 | 久久精品视频在线 | 国产精品一区在线观看 | 天天做夜夜做 | 日韩欧美在线一区 | 免费视频久久久久久久 | 在线观看亚洲a | 国产日韩精品一区二区在线观看播放 | 99看视频在线观看 | 在线不卡中文字幕播放 | 精品国产观看 | av成人免费在线看 | 亚洲在线 | 在线观看视频在线 | 成年人电影免费在线观看 | 国产精品成 | 久久免视频 | 一区二区三区四区五区在线 | 69视频在线 | 九九九热 | 91亚洲欧美 | 青青网视频 | 九九九九免费视频 | 日韩三级视频在线看 | 日韩在线观看一区二区三区 | 日韩毛片久久久 | 国产精品一区久久久久 | 中文字幕免费播放 | 一区二区三区四区精品视频 | 成人一级片在线观看 | 国产99久久久久久免费看 | 国产精品99久久久久久大便 | 91天堂影院| 99视频精品免费观看, | 九九免费精品 | 中文字幕高清在线播放 | 播五月婷婷 | 日韩久久久 | 国产精品综合av一区二区国产馆 | 国产福利专区 | 中文字幕人成一区 | 国产在线观看二区 | 99久热在线精品视频成人一区 | 久久久国产影院 | bbw av | 国产欧美日韩视频 | 成人毛片网 | 国产精品18久久久久久久久久久久 | 久久夜夜操 | 欧美黑人xxxx猛性大交 | 国产精品ⅴa有声小说 | 久久精品视频中文字幕 | 成人在线免费视频观看 | 国产97av| 久久av影院 | 国产成人免费在线 | 日韩欧美精品在线观看视频 | 99精品视频在线免费观看 | 精品国产一区二区三区四 | 毛片一区二区 | 最近中文字幕高清字幕免费mv | 国产精品一区在线播放 | 成人四虎影院 | 日本黄色片一区二区 | 97热视频 | 亚洲粉嫩av| 日韩三区在线观看 | 欧美一区二区在线免费观看 | 久久开心激情 | 91爱爱视频| 国产一级二级三级在线观看 | 国产v亚洲v | 午夜视频亚洲 | 黄色av影视| 天天性天天草 | av日韩国产 | 久久国产系列 | 久久艹影院 | 国产人成看黄久久久久久久久 | 国产精品99精品 | 三级动图| 日日操网 | 国产免费一区二区三区最新 | 日韩中文字幕在线 | 96精品视频 | 免费看黄的视频 | av免费在线观看1 | 久久久久久久久久影院 | 国产精品初高中精品久久 | 天天综合视频在线观看 | 操久| 国产精品成人免费 | 天天插日日射 | 国产精品一区免费看8c0m | 久久国产视屏 | 天天激情天天干 | 国产特级毛片aaaaaa毛片 | 91视频传媒 | 香蕉影视| 国产午夜三级 | 在线观看福利网站 | 色视频在线观看 | 96久久精品 | 操操日日 | 欧美日韩在线视频一区二区 | 亚洲第一伊人 | av免费网站 | avlulu久久精品 | 欧美成人播放 | 久久黄视频 | 狠狠色丁香九九婷婷综合五月 | 色视频国产直接看 | 91视频免费看网站 | 色五婷婷| 中国一区二区视频 | 亚洲国产中文字幕在线视频综合 | 天天摸天天操天天爽 | 成人一区在线观看 | 综合精品在线 | 免费黄色特级片 | 婷婷六月丁香激情 | 人人爽影院 | 国产区在线看 | 五月婷婷丁香综合 | 91精品国产一区二区三区 | 丁香六月婷婷激情 | 97在线观看免费观看 | 精品91久久久久 | 男女啪啪网站 | 黄色国产区 | 丁香六月婷婷开心 | 二区中文字幕 | 免费在线观看日韩 | 六月婷婷色| 手机av在线免费观看 | 久久网址 | 日韩欧美高清一区二区 | 五月婷婷在线视频观看 | 丁香婷婷综合激情 | 99久久日韩精品视频免费在线观看 | 久草精品免费 | 欧美日韩视频 | 天天色婷婷 | 99久热| 免费久久99精品国产婷婷六月 | 久久xx视频 | 国产三级香港三韩国三级 | 国产精品ⅴa有声小说 | 超碰日韩| 色福利网 | 中文字幕丝袜 | 午夜12点 | 永久免费精品视频 | 亚州av成人| 伊人资源视频在线 | 91九色在线播放 | 久热爱 | av一级片 | 伊人va | 成人国产网站 | 超碰成人免费电影 | 国产精品av免费在线观看 | 黄色片网站av | 国产精品一区二区在线免费观看 | 欧美日韩亚洲一 | 黄色av影视 | 久草在线视频在线 | 天天色成人 | 一区在线观看视频 | 日日综合 | 午夜av电影院 | 99理论片 | 天天摸天天舔天天操 | 久久久久久免费网 | 国产精品毛片久久蜜 | 日韩大片在线看 | 国产精品久久一区二区三区不卡 | 亚洲成av| 黄色在线观看污 | 9在线观看免费高清完整版 玖玖爱免费视频 | 国产中文在线观看 | 涩涩成人在线 | 久久综合婷婷 | 日韩在线| 免费在线色 | 国产精品综合在线 | 中文字幕精品一区二区三区电影 | 美女久久久久 | 93久久精品日日躁夜夜躁欧美 | 国产一级一级国产 | 成人a级网站 | 国产一级免费播放 | 婷婷丁香九月 | 中文字幕在线网 | 久久网页 | 国产69精品久久99的直播节目 | 在线黄色av | 国产老太婆免费交性大片 | 国产精品激情 | 夜夜躁日日躁狠狠久久88av | 国产色网站 | 天天干视频在线 | 国产在线欧美在线 | 中文字幕乱视频 | 国产人成精品一区二区三 | 国产福利精品在线观看 | 亚洲综合激情小说 | 久草影视在线 | 亚洲精品午夜aaa久久久 | 四虎国产精 | 国产理论免费 | 天天干天天操天天 | 中文乱码视频在线观看 | 国产护士hd高朝护士1 | 三级免费黄| 久草精品视频 | 香蕉在线观看 | 91av免费看| 91麻豆精品国产91久久久久久 | 亚洲国产精品99久久久久久久久 | 成人理论在线观看 | 国产精品永久免费观看 | 91亚洲精品久久久蜜桃网站 | 成人在线视频观看 | 亚洲理论影院 | 国产69久久久欧美一级 | 免费av网址在线观看 | 一区二区中文字幕在线观看 | 国产免费小视频 | 亚洲精品在线观 | 91亚洲精品久久久久图片蜜桃 | 一级a性色生活片久久毛片波多野 | 麻豆成人小视频 |