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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue知识点归纳与总结(笔记)

發布時間:2023/12/20 vue 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue知识点归纳与总结(笔记) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

????當前總結是本人在業余學習與實踐過程后的總結與歸納,旨在檢驗自己的積累,也方便忘記時查閱,同時也希望能幫助那些這方面知識匱乏的同行門,總結是基于vue2.x,vue-cli3.x,主要記錄些,vue常用的指令、事件,監聽、數據綁定、過濾器、組件、動畫、vuex,vue-router等日常工作中時常用到的東西,也有些常用的插件和開發工具的介紹與使用,以及部分性能優化的建議與實踐,如有不對,或不足的地方,也請各位大神,指出來,學習學習。

1.基礎

1. 理解mvvm

  • m 是vue實例中的data,自定義的數據或后端返回的數組
    不是后端mvc里的model概念不同。
  • vm 是vue的實例 m和v之間的調度者 是mvvm的核心思想
  • v是 html 要渲染的。

2. 常用指令

  • v-cloak 解決{{}}插值閃爍問題
  • v-text 會先執行 覆蓋 元素中原本的內容 但是插值表達式只會覆蓋自己的占位符,默認不會閃爍
  • v-html 渲染 html標簽 覆蓋元素中原有元素內容
  • v-bind: 簡寫為: 用來綁定數據 可以寫合法的js表達式
  • v-on: 簡寫為 @ 用來點擊事件

3.常用事件修飾符

  • stop 阻止冒泡 :外層和里層都有方法 點擊里層會產生冒泡,也會觸發外層的事件。
    順序 從里到外產生事件

  • prevent 阻止瀏覽器默認行為 :
    a標簽有瀏覽器默認行為。

  • capture 捕獲事件 :點擊里層先觸發外層再觸發里層 順序從外到里產生事件

  • self 只觸發自己本身的事件 不會產生冒泡和捕獲事件 類似于阻止冒泡 但只針對自己那一層 最外層還是會被最里層冒泡冒到 stop 是阻止所有層次

  • once 事件只執行一次

4.數據的綁定

  • v-bind: 數據的單向綁定
  • v-modle :數據的雙向綁定 這個只能用于表單元素中

tips: 表單元素 radio text address email select checkbox textarea

5.class 綁定

1.數組帶對象
<div :class="[classA,classB,{'classC':flag}]" >

data(){
return{
flag:true
}
}

tips:可以在類中的數組中寫三元表達式,但推薦使用對象來代替它控制是否渲染

2.單純的對象
<div :class="{classA:falg1,classB:flag2}" />

data(){
return{
falg1:true,
falg2:true
}
}

3.數組帶三元
<div :class="['ac','bd',falg?'active','']" / >

data(){
return{
falg:true,
}
}

4.對象升級
<div :class="classObj" />

data(){
return{
classObj:{classA:falg1,classB:flag2}
}
}

tips:直接使用一個對象數組來控制樣式

5.使用style 的對象來實現樣式的修改
<div :class="styleObj" />

data(){
return{
styleObj:{color:red}
}
}

5.使用style 的數組帶對象來實現樣式的修改
<div :class="[styleObj1,styleObj2]" /> data(){return{styleObj1:{color:red},styleObj2:{color:red}} }

6.v-for的使用

1. 可以遍歷: 普通數組,對象數組,對象,還可以是數字
<div v-for='(item,key,index) in object' :key='index'>{{item}}--{{key}}--{{index}} </div>

tips:在遍歷對象的時候有多個index索引,遍歷數字時是從1開始的。綁定key時屬性值必須是number或者string

7.v-if、v-show

  • v-if 有較高的切換性能 , 適合元素可能永遠不會被用戶看到。
  • v-show 有較高的初始渲染消耗,適合元素頻繁切換。

8 調試插件

  • 在谷歌商店找vue-devtools插件,使用這個插件
    并設置插件,允許訪問文件網址。 會在調試中出現vue相關的東西

  • debugger 直接寫可以調試

9 過濾器

全局和私有過濾器
<div v-for='(item,key) in object' :key='index'>{{item | dateFormat}} </div>
  • 全局
vue.filter('過濾器名稱',function(){

})

  • 私有(局部)
filters:{dateFormat:function(data,param){do some} }

tips

  • data 就是 | 第一個參數已經被定死了,永遠是, 管道左邊要被轉換的數據,param 是過濾方法傳進來的其他參數,過濾器采用就近優先原則,如果私有和全局的名稱一樣就優先采用私有的。
  • padstart 和 padend es6 的補0方法
  • 第二個參數是字符串,第三個參數是表達式,如果自己定義參數值是動態的會報錯,還未找到原因,后期會找時間再看看,目前就是簡單的過濾用過濾器,復雜點用方法,能用計算屬性用計算屬性,有緩存,能提高性能

10 按鍵修飾符

  • 監聽pc鍵盤上的值
<input @keyup.enter='方法名'></input>
  • 1

tips: enter 可以換成鍵盤上的任何一個值,只要去找相關的鍵盤碼,就都可以使用,推薦設置個別名,放在沒有按鈕操作的模板。

  • 自定義全局按鍵修飾符
    Vue.config.keyCodes.f2=113,就可使用了

tips: f2修飾符是vue里沒有定義的自己創建。

11 定義指令

1. 全局

定義的指令都要按規定去創建 在bind 和
inserted
還有 updated 中去創建

Vue.directive('focus'{//每當指令綁定到元素上的時候,會立即執行bind 函數,只執行一次,注意:在元素剛綁定元素的時候,還沒有插入到dom中去,這時候,調用focus方法沒有作用,即放在focus 放在bind中是不起作用 的bind:function(el,binding){el.style.color=binding.value},

//表示元素插入到dom中的時候,只執行一次
inserted:function(){
el.focus() js行為放在這里去創建
},

//當組件更新的時候,可能會觸發多次
updated:function(){},

})

tips:

  • 參數1指令名稱,在定義的時候,指令名稱前面不需要加v-前綴,但是調用的時候,必須在指令名稱前加v-前綴;參數2:是一個對象,在這個對象身上,有一些指令相關的函數,這些函數可以在特定的階段,執行
    相關的操作。
  • 在每個函數中,的第一個參數,永遠是el, el是代表被bind綁定的元素,el是個原生的js對象。
    第二個參數可以是用戶傳進來值 bingding.value
2. 局部
directives:{'指令名':{bind:function( el,b){}
3. 簡寫
'指令名':function(el,binding){ } //注意這個function 等同于 把代碼寫到bind和update中去

tips: 樣式相關的指令放在bind中,js行為相關的放在inserted中比較合適,防止指令不生效。使用場景 寫組件時可以用這個去改樣式

12 生命周期

  • beforeCreate():這是我們遇到的第一個生命周期函數,表示實例完全被創建出來之前,會執行它…

  • created(): 這是遇到的第二個生命周期函數…

  • beforeMount():這是遇到的第3個生命周期函數,表示 模板已經在內存中編輯完成,但是尚未把模板渲染(掛載)到頁面中。在 beforeMount 執行的時候,頁面中的元素,還沒有被真正替換過來,只是之前寫的一些模板字符串。就像{{text}}這樣

  • mounted():這是遇到的第四個生命周期函數,表示內存中的模板,已經真實的掛載到了頁面中,用戶已經可以看到渲染好的頁面了。只要執行完這個生命周期,就表示整個vue實例已經初始化完畢了,此時,組件已經脫離了創建階段,進入到了運行階段。

  • beforeUpdate():這時候表示,我們的界面還沒有被更新[但數據已經被更新了頁面中顯示的數據,還是舊的,此時data數據是最新的。頁面尚未和最新的數據保持同步

  • update() : 這一步執行的是 先根據data中最新的數據,在內存中重新渲染出一份最新的內存dom樹,當最新的內存dom樹被更新后,會把最新的內存DOM樹重新渲染到真實的頁面中去,這時候,就完成了數據data(model層)->view(視圖層)的更新,
    頁面和data數據已經保持同步了,都是最新的。

  • beforeDestory :當執行 beforeDestory 鉤子函數的時候,Vue實例就已經從運行階段,進入到銷毀階段, 當執行beforeDestroy的時候,實例身上所有的data和所有的methods以及過濾器、指令...都處于可用狀態,此時,還沒有真正執行銷毀的過程。

  • destroyed :
    當執行這個函數的時候,組件已經被完全銷毀了,此時,組件中所有的數據,方法,指令,過濾器...都已經不可用了

13 過渡類名實現動畫

1. vue的內置動畫
<style>.v-enter,.v-leave-to{opacity:0;transform:translateX(150px) --這東西是位移}.v-enter-active,.v-leave-active{transition:all 0.4s ease; }</style><h3 v-if="flag"></h3> </transition> <script>data(){return {flag:false} } </script>
2. 使用第三方類實現動畫
<transition enter-active-class="bounceIn" leave-avtive-class="bounceOut" duration='200' ><h3 v-if="flag" class="animated" ></h3> </transition>
3. 在屬性中聲明js鉤子 實現半場動畫(只需要進場,不需要離場)
<transition<div @before-enter="beforeEnter"@enter="enter"@after-enter="afterEnter"></div></transition><transition<div v-show="flag"@before-enter="beforeEnter"@enter="enter"@after-enter="afterEnter"></div></transition><script>methods:{beforeEnter(el){//動畫入場之前,此時動畫尚未開始, 可以在beforeEnter中設置元素開始動畫之前的初始位置 el.style.transform="translate(0,0)"},enter(el,done){/*這句話,沒有實際的作用,但是,如果不寫,出不來動畫效果,可以認為 這個會強制刷新動畫,ofset觸發了重繪重排導致動畫更新了*/el.offsetWidthel.style.transform="translate(150px,450px)"el.style.transition='all 1s ease'/*這里的done 代表著 afterEnter的引用,這個會立即執行afterEnter 否則會有延時 */done() },afterEnter(el){/*動畫完成之后,會調用afterEnter */this.flag=!this.flag}} </script><li></transition-group> .v-enter,.v-leave-to{opacity: 0;transform:translateY(80x);}.v-enter-active,.v-leave-active {transition: all 0.6s ease;}/*離開后下一個東西沒有動畫使用這個可以使用動畫實現下一個東西漸漸地飄上來的效果,要和 v-leave-active的absolute 配合 固定寫法*/.v-move {transition:all 0.6s ease}.v-leave-active{/* absolute 有個特點元素默認寬度就是最小值,要在元素上添加width:100%*/position:absolute;}<transition mode="out-in"><component :is="comName" ></component> </transition>

tips:

  • v-enter [這是一個時間點] 是進入之前,元素的起始狀態,此時還沒有開始進入
  • v-leave-to [這是一個時間點] 是動畫離開之后,離開的終止狀態,此時,元素動畫已經結束了
  • v-enter-active
    [入場動畫的時間段]
  • v-leave-active
    [離場動畫的時間段]
  • animated 是個動畫庫 新版本似乎不需要加入
  • 使用:duration=200 來表示動畫的時間 如果只寫一個表示統一配置了開場和離場時間 用 對象可傳入c入場和離場 duration="{enter:200,leave:400}"
  • 添加appear屬性,實現頁面剛展示出來,入場時候的效果
  • 通過為transition-group 元素,設置tag屬性
    指定 transition-group 渲染為指定元素,如果不指定tag屬性,默認,渲染為span 標簽
  • mode="out-in" 先過渡再進來,防止有 陰影,通過mode`來設置過渡方式。
  • 注意:最外層一定要用transition包裹著,動畫似乎升級了,可以在transition標簽中加入name屬性,并且在css樣式中把v,替換為你的name屬性值。

    14 組件

    1.使用Vue.extend 來創建全局的Vue組件

    var coml=Vue.extend({template:'<h3>這是使用Vue.extend 創建的組件</h3>' }) //第一個參數組件名稱,第二個參數創建出來的組件模板對象Vue.component('myComl',coml) <my-coml><my-coml/>

    2.使用 vue.component 來創建組件

    Vue.component('mycom2',{

    template:’<div>
    <h3>
    這是直接使用Vue.component 創建出來的組件
    </h3>
    </div>’

    })

    3.使用 template 來創建組件

    <template id='tmp1'> <div><h1>這里通過template元素,在外部定義的組件結構,這個方式,有代碼的智能提示和高量</h1> </div> </template>

    Vue.component(‘mycom3’,{
    template:’#tem1’
    })

  • 私有組件 componment
  • <template id='temp2'><h1>這是私有login組件</h1> </template>

    componment:{
    login:
    {
    template:‘tmpl2’
    }
    }

    • 如果使用了Vue.component 定義了全局組件的時候,組件名稱使用了駝峰命名,在引用的時候大寫的駝峰要改為小寫,同時兩個單詞之間 使用-鏈接

    • Vue.component第一個參數:組件的名稱,將來在引用組件的時候,就是一個標簽形式來引入的,第二個參數:
      Vue.extend 創建的組件,其中 template就是組件將來要展示的內容

    • 注意:不論是哪種方式創建出來的組件,組件的template 屬性指向的模板內容,必須有且只能有唯一的一個根元素。

    15 組件里的data

  • 組件可以有自己的data數據
  • 組件的data和實例中的data有點不一樣,實例中的data 可以為一個對象,但是組件中的data必須是一個方法。
  • 組件中的data 除了必須為一個方法之外,這個方法內部,還必須返回一個對象才行。
  • 組件中的data數據,使用方式,和實例中的data使用方式完全一樣!
  • 組件里data為什么必須是個方法返回個對象呢? 因為要確保每個實例里的數據是唯一的,獨有的。如果data里的數據是放在實例外部的,會被其他實例共享。
  • 16 組件切換

  • 組件里的切換 可以用 v-if 和 v-else 進行切換
    即標簽頁切換
  • <a href=""@click.prevent="flag=true">登錄</a> <a href=""@click.prevent="flag=flase">注冊</a><login v-if="flag"> </login><register v-else="flag"> </register>
    • vue 提供了 component,來展示對應名稱的組件
    • //component 是一個占位符:is屬性,可以用來指定要展示的組件的名稱 寫死的時候這個組件名要是個字符串,動態綁定時key普通寫法就好,但value必須是字符串。<component :is="'componentId'"> </component><component :is="oneName"> </component>data(){return{oneName:"login",} }

      17 父子組件通訊

    • 父子組件傳值,通過v-bind:(:)來傳值,通過props來接收值

    • 父組件用事件綁定機制傳遞方法給子組件—v-on 簡寫 @

    • //父組件中<component-name :children='children' //傳值@handle='show' //綁定方法></component-name>data(){return(){children:11} }methods:{show(data){}}
      • emit 英文原意: 是觸發,調用,發射的意思。
        @handle=show 父組件傳show方法給子組件。
        子組件接收父組件的方法,并用$emit把子組件的值傳給父組件
      • //子組件中methods:{handle(){this.$emit('func',{age:1,name:'搞事'})}}
        • 在父組件中接收子組件所有參數的同時,添加自定義參數
        • 1.子組件傳出單個參數時:// 子組件 this.$emit('test',this.param) // 父組件 @test='test($event,userDefined)'2.子組件傳出多個參數時:// 子組件 this.$emit('test',this.param1,this.param2, this.param3) // 父組件 arguments 是以數組的形式傳入 @test='test(arguments,userDefined)'

          tips:子組件中的data數據,并不是通過 父組件傳遞過來的,而是子組件自身私有的,比如子組件通過ajax,請求回來的數據,都可以放到data身上,data 上的數據都是可讀可寫的;

          18 使用 ref 獲取dom元素

          <h3 id='myh3' ref='myh3'> </h3>methods:{getElement(){console.log( this.$refs.myh3.innerText)} }//組件也可以使用ref,讓父組件調用子組件里的方法和屬性值 <login ref='mylogin'> </login>methods:{getElement(){//父組件調用子組件里的屬性值console.log(this.$refs.mylogin.msg)} }

          tips:

        • refs; s代表多個引用,會有多個dom元素。
        • ref英文是reference,值類型和引用類型。
        • 19 路由

          1.這是vue-router提供的元素,專門用來 當作占位符的,
          將來,路由規則,匹配到的組件,就會展示到這個router-view中去,所以:我們可以把router-view認為是一個占位符

          <router-view></router-view>
          • 1

    2.路由切換 模板寫法,默認渲染為一個a標簽,
    使用tag的span可以用來轉換模板的標簽名

    <router-link to="/login" tag='span' > 登錄 </router-link>
    • 1
    • 2
    • 3

    3.路由配置

    new VueRouter({ //路由匹配規則 routes:[{path:'/',redirect:'/login'}, {path:'login',component:login },{path:'/register',component:register }

    ]

    //路由高亮的類名
    linkActiveClass:‘myactive’
    })

    var vm=new Vue({
    el:’#app’,
    data:{},
    methods:{},
    router //將路由規則對象注冊到vm實例上,用來監聽Url地址的變化,然后展示對應的組件。
    })

    4.路由傳參

  • query
  • //獲取id this.$route.query.id
    • 1
    • 2
  • 在path上設置參數
  • //參數要一一對應不可缺失,不然可能會 造成路由的不匹配 < router-linkto="/login/12/ls" > {path:'/login/:id/:name',component:login }
  • params 新的方式可看文檔
  • 5.子路由

    <router-link to="/account/login" > </router-link>routes:[ {path:'/account',component:account,children:{{path:'login',component:login} } }]

    tips:

    • 每個路由規則,都是一個對象,這個規則對象,身上,有兩個必須的屬性。
    • 屬性1 是path,表示監聽,哪個路由鏈接地址;
    • 屬性2是component,表示,如果路由是前面匹配到的path,則展示component屬性對應的那個組件。
    • 子路由不能加/, 加了/ 會以根目錄為基準匹配,這樣不方便我們用戶去理解url地址
    • 超鏈接的to 一定要加上父路由

    注意:componen屬性值,必須是一個組件的模板對象,不能是組件的引用名稱

    20 命名視圖實現經典布局

    根據name 來找組件

    <router-view></router-view> <router-view name="left"></router-view> <router-view name="main"></router-view> var header={template:'<h1>header</h1>' }var leftBox={template:'<h1>leftBox</h1>' }var mainBox={template:'<h1>mainBox</h1>' }{path:'/',components:{'default':header,'left':leftBox,'main':mainBox} }

    21 watch

    監聽非dom元素

    watch:{'obj.a'(newValue,oldValue){ },immediate:false } watch:{'obj':{handler (newValue, oldValue) {}},deep:true //深程度監聽 性能消耗大}watch:{ //監聽路由'$route.path':{handler (newValue, oldValue) {}},//immediate:true代表如果在 wacth 里聲明了之后,就會立即先去執行里面的handler方法,如果為 false就跟我們以前的效果一樣,不會在綁定的時候就執行immediate:true }

    tips:

    • 用了obj.a 加上handle +immediate:true ,就可以監聽 對象里的值,如果是obj 加上 handle+deep true 也是可以監聽對象的屬性但是性能消耗大 一般是直接對象> > +屬性
    • 用handle 方法可以讓watch初始化就執行,如果不用 handle它就先不執行,待數據改變再執行。
    • 不要在watch 和computer 中去修改參與計算或者監聽的值 而是要生成新的值。

    22 computed 計算屬性

    computed:{'fullname':(){return } }

    23. render 函數注冊組件(vm[vue實例]的屬性)

    render:function(createElements){//createElements是一個方法,調用它,能夠把指定的 組件模板 渲染為html結構return createElements(login)//注意 這里 return 的結果,會替換頁面中el 指定的那個容器}

    tips: render和components區別 render 會把整個app里組件全部覆蓋掉一個app中只能放一個render組件components 可以多個,且不會覆蓋

    24. slot 插槽

    1.寫插槽

    <div v-if="layout === 'block'" class="layout-block" :class="scroll?'layout-scroll':''"><slot></slot> //匿名插槽</div>

    <!-- 左右塊 -->
    <div v-if=“layout === ‘both’” class=“d-flex jc-between”>
    <div class=“layout-both” :class=“scrollLeft?‘layout-scroll’:’’”>
    <slot name=“left”></slot> //有名字的插槽
    </div>
    <div class=“layout-both” :class=“scrollRight?‘layout-scroll’:’’”>
    <slot name=“right”></slot>
    </div>
    </div>

    2.使用插槽

    //有名字的插槽 # v-slot的縮寫是#<template #left></template><template v-slot="left" > </template>

    tips 區別對待v-slot="" 和v-slot:name; =和:的區別 一個是slot的name 一個是父組件獲取子組件的數據,插槽一定要用
    template包裹著

    <template>插槽的內容 </template>

    2.雜項

    1. nrm

    安裝 nrm

    • npm i nrm -g 全局安裝
    • nrm ls 顯示列表
    • nrm use npm 使用npm use 后有很多地址可選擇

    tips:nrm只是單純的提供幾個常用的下載包url地址,并能夠讓我們在這幾個地址之前,很方便的進行切換,但是,我們每次裝包的時候,使用的裝包工具,都是npm。和

    npm i cnpm -g 不一樣
    • 1

    2. webpack

    在網頁中會引用哪些常見的靜態資源

    • js

      • .js .jsx .coffee .ts(TypeScript)
    • css

      • .css .less .sass .scss
    • Image

      • .jpg .png .gif .bmp .svg
    • 字體文件(Fonts)

      • .svg .ttf .eof .woff .woff2
    • 模板文件

      • .ejs .jade .vue

    3. 熱部署

    webpack-dev-server 實現自動打包功能,瀏覽器不用刷新也能看到文件已經修改,打包的文件并沒有放在實際的物理磁盤上,而是直接托管到了,電腦的內存中,所以,我們在項目根目錄中,根本找不到這個打包好的文件,這文件和src、 dist、 node_modules 平級,有一個看不見的文件

    4. 熱更新

    hot 網頁不重載 直接更新 加快打包速度 不生成新文件

    "scripts":{"dev":"webpack-dev-ser ver --open --prot 3000 --contentBase src --hot " }

    配置文件中配置熱更新

    devServer:{hot:true 就熱更新了 }

    tips:webpage當中帶s都是數組

    5.webpack引入vue

    在 webpack 中 使用以下方式導入的Vue
    構造函數,功能并不完善,只提供了 runtime-only的方式,并沒有提供 像網頁中那樣的使用方式;

    閹割版 import Vue from 'vue'

    齊全版
    1.
    import Vue from ‘…/node_modules/vue/dist/vue.js’
    2.
    module.exports={
    resolve:{
    //設置 Vue被導入的時候的包的路徑
    alias:{
    “vue$”:“vue/dist/vue.js”
    }
    }
    }

    tips: 包的查找規則:

    • 找項目根目錄中有沒有node_modules的文件夾
    • 在 node_modules 中 根據包名,找對應的vue文件夾
    • 在vue文件夾中,找一個叫做package.json 的包配置文件
    • 在package.json 文件中,查找一個main屬性[main屬性指定了這個包在被加載時候的入口文件]
    • 改了webpake的包就需要重新運行項目

    6.在webpack中通過render展示組件

    如果想要通過vue,把一個組件放到頁面中去展示,vm 實例中的render函數可以實現

    render:function(createElement){return createElement(login) }

    //就一行可以省略{} 并且沒有花括號默認就有return,
    簡寫: render: c => c(login)

    tips: webpack中 如何使用Vue:

  • 安裝Vue的包
  • 由于在webpack中,推薦使用.vue這個組件模板文件定義組件,所以需要安裝 能解析這種文件的loader
  • 在main.js中,導入vue 模塊
    import Vue from 'vue'
  • 定義一個.vue 結尾的組件,其中,組件有三部分組成
  • 使用 import login from './login.vue' 導入這個組件
  • 創建 vm 的實例 var vm = new Vue ({el:'app',render:c=>c(login)})
  • 在頁面中創建一個id為app的div元素,作為我們vm實例要控制的區域
  • 7. export default 和 export

    • export default 向外暴露的成員,可以使用任意的變量來接收

    • 在一個模塊中,export default只允許向外暴露1次

    • 在一個模塊中,可以同時使用 export default 和 export 向外暴露成員

    • 使用 export 向外暴露的成員,只能使用{}的形式來接收,這種形式,叫做[按需導出]

    • export 可以向外暴露多個成員,同時,如果某些成員,我們在import的時候,不需要,則可以不在 { }中定義

    • 注意使用 export 導出的成員,必須嚴格按照導出時候的名稱,來使用{ } 按需接收

    • 使用 export 導出的成員,如果就想換個名稱來接收,可以使用 as 來起別名

    const arr={a:'1',b:'2'}export default arr

    /* export default {
    這個暴露是錯誤的所以當前注釋 一個js文件中只能暴露一次
    address:‘北京’
    }
    */

    export title=1
    import arr, {title as title1 } from ‘/xxx.js’

    8. router

    • render會把el指定的容器中,所有的內容都清空覆蓋,所有不要把路由的router-view和router-link 直接寫到el所控制的元素中

    • 注意 app這個組件,是通過vm 實例的render 函數,渲染出來的,render函數如果要渲染組件,渲染出來的組件,只能放到el: '#app'所指定的元素中;

    • Account 和GoodsList 組件,是通過路由匹配監聽到的,所以,這兩個組件,只能展示到屬于路由的

    <router-view></router-view>中去
    • 1
    • 子路由的應用場景在標簽頁切換

    9. scoped原理

    樣式的 scoped 是通過 css 的屬性選擇器來實現的 .aa[vsfp]{color:red}

    tips:vsfp是哈希值

    10. promise

    • 模擬 promise
    getFution(aa,callback){callback(aa) }

    getFution(aa,funtion(res){
    console.log (aa)
    })

    • 異步操作
    /* 每當new一個Promise實例的時候,就會立即執行這個異步操作中的代碼。也就是說,new的時候,除了能夠得到一個promise實例之外,還會立即調用 我們為 Promise 構造函數傳遞的那個funtion,執行這個function中的異步操作代碼。 可用一個函數包裹,這樣就可以不立即執行,用函數執行 */ var promise=new Promise(function(resolve,reject){異步操作,ajax函數等,而且可以自由輸出東西了resolve(true) reject(false) }) getFunction(){var promise=new Promise(function(){異步操作,ajax函數等,而且可以自由輸出東西了})}

    getFunction().then(
    function(data){
    console.log(err)
    },function(err){
    console.log(err)
    })

    正確使用方式

    getFunction(aa).then(function(data){console.log(data)return getFunction() --返回后,可以使用后續的then})

    .then(function(data){
    console.log(data)
    return getFunction()
    })
    .then(funtion(data){
    console.log(data)
    })
    //捕獲只放在最后面。前面有任何的異常都會終止
    .catch(function(data){
    console.log(data)
    }

    tips:在 then里面多寫個返回錯誤的方法是不可取的。

    11. vuex

    • vuex是為了保存組件之間共享數據而誕生的,如果組件之間 有要共享的數據,可以直接掛載到vuex中,而不必通過父子組件之間傳值了,如果組件的數據不需要共享,此時,這些不需要共享的私有數據,沒有必要放到vuex中;

    • vuex,存放共享數據,data 存放組件私有的數據 props存放父組件傳過來的數據

    • 操作vuex里的state

      • 直接操作store里的屬性值,不推薦這種做法this.$store.state.屬性值
        • 1
      • 推薦只通過mutations 提供的方法,才能操作對應的數據,
      mutations:{increment(state,payload){state.count++ }} this.$store.commit('方法名')
    • vuex里的getters

      如果store中state上的數據,在對外提供的時候,需要做一層包裝,那么推薦使用getters。

      optCount:state=>state.count this.$store.getters.***
      • 1
      • 2
    • tips: increment方法里的 state是屬于vuex里的state; count是state里的屬性 ;payload外部傳進來的值,用來修改state里屬性的值.。最多支持只能傳兩個參數,可以是數組和對象。

      12. ngrok

      可以映射本地80端口,把本地的映射為外網
      npm地址

      //npm下載 --感覺下的有點慢 換個路徑下比較好npm install ngrok -g //命令ngrok http 80
      • 1
      • 2
      • 3
      • 4

      tips: 需要開啟本地服務器,映射后只是映射www路徑,不是完整的程序路徑需要自己去補充完整

      13.public 目錄下的圖片如何用 require引入

      //第一種 圖片質量小的可以自動轉換為base64的 img: require("@/../public/img/home/user.jpg ")

      //第二種 這里可以把最前面的 / 看做是public
      /img/abnormal/Trash.png

      即 public/img/abnormal/Trash.png

      tips: @是指src目錄 … @的上一級目錄,再進入public


      3.性能優化建議

    • watch如果是obj 加上 handle+deep true 也是可以監聽對象的屬性但是性能消耗大

    • computer 里生成的值 會有緩存 不建議用函數去處理一些值得計算 而是用 computer 來計算值,這樣性能高。

    • :key ='id'
      id是列表返回的id 如果沒有id 就寫item 一般不建議 寫 index (eslint會有警告錯誤信息) 寫上key 是為了減少消耗 它會有個緩存。

    • v-once 和 v-model 的區別是 只會綁定一次 不會重新更新內容 可以 減少開銷 應用場景:只讀場景,不進行修改頁面內容的時候

    • v-for 和 v-if 不適合在同個div連用

      • 可在最外層套用一層template來解決
      <template v-for="(column, index) in btn"><el-button size="small":type='column.type':plain='column.plain':class='!isEmpty(column.style)&&[scope.$index + (currentPage - 1) * pageSize==column.style.index?column.style.className:""] '@click="handle(id&&!column.isGetAll?scope.row[id]:scope.row,column.lable,scope.$index + (currentPage - 1) * pageSize)":key='index'>{{column.lable}}</el-button></template>
    • this.$parent 可修改父組件值,但不建議,只讀就好

    • gzip 優化

      • vue配置 在前端生成帶有gz的文件
      • 輔助插件:compression-webpack-plugin
      const CompressionWebpackPlugin = require('compression-webpack-plugin') const productionGzipExtensions = ['js', 'css'] const isProduction = process.env.NODE_ENV === 'production'

      configureWebpack: config => {
      if (isProduction) {
      config.plugins.push(
      new CompressionWebpackPlugin({
      algorithm: ‘gzip’,
      test: new RegExp(’\.(’ + productionGzipExtensions.join(’|’) + ‘)$’),
      threshold: 10240,
      minRatio: 0.8
      })
      )
      }
      },

      ngnix服務端配置

      //配合前端的gzip在站點配置添加如下代碼: location ~* \.(css|js)$ {gzip_static on; }這是 nginx 的靜態 gzip功能,會自動查找對應擴展名的文件,如果存在 gzip 文件,就使用,如果沒有就用原文件

      //后端返回gzip
      gzip on;
      gzip_static on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_http_version 1.1;
      gzip_comp_level 2;
      gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;
      gzip_vary on;
      gzip_proxied expired no-cache no-store private auth;
      gzip_disable “MSIE [1-6].”;

    • cdn加速
    • <script src="https://unpkg.com/vue@2.6.10/dist/vue.runtime.min.js"></script><script src="https://unpkg.com/vuex@3.0.1/dist/vuex.min.js"></script><script src="https://unpkg.com/vue-router@3.0.3/dist/vue-router.min.js"></script><script src="https://unpkg.com/axios@0.19.0/dist/axios.min.js"></script><script src="https://unpkg.com/element-ui@2.9.2/lib/index.js"></script>
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      //有了config就按以下配置configureWebpack: config => {//cdn config.externals = {vue: 'Vue',vuex: 'Vuex','vue-router': 'VueRouter',axios: 'axios'}if (isProduction) {config.plugins.push(new CompressionWebpackPlugin({algorithm: 'gzip',test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),threshold: 10240,minRatio: 0.8}))}}
    • 網頁中引入的靜態資源多了以后有什么問題?
      • 網頁加載速度慢, 因為我們要發起很多的二次請求;
      • 要處理錯綜復雜的依賴關系

      解決方案:

    • 合并、壓縮、精靈圖、圖片的base64編碼 、cdn
    • 可以使用之前學過的requireJs、也可以使用webpage
    • 建立不同的環境變量(開發、測試、正式)
    • 一、建立環境配置文件 在package.json 同級的目錄下 建立3個文件 1 .env.development --開發環境 (本地環境) 2 .env.production --正式環境 (正式線服務器--打包) 3 .env.test --測試環境 (測試線服務器--打包)

      二、在每個文件中寫入具體的配置內容

      /.env.development文件的內容/
      NODE_ENV = ‘development’
      VUE_APP_CURRENT_MODE = ‘development’

      /.env.production文件的內容/
      NODE_ENV = ‘production’
      VUE_APP_CURRENT_MODE = ‘production’

      /.env.test/
      NODE_ENV = ‘production’
      VUE_APP_CURRENT_MODE = ‘test’

      三、在package.json 中寫入

      1.在純粹的vue_cli3.x配置如下

      “scripts”: {
      “serve”: “vue-cli-service serve --mode development”,
      “build”: “vue-cli-service build --mode production”,
      “build:test”: “vue-cli-service build --mode test”,
      },

      2.在uni-app下的vue_cli3.x的配置

      “scripts”: {
      “serve”: “npm run dev:h5 – development”, //修改點
      “build”: “npm run build:h5 – production”, //修改點
      “build:test”: “npm run build:h5 – test”, //修改點
      “build:h5”: “cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build --mode”, //修改點
      “build:mp-alipay”: “cross-env NODE_ENV=production UNI_PLATFORM=mp-alipay vue-cli-service uni-build”,
      “build:mp-baidu”: “cross-env NODE_ENV=production UNI_PLATFORM=mp-baidu vue-cli-service uni-build”,
      “build:mp-toutiao”: “cross-env NODE_ENV=production UNI_PLATFORM=mp-toutiao vue-cli-service uni-build”,
      “build:mp-weixin”: “cross-env NODE_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build”,
      “dev:h5”: “cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve --mode”, //修改點
      “dev:mp-alipay”: “cross-env NODE_ENV=development UNI_PLATFORM=mp-alipay vue-cli-service uni-build --watch”,
      “dev:mp-baidu”: “cross-env NODE_ENV=development UNI_PLATFORM=mp-baidu vue-cli-service uni-build --watch”,
      “dev:mp-toutiao”: “cross-env NODE_ENV=development UNI_PLATFORM=mp-toutiao vue-cli-service uni-build --watch”,
      “dev:mp-weixin”: “cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch”,
      “info”: “node node_modules/@dcloudio/vue-cli-plugin-uni/commands/info.js”
      },

      tips:以上不同環境的切換,修改點主要就是mode – ‘環境變量’

      4. 各種插件的介紹和引用

    • postcss-plugin-px2rem
      配置文件名postcss.config.js vue-cli3.x腳手架自帶的px轉rem等單位的配置,建立腳手架的時候選擇分離 不然配置在josn文件中不好配置
    • module.exports = {plugins: [require('autoprefixer')(),require('postcss-plugin-px2rem')({rootValue: 192, //設計圖的寬度/10unitPrecision: 10, //換算的rem保留幾位小數點mediaQuery: true,minPixelValue: 3// exclude:/node_modules|folder_name/i,把第三方的框架排除掉})] }
    • babel-plugin-transform-remove-console
      刪除console,在根目錄中新建個.babelrc的文件,在以下文件中配置
    • //第一種 {"env": {"production": {"plugins": [["transform-remove-console", { "exclude": ["error", "warn"] }]]}} }

      //第二種

      一、建立環境配置文件
      在package.json 同級的目錄下 建立3個文件
      1 .env.development --開發環境 (本地環境)
      2 .env.production --正式環境 (正式線服務器–打包)
      3 .env.test --測試環境 (測試線服務器–打包)

      二、在每個文件中寫入具體的配置內容

      /.env.development文件的內容/
      NODE_ENV = ‘development’
      VUE_APP_CURRENT_MODE = ‘development’

      /.env.production文件的內容/
      NODE_ENV = ‘production’
      VUE_APP_CURRENT_MODE = ‘production’

      /.env.test/
      NODE_ENV = ‘production’
      VUE_APP_CURRENT_MODE = ‘test’

      三、在package.json 中寫入

      “scripts”: {
      “serve”: “vue-cli-service serve --mode development”,
      “build”: “vue-cli-service build --mode production”,
      “build:test”: “vue-cli-service build --mode test”,
      },

      四、在babel.config.js 中寫
      let transformRemoveConsolePlugin = [];
      if (process.env.VUE_APP_CURRENT_MODE === “production”) {
      transformRemoveConsolePlugin = [
      [“transform-remove-console”, { exclude: [“error”, “warn”] }]
      ];
      }

      module.exports = {
      presets: ["@vue/app"],
      plugins: […transformRemoveConsolePlugin]
      };

    • html-webpack-plugin
      當使用 html-webpack-plugin 之后,我們不再需要手動處理bundle.js的引用路徑了,因為這個插件,已經幫我們自動創建了一個合適的script,并且,引用了正確的路徑
    • /*導入在內存中生成html頁面的插件,只要是插件,都一定要放到plugins節點中去 */

      const htmlWebpackPlugin=require(“html-webpack-plugin”)

      //創建一個 內存中 生成html 頁面的插件
      new htmlWebpackPlugin({
      template:path.join(__dirname,’./src/index.html’)
      filename:‘index.html’
      })

      //這個節點,用于配置 所有 第三方模塊 加載器 module:{rules:[{test:/\.css$,use:[]}] }
    • prerender-spa-plugin
    • 構建階段生成匹配預渲染路徑的 html 文件

      npm install prerender-spa-plugin --save vue.config.js

      const PrerenderSPAPlugin = require(‘prerender-spa-plugin’)
      const Renderer = PrerenderSPAPlugin.PuppeteerRenderer

      configureWebpack: config => {
      if (isProduction) {
      config.plugins.push(
      new CompressionWebpackPlugin({
      algorithm: ‘gzip’,
      test: new RegExp(’\.(’ + productionGzipExtensions.join(’|’) + ‘)$’),
      threshold: 10240,
      minRatio: 0.8
      })
      ),
      config.plugins.push(
      new PrerenderSPAPlugin({
      staticDir: path.join(__dirname, ‘dist’),
      routes: [
      // ‘/’
      ‘/login’
      // ‘/show’,
      // ‘/websocket’,
      // ‘websocket2’,
      // ‘/websocket3’,
      // ‘/home’,
      // ‘abnormal/AbnormalStatis’,
      // ‘abnormal/FocusCrowd’,
      // ‘abnormal/FocusDetail’,
      // ‘abnormal/ScaleDetail’,
      // ‘abnormal/WarnSetup’,
      // ‘abnormal/WarnDetail’,
      // ‘abnormal/WarnLists’,
      // ‘abnormal/PsychMonth’,
      // ‘abnormal/PsychTeacher’,
      // ‘abnormal/PsychList’,
      // ‘laboratory/sports/MoveClock’,
      // ‘laboratory/sports/ClockDetail’,
      // ‘activity/ActList’,
      // ‘activity/ActForm’
      ],

      minify: {minifyCSS: true, // css壓縮removeComments: true // 移除注釋},server: {port: 8080},//忽略打包錯誤ignoreJSErrors: true,phantomOptions: '--web-security=false',maxAttempts: 10,renderer: new Renderer({injectProperty: '__PRERENDER_INJECTED',inject: {foo: 'bar'},headless: false,renderAfterTime: 5000,renderAfterDocumentEvent: 'render-event'})})) }

      },

      main.jsnew Vue({mounted() {document.dispatchEvent(new Event('render-event')) }}).$mount('#app')

      tips: main.js中的render-event,要和 renderAfterDocumentEvent:'render-event' 一一對應 ,publicPath 目前驗證必須是/ 不能自定義文件夾

    總結

    以上是生活随笔為你收集整理的vue知识点归纳与总结(笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    精品国产1区二区 | 中文字幕资源在线 | 日本护士三级少妇三级999 | 天天干.com| 午夜视频在线观看一区 | 伊人色播| 日韩精品中文字幕久久臀 | 色99久久| 免费看毛片在线 | av一级免费| 在线观看www视频 | 久久精品黄| 国产成人黄色网址 | 国产亚洲精品久久久久久久久久久久 | a天堂在线看 | 人人狠狠| 亚洲免费a | 97色免费视频 | 精品视频97| 91黄色免费网站 | 人人干干人人 | 免费av看片 | 五月婷婷六月丁香激情 | 91日韩在线 | 粉嫩一区二区三区粉嫩91 | 在线岛国av | 亚洲美女在线一区 | 在线播放一区 | 免费a网| 亚洲美女视频在线观看 | 国产91精品一区二区绿帽 | av成人免费在线看 | 免费国产亚洲视频 | 国产色女 | 亚洲影院色 | 日韩视频1 | 你操综合 | 国产a级免费 | 激情综合婷婷 | 日本mv大片欧洲mv大片 | 福利久久久 | 婷婷色中文网 | 国产精品videoxxxx | 97色国产| 91亚洲精品国偷拍自产在线观看 | 欧美成人日韩 | 伊人婷婷激情 | 九九免费在线观看 | av线上看| 精品一区二区电影 | 午夜国产成人 | 91入口在线观看 | 在线播放一区二区三区 | 久久av免费| 97视频在线观看播放 | 久久天天躁夜夜躁狠狠85麻豆 | 亚洲全部视频 | 三级黄色片在线观看 | 国产午夜三级一区二区三桃花影视 | 久操视频在线免费看 | 精品国产乱码一区二区三区在线 | 天堂在线免费视频 | 91九色国产蝌蚪 | 午夜精品一区二区三区视频免费看 | 欧美日韩高清一区二区 | 日本久久久精品视频 | 日日夜夜天天 | 超黄视频网站 | 日韩电影在线一区 | www·22com天天操 | 日韩在线中文字幕视频 | 国产三级午夜理伦三级 | 天天操天天操天天操天天操天天操 | 久久久久这里只有精品 | 99热官网 | 99热播精品 | 国产精品久久久久久久久毛片 | 免费看片网页 | 中文字幕在线网址 | 水蜜桃亚洲一二三四在线 | 黄网站大全 | 一区精品在线 | 日本xxxx.com | 免费高清在线观看成人 | 日韩欧美91 | 人人看看人人 | 日本在线中文在线 | 国产精品国产精品 | 99久久精品免费看国产麻豆 | 日韩系列在线观看 | 久久久久在线视频 | 精品专区 | 久久久国产精品电影 | 狠狠gao | 国产精品99久久久久久武松影视 | 日韩经典一区二区三区 | 欧美色图视频一区 | 国产尤物一区二区三区 | 九七人人干 | 国产在线播放一区二区三区 | 国产中文字幕在线免费观看 | 免费久久网 | 最近字幕在线观看第一季 | 成人在线视频免费观看 | 成人网在线免费视频 | 久久免费看 | 国产青春久久久国产毛片 | 亚洲欧洲精品一区二区精品久久久 | 香蕉影视app | 天天干,天天干 | 香蕉视频国产在线 | 日韩电影久久久 | 色婷婷久久久综合中文字幕 | 日韩 在线观看 | 国产精品一区二区吃奶在线观看 | 91成人精品一区在线播放69 | 日韩成人在线一区二区 | 免费91在线 | 亚洲女人天堂成人av在线 | 日韩精品欧美精品 | 波多野结衣在线播放一区 | 欧美日韩免费观看一区二区三区 | 丁香六月伊人 | 色婷婷综合久久久久中文字幕1 | 999电影免费在线观看 | 久久久久久欧美二区电影网 | 久草免费色站 | 九九九九九九精品任你躁 | 午夜成人免费影院 | 丁香九月婷婷 | 国产亚洲一级高清 | 国产美女精品久久久 | 日本黄色免费播放 | 中文字幕在线观看资源 | 国产乱对白刺激视频不卡 | 就色干综合| 欧美国产三区 | 日韩欧美在线视频一区二区 | 欧美小视频在线 | 日韩亚洲国产中文字幕 | 黄色片软件网站 | 国产黄a三级三级三级三级三级 | 69精品视频| 国产一区二区高清视频 | 天天色草 | 婷婷丁香狠狠爱 | 色婷婷综合久色 | 激情黄色一级片 | 伊人网综合在线观看 | 国产精品久久久久久久久久三级 | 亚洲精品中文在线资源 | 97精品超碰一区二区三区 | 日韩av电影免费在线观看 | 成人av电影免费观看 | 日韩欧美第二页 | 性日韩欧美在线视频 | 国产一区二区影院 | 日韩精品一区二区三区不卡 | 人人爽爽人人 | 成人97人人超碰人人99 | 午夜私人影院久久久久 | 天天操天天摸天天射 | 午夜精品电影一区二区在线 | 国产精品一区二区三区在线免费观看 | 激情久久久久久久久久久久久久久久 | 色综合久久88 | 国产精品久久久区三区天天噜 | 在线免费黄色av | 在线免费观看麻豆视频 | 色婷婷九月 | 免费的黄色的网站 | 不卡中文字幕av | 在线视频18在线视频4k | 毛片在线播放网址 | 色午夜影院 | 国产午夜精品一区二区三区在线观看 | 国产一级黄色av | 国产婷婷| 最新不卡av | 国产福利在线不卡 | 欧美在线视频精品 | 久久亚洲二区 | 菠萝菠萝在线精品视频 | 99国产精品久久久久久久久久 | 久草精品在线播放 | 不卡av电影在线 | 中国一级片在线播放 | 成 人 黄 色视频免费播放 | 6080yy精品一区二区三区 | 亚洲v欧美v国产v在线观看 | 亚洲欧洲av在线 | 国产精品免费不卡 | 99视频黄 | 日韩高清在线一区 | 在线看污网站 | 国产精品中文字幕在线播放 | 在线午夜av | 91久久久国产精品 | 啪啪免费试看 | 国产日韩视频在线 | 五月宗合网| 国产aaa毛片 | 国产精品地址 | 国产手机视频在线 | 国内成人精品2018免费看 | 91久久一区二区 | 99国产成+人+综合+亚洲 欧美 | 久久精品一级片 | 久久久久久久久久久久av | 日韩av电影网站在线观看 | 在线观看免费版高清版 | 亚洲精品久久激情国产片 | 国产福利精品视频 | 在线视频一区二区 | 国产黄色一级片在线 | 人人干人人艹 | 亚洲欧美视频网站 | 久久精品美女视频 | 日韩网站在线观看 | 欧亚久久 | 夜夜躁天天躁很躁波 | 五月婷婷在线视频 | 亚洲 综合 精品 | 成人一级片在线观看 | 久久久久久久久黄色 | av线上免费看 | 国产人成看黄久久久久久久久 | 成人免费大片黄在线播放 | 99久久精品久久久久久清纯 | 视频在线观看入口黄最新永久免费国产 | 狠狠色狠狠色终合网 | 黄色在线观看www | 午夜精品三区 | 性色在线视频 | 精选久久| 国产精品网红福利 | 欧美一区三区四区 | 一区三区视频在线观看 | 在线观看播放av | 国产精品久久久久婷婷二区次 | 欧美福利久久 | 久久超级碰视频 | 日韩在线观看精品 | 欧美做受69 | 日韩高清 一区 | 草免费视频 | 在线v片免费观看视频 | 欧美成人一区二区 | 999久久久久久久久6666 | 日韩欧美一区二区三区黑寡妇 | 婷婷在线视频观看 | 五月香视频在线观看 | 中文在线www | 久草精品视频 | 四虎成人精品在永久免费 | 久久综合毛片 | 丰满少妇一级片 | 黄色一级大片在线观看 | 国产在线久久久 | 精品夜夜嗨av一区二区三区 | 日色在线视频 | 五月婷婷丁香 | 99国产成+人+综合+亚洲 欧美 | 就要干b| 黄色不卡av | 亚洲五月综合 | 久久精品婷婷 | 中文网丁香综合网 | 色全色在线资源网 | 99综合视频 | 亚州av免费 | 欧美精品久久久久久久久久 | 国产精品手机在线播放 | 操操操com | 欧美日韩aaaa | 国产区高清在线 | 91成人精品视频 | 国产精品久久久久av福利动漫 | 91在线视频一区 | 亚洲影院天堂 | 国产这里只有精品 | 欧美日韩国产亚洲乱码字幕 | 国产精品一区二区免费 | 中文字幕亚洲在线观看 | 狠狠躁夜夜躁人人爽视频 | 日韩午夜视频在线观看 | 欧美一级艳片视频免费观看 | 久久精品综合网 | 五月天综合色 | 国产精品手机播放 | 国产黄色免费观看 | 成人理论在线观看 | 亚洲国产精品va在线看 | 麻豆国产在线视频 | 日本视频高清 | 国产精品免费久久 | 国产成人黄色 | 日韩精品久久久久久 | 日韩在线免费视频观看 | 婷婷丁香色 | 国产精品2019| 香蕉视频在线免费 | 91精品婷婷国产综合久久蝌蚪 | 97人人爽 | 91在线国内视频 | 伊人永久在线 | 亚洲涩涩网| 欧美ⅹxxxxxx | 在线看欧美 | 人人爱人人爽 | 国产精品资源在线观看 | 亚洲欧美日韩精品久久久 | 免费看国产黄色 | 狠狠干五月天 | 精品黄色片| 99精品视频一区二区 | 国产一卡二卡在线 | 国产分类视频 | 久久看视频 | 国产在线观看99 | 黄色小说网站在线 | 亚洲精品女人 | 天天干天天摸 | 久草观看 | 国产精品免费视频网站 | 免费观看黄色av | 国产精品久久久99 | 国产97视频在线 | 日韩在线免费视频观看 | 国产1区2区3区精品美女 | 国产亚洲综合精品 | 波多野结衣小视频 | 人人玩人人添人人 | 国产日韩一区在线 | 人人爱在线视频 | 欧美一区免费观看 | 91精品一区国产高清在线gif | 久久人人97超碰国产公开结果 | 在线va网站 | 国产高清一区二区 | 亚洲高清视频在线播放 | 久久天堂网站 | 丁香婷婷激情五月 | 免费看一级黄色大全 | 最近中文字幕mv免费高清在线 | 亚洲九九九在线观看 | 中文亚洲欧美日韩 | 97超碰精品| 草久久久久久 | 在线观看完整版免费 | 九九色综合 | 国产高清在线免费观看 | av一级一片 | 精品久久久久久久久久久院品网 | 91精品爽啪蜜夜国产在线播放 | 日韩免费在线一区 | 国产精品久久久一区二区三区网站 | 亚洲精品tv久久久久久久久久 | 91精品欧美一区二区三区 | 免费色网| 最近高清中文在线字幕在线观看 | 毛片精品免费在线观看 | 国产色 在线 | 美女免费视频黄 | 夜夜干夜夜 | 97av精品 | 97电影在线 | 视频精品一区二区三区 | 人人爽人人爽 | 日韩a级黄色片 | 久久久久成人免费 | 欧美日本在线视频 | 国产 亚洲 欧美 在线 | 日韩中文在线电影 | 国产黄网站在线观看 | 99精品免费久久久久久日本 | 久久在线观看 | 又黄又爽又无遮挡的视频 | 一区二区三区在线不卡 | 免费高清在线观看电视网站 | 国产大片黄色 | 成人在线免费看视频 | 99这里只有精品视频 | 色综合天天综合网国产成人网 | 成人久久久久 | 日韩超碰在线 | 女人魂免费观看 | 91色国产在线 | 亚洲精品久久久蜜臀下载官网 | 成人试看120秒 | 很黄很污的视频网站 | 国产黄色免费在线观看 | 成人aaa毛片| 欧美久久久久久久久久久 | 免费日韩av电影 | 一区二区精品在线 | 婷婷六月中文字幕 | 日本在线观看视频一区 | 国产精品福利无圣光在线一区 | 精品久久久久免费极品大片 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 日韩啪啪小视频 | 成人免费观看视频大全 | 97超视频 | 国色综合 | 天天操夜夜叫 | 999毛片| 99精品视频在线播放观看 | 福利视频网址 | 美女免费黄视频网站 | 亚洲一级免费电影 | 人人爽人人搞 | 欧美日韩精品在线视频 | 成人av免费看 | 精品国产乱码 | 免费观看成人网 | 黄污在线观看 | 国产精彩视频一区 | 天天综合久久综合 | 四虎影视成人永久免费观看亚洲欧美 | 国产精品高清免费在线观看 | 亚洲精品国产精品国自产观看 | 国产中年夫妇高潮精品视频 | 国产一区自拍视频 | 亚洲欧美日韩一二三区 | 国产精品久久久久久久7电影 | 国产天天爽 | 欧美一级爽 | 久久爱导航 | 一区二区精品国产 | 一区二区三区四区不卡 | 色av色av色av | 久久精品在线 | 日韩网站在线免费观看 | 国产精品日韩欧美 | 欧美乱熟臀69xxxxxx | 久久久久中文 | 97精品超碰一区二区三区 | 视频在线99 | 亚洲精选视频在线 | 国产夫妻av在线 | 香蕉久久久久 | www最近高清中文国语在线观看 | 免费网站在线观看人 | 日韩精品中文字幕有码 | 草久在线观看视频 | 日韩在线观看不卡 | 日韩在线视频观看 | 在线视频你懂得 | 操久久免费视频 | 久久免费的精品国产v∧ | 97国产大学生情侣酒店的特点 | 99精品视频免费全部在线 | 中文字幕资源网 国产 | 免费在线观看成人av | 中文字幕有码在线 | 欧美一区二区三区激情视频 | 亚洲日本韩国一区二区 | 成人黄色在线电影 | 97超视频在线观看 | 欧美日韩一区三区 | 天天射天天射天天 | 久草视频在线新免费 | 毛片在线网 | 亚洲精品免费在线观看视频 | 一二三区av| 欧美伦理一区二区三区 | 国产 亚洲 欧美 在线 | 国产美女精品视频免费观看 | 日本性视频 | 国产精品久久久久久久av大片 | 午夜精品久久久久 | 精品日韩在线一区 | 成人黄色电影在线 | 亚洲黄色在线 | 超碰国产在线播放 | 欧美激情视频免费看 | 国产精品黄色影片导航在线观看 | 99精品国产99久久久久久福利 | 亚洲一区二区视频在线播放 | 国产呻吟在线 | 在线看片成人 | 91麻豆精品国产 | 四虎成人网 | 激情五月视频 | 91自拍视频在线 | 日韩三级在线观看 | 日韩午夜网站 | 国产高清久久久 | 一区二区三区免费在线播放 | 欧美日韩中 | 国产精品四虎 | 日本三级在线观看中文字 | 亚洲午夜精品久久久久久久久久久久 | 欧美日韩性视频 | 国产黄色片免费在线观看 | 国产高清免费视频 | 国产女人40精品一区毛片视频 | 日韩电影一区二区在线 | 久久精品网站免费观看 | 亚洲成人av片 | www.黄色小说.com | 很黄很黄的网站免费的 | 色噜噜在线观看 | 久久无码精品一区二区三区 | 亚在线播放中文视频 | 狠狠干夜夜操 | 国产高清视频免费最新在线 | 99精品亚洲 | 91一区啪爱嗯打偷拍欧美 | 9色在线视频 | 国产96av| 天天看天天操 | 五月综合色 | 色综合天天 | 国产亚洲午夜高清国产拍精品 | 亚洲成人精品久久 | 精品久久久久久久久中文字幕 | 美女一级毛片视频 | 精品久久久亚洲 | 免费在线观看a v | 亚洲一区视频免费观看 | 人人干人人搞 | 99精品小视频 | 成人在线视频网 | 9999国产精品| 日韩二区三区 | 91中文字幕在线观看 | 国内丰满少妇猛烈精品播 | 人人干在线观看 | 69精品| 精品国产欧美一区二区 | 久久久久国产视频 | 成人av中文字幕 | 夜夜爽www| 99久久er热在这里只有精品15 | 国产最新福利 | 中文字幕免费一区二区 | 在线观看亚洲精品 | 中文有码在线视频 | 国产成人精品国内自产拍免费看 | v片在线播放 | 亚洲国产中文字幕 | 91九色精品| 九九视频在线观看视频6 | 中文字幕一区在线 | www.亚洲精品 | 2021国产在线 | 中文字幕在线免费观看 | 超碰在线资源 | 亚洲首页 | 丁香花在线观看免费完整版视频 | 免费看片黄色 | 亚洲一区欧美激情 | 亚洲一级电影在线观看 | 久久免费资源 | 丁香婷婷激情五月 | 成人免费视频网 | 91丨九色丨国产丨porny精品 | 久精品视频在线 | 91精品毛片| 99色免费视频 | 国产96在线视频 | 成人毛片一区 | 永久免费的啪啪网站免费观看浪潮 | 日韩精品久久一区二区 | 欧美韩国日本在线观看 | 国产成人精品一区二区在线观看 | 国产精品一区二区av日韩在线 | 亚洲国产播放 | 久久久久成人精品 | 日韩av网站在线播放 | 亚洲综合色站 | 欧美日韩网站 | 999久久国产精品免费观看网站 | 久久国产网 | 日韩免费看的电影 | 一区二区免费不卡在线 | 欧美激情亚洲综合 | 操天天操 | 国产一区二区三区免费在线 | 91视频久久久 | 久草国产在线 | 91av手机在线| 久久伊人免费视频 | 亚洲小视频在线 | 日日干天夜夜 | 日躁夜躁狠狠躁2001 | 91片黄在线观看 | 91在线在线观看 | www成人精品 | 中文字幕中文字幕中文字幕 | 日韩中文字幕在线不卡 | 在线观看av的网站 | 午夜精品久久久久久久爽 | 亚洲精品www久久久 www国产精品com | 久久只有精品 | 99产精品成人啪免费网站 | 麻豆果冻剧传媒在线播放 | 99精品热视频只有精品10 | 国产成人精品亚洲精品 | 欧美日韩高清在线观看 | 在线a人v观看视频 | 日本九九视频 | 日韩欧美在线一区二区 | 日本黄色免费网站 | 99精品久久99久久久久 | 亚洲国产成人精品在线 | 久久久久久久网 | 婷婷深爱五月 | 美女网站在线免费观看 | 丰满少妇对白在线偷拍 | 日韩在线视频线视频免费网站 | 久久九九影视网 | 国产永久免费高清在线观看视频 | 99精品久久久久 | 国产网站色 | 天天综合网在线观看 | 最新日本中文字幕 | 中文字幕二区在线观看 | 成人久久综合 | 亚洲免费成人av电影 | 国产裸体视频bbbbb | 91九色porn在线资源 | 日韩精选在线 | 三级av在线| 久久99热国产 | 婷婷丁香花| 香蕉在线视频观看 | 久久久久久伊人 | 免费精品人在线二线三线 | 国产一级二级av | 国产啊v在线 | 成人久久18免费 | 91人人揉日日捏人人看 | 97在线观看免费高清完整版在线观看 | 国产免费高清视频 | 免费色视频在线 | 91丨九色丨蝌蚪丨对白 | 国产中年夫妇高潮精品视频 | 久草a在线| 日本精油按摩3 | 人人澡超碰碰97碰碰碰软件 | 午夜狠狠干 | 日日干av | 狠狠操狠狠干天天操 | 免费av网址大全 | 久久久久电影 | 在线综合 亚洲 欧美在线视频 | 黄色大片免费播放 | 亚洲精品久久久久58 | 国产小视频在线免费观看视频 | 亚洲九九影院 | 国产日韩视频在线观看 | 亚洲婷婷综合色高清在线 | 久久国产亚洲视频 | 国产精品久久精品国产 | 91久久人澡人人添人人爽欧美 | 四虎影视成人永久免费观看亚洲欧美 | 啪一啪在线 | 亚洲人在线7777777精品 | 久久久久国产精品免费 | 国产精品免费观看视频 | 国内丰满少妇猛烈精品播放 | 精品在线一区二区 | 欧美一级片在线播放 | 黄在线免费看 | 五月天最新网址 | 国产免费一区二区三区最新6 | 亚洲精品在线资源 | 国产精品一区二区av影院萌芽 | www狠狠操| 91麻豆精品国产自产在线 | 成年人在线看视频 | 西西大胆啪啪 | 国产亚洲永久域名 | 9色在线视频 | 免费三级在线 | 涩涩色亚洲一区 | 国产毛片在线 | 99久久精品免费 | 久久精品艹 | 91亚洲狠狠婷婷综合久久久 | 国产精品乱码久久久久久1区2区 | 在线韩国电影免费观影完整版 | 久草网在线观看 | 玖玖视频在线 | 亚洲午夜精品福利 | 国产精品96久久久久久吹潮 | 狠狠躁夜夜躁人人爽视频 | 精品产品国产在线不卡 | 天天操综合 | www五月天 | 欧美三级免费 | 久草在线免 | 国产做爰视频 | 久久6精品 | 日韩国产精品久久久久久亚洲 | 91在线日本| 99se视频在线观看 | 免费看十八岁美女 | 亚洲国产黄色 | 精品爱爱 | 日韩一区正在播放 | 狠狠色丁香婷婷综合欧美 | 日韩精选在线观看 | 99这里只有久久精品视频 | 91成人精品国产刺激国语对白 | 国产一性一爱一乱一交 | 成人影视片 | 午夜一级免费电影 | 午夜丁香网 | 亚洲国产精品激情在线观看 | 久久精品99久久久久久2456 | 999电影免费在线观看2020 | 在线观看完整版免费 | 五月丁香 | 去干成人网 | 日韩免费电影网 | av黄网站 | 91av资源在线 | 激情偷乱人伦小说视频在线观看 | 欧美性超爽 | 成人一区二区三区在线 | 最近中文字幕视频网 | 久久久久久在线观看 | 国产一线二线三线性视频 | 97人人艹 | 欧美最新另类人妖 | 国产专区在线视频 | 国产视频精品视频 | 91亚洲综合| 久久伦理视频 | 美女福利视频一区二区 | 久久香蕉国产精品麻豆粉嫩av | 少妇做爰k8经典 | 黄色免费高清视频 | 国内精品久久久久久久影视简单 | 91精品国产乱码久久 | 午夜久久网 | 国产精品v欧美精品v日韩 | av在线色 | 久久综合一本 | 国产特级毛片aaaaaaa高清 | 91av免费观看| 日韩av女优视频 | 日韩中文字幕免费视频 | 亚洲精品中文在线 | 日本女人的性生活视频 | 日本中文字幕电影在线免费观看 | 国产精品免费一区二区 | 成人在线免费视频观看 | 奇米影视777影音先锋 | 日韩在线观看一区二区三区 | 欧美国产日韩久久 | 欧美成人中文字幕 | www五月婷婷 | 日韩在线视频网 | 欧美大片第1页 | 青草视频在线 | 99精彩视频| 波多野结衣视频一区二区三区 | 久久av一区二区三区亚洲 | 九九在线高清精品视频 | 国产精品精品久久久 | 人成免费网站 | 婷婷六月天丁香 | 欧美一性一交一乱 | 国内免费久久久久久久久久久 | 91在线视频导航 | 亚洲国产精品女人久久久 | 999久久久久久久久6666 | 欧美日本中文字幕 | 国产精品18久久久久vr手机版特色 | 日韩网页 | 国产成人亚洲在线观看 | 色.www| 亚洲欧美综合精品久久成人 | 国产精品1区2区 | 久久精品国产亚洲 | 色黄久久久久久 | 亚洲人精品午夜 | 色视频网站在线观看一=区 a视频免费在线观看 | 久久久久国产精品午夜一区 | 2021国产视频 | 亚洲深夜影院 | 精品国产乱码久久久久久久 | 欧美日韩在线免费观看视频 | 久久伦理电影 | 另类五月激情 | 黄色成人免费电影 | 国产直播av | 中文字幕频道 | 五月激情视频 | 欧美视频在线二区 | 国产一区二区三精品久久久无广告 | 欧美人交a欧美精品 | 中文 一区二区 | 免费a视频在线观看 | 人人干人人做 | 久久电影中文字幕视频 | 中文字幕在线视频网站 | 精品久久久久久亚洲综合网站 | 色精品视频 | 亚洲国产精品va在线看 | 天天色天天草天天射 | 日韩性xxxx | 久久在线免费观看 | 色鬼综合网 | 久草新在线 | 欧美大片在线观看一区 | 香蕉手机在线 | 久99久中文字幕在线 | 日韩av电影手机在线观看 | 天天操夜| 国产成人精品亚洲精品 | 黄色三级免费网址 | 又爽又黄又刺激的视频 | 超碰97在线资源 | 亚洲国产伊人 | 丁香五月亚洲综合在线 | 久久午夜精品视频 | 国产精品自产拍在线观看蜜 | 久久99精品久久只有精品 | 超碰人人做 | 久久久久久久久久久高潮一区二区 | 五月天综合 | 黄色日本免费 | 久久歪歪 | 久久精品激情 | 91av影视 | 日韩欧美一区二区在线观看 | 91网站观看| 国产精品免费一区二区三区在线观看 | 西西444www大胆高清图片 | 久久久久久久久久久久电影 | www.干| 探花视频在线观看免费版 | 日韩免 | 日本在线观看视频一区 | 摸阴视频 | 久久一区国产 | 久久综合影院 | 深爱五月激情五月 | 成人免费视频播放 | 九九久久免费 | 一区二区 精品 | 日韩有码中文字幕在线 | 日韩精品视频久久 | 久久久久成人精品亚洲国产 | 国产精品网址在线观看 | 国产高清小视频 | 国产成人一区二区三区 | 日日躁夜夜躁xxxxaaaa | 看毛片网站 | 中文字幕黄网 | 亚洲国产高清在线观看视频 | 国产精品久久久久永久免费 | 狠狠操影视 | 欧美日韩在线观看一区二区 | 国产在线观看,日本 | 久久久亚洲精华液 | a天堂免费 | 97在线视频网站 | 99免费在线播放99久久免费 | 国内精自线一二区永久 | 18久久久久久 | 97国产一区二区 | 国产极品尤物在线 | 日本成人黄色片 | 国产精品区二区三区日本 | 久操中文字幕在线观看 | 久久天堂亚洲 | 国内外成人免费在线视频 | 日韩av高潮 | 91视频麻豆| 中文字幕乱码亚洲精品一区 | 国产日韩精品在线观看 | 91在线最新 | 超碰在线最新地址 | 国产精品99蜜臀久久不卡二区 | 欧美永久视频 | 国产成人333kkk | 中文字字幕在线 | 国产成人精品一区二区在线观看 | 亚洲精品国 | 日韩精品在线观看av | 久久99这里只有精品 | 久久狠狠一本精品综合网 | 国产精品video | 7777精品伊人久久久大香线蕉 | 四虎成人免费影院 | 不卡中文字幕在线 | 久热这里有精品 | 成人国产精品av | 欧美最猛性xxxxx免费 | 成片免费 | 国产一区国产二区在线观看 | 久久国产精品网站 | 久久成人免费 | av+在线播放在线播放 | av中文字幕在线播放 | 国产专区在线看 | 99热精品视 | 手机av片| 日韩av电影网站在线观看 | 天天综合色网 | 毛片网免费 | 91在线精品一区二区 | 一区二区免费不卡在线 | 免费看日韩片 | 国产高清av免费在线观看 | 91麻豆精品国产 | 黄色小视频在线观看免费 | 99久久超碰中文字幕伊人 | 精品福利在线观看 | 在线黄色毛片 | 亚洲2019精品 | 国产视频不卡 | av在线不卡观看 | 嫩草av影院 | 亚洲一区动漫 | 国产精品久久久久久久久久久免费看 | 成人精品一区二区三区电影免费 | 91丨porny丨九色| 日韩精品久久久久 | 免费大片黄在线 | 久久免费视频这里只有精品 | 久久久高清免费视频 | 99久久毛片 | 91人人人| 国产清纯在线 | 草久久av| 久久久受www免费人成 | 一本大道久久精品懂色aⅴ 五月婷社区 | 亚洲欧美日韩在线看 | 91在线观看欧美日韩 | 亚洲一区二区视频在线播放 | 色婷婷综合视频在线观看 | 毛片永久免费 | 亚洲精品色婷婷 | 中文字幕中文字幕在线一区 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 91丨九色丨蝌蚪丨对白 | 中文字幕免费 | 亚洲成人av影片 | 午夜av一区二区三区 | 日韩电影在线观看一区二区 | 亚洲成人av片在线观看 | 亚洲精品国偷拍自产在线观看 | 久草在线最新视频 | 久久久久区 | 在线黄色国产电影 | 91成人在线免费观看 | 一级片视频免费观看 | 久久久wwww | 久久av观看| 久艹在线观看视频 | 婷婷av资源 | av一级网站| 欧美激情精品久久久 | 国产精品国内免费一区二区三区 | 日韩区欧美久久久无人区 | 免费看av片网站 | 五月婷婷影院 | 九色福利视频 | 久久综合婷婷国产二区高清 | 九九视频免费在线观看 | 久久久久久久久久久高潮一区二区 | 国产人成在线视频 | 国产精品久久久久av免费 | 一区二区三区免费在线观看视频 | 欧美精品一二 | 92精品国产成人观看免费 | av先锋中文字幕 | 免费的黄色av | 最近日本韩国中文字幕 | 伊人天天干 | 欧美色图另类 | 成年人黄色免费视频 | 亚一亚二国产专区 | 激情网婷婷 | 在线观看视频亚洲 | 成人av电影在线观看 | 欧美日韩国产在线观看 | 91亚洲综合 | 精品久久久久久亚洲综合网站 | 国产高清黄 | 欧美成人91 | 亚洲无吗天堂 | 九九热精品视频在线观看 | 天天操天天干天天干 | 亚洲毛片视频 | 欧美精品天堂 | 国产精品亚洲人在线观看 | 91香蕉视频在线 | 一区二区三区在线免费 | 日韩中文幕 |