1. 程式人生 > >在vue上踩過的坑

在vue上踩過的坑

1.首先是前後端分離,採用mock造資料

2.元件註冊->全域性註冊->在main.js中import xx from '.....' 然後註冊Vue.component('xxx',xxx) 然後在頁面中呼叫元件

                 ->區域性註冊->在區域性頁面中import xx from '...' 然後在components:{xx}  然後呼叫

3.通用子元件放在單獨資料夾中,頁面開啟統一使用operate('方法',引數)的方式命名,提交功能統一使用commit('方法')命名避免後期重構太麻煩

4.父子元件傳值 ->  父傳子 ->採用 <Sub @getUrl="getUrl" :details="details"></Sub> (:用於傳值,@用於接收,接收只能用方法,不能用data中的值,方法有一個引數,引數可以是物件陣列或不同變數等) 

                         ->子傳父->  this.$emit('getUrl',引數) (引數可以是變數,也可以是陣列等) 

當屬性值為陣列時,陣列的pop和push操作會同步到父元件。

5.ref問題:ref用來指定普通元素或子元件,指定的元素在$refs物件上,ref定義的元素在初始渲染的時候不能被訪問,它們還不存在,它們只能在元件渲染結束後才能被訪問。在同v-if搭配使用的時候,配合$nextTick能有效使用ref物件。

6.v-if和v-show的區別:v-if是真實的條件渲染,條件為真時重新建立渲染元件,條件為假時銷燬元件;v-show相當於修改display為none的效果,初始時就會建立元件,條件為假時只會隱藏元件。v-if會帶來頻繁的切換消耗。

7.路由切換:this.$router.push({path:'/Item'});

8.Json問題:陣列和物件賦值時,傳遞的是一個地址,如果只想傳值可以通過JSON.parse(JSON.stringify(object))獲得一個未關聯的物件

9.回撥函式問題:當方法中有呼叫回撥函式時,如果回撥函式中有要用到vue中的值,可以在回撥函式外設定 var that =this儲存一個外部的this。

10.slot:指定插入子元件的元素: slot=""  子元件中<slot name=""></slot>

11.v-bind:is切換不同元件,切換子元件時用。。。用的比較少,一般小元件都是寫在一個頁面內,然後直接通過v-if和v-show就可以控制了。v-bind:is切換元件的方式也是銷燬重建。<keep-alive>一般和v-bind:is結合使用,可以將失活的元件儲存起來,下次呼叫時不需要建立,減少了消耗。

12.生命週期:beforeCreate : 什麼也不做;created:this.$data被初始化,data建立完畢;beforeMount:掛載前狀態,this.$el被初始化,但是還沒有具體dom,this.$data被初始化;mounted:this.$el有dom;beforeUpdata:元件更新前;updated:元件更新後;beforeDestroy:元件銷燬前;destroyed元件銷燬後。

13.vue專案在IE瀏覽器上不相容的問題:安裝vue-cli的專案需要安裝babel-polyfill,同時IE有要求strict一個屬性不能有多個值。。

14.Object.freeze(obj)  可以凍結物件,提高效能,被凍結的物件不能被修改。

 return {       form:Object.freeze({id:1})     }

15.is的用法:<ul>元素內只有<li>元素會被看做有效內容,在li中加入is='元件名'可以避開潛在的瀏覽器解析錯誤

16.v-on監聽DOM事件:v-on:click="function | expression" 

17.$event訪問原始的DOM事件:v-on:click="function($event)",這個event可以用於定位到當前元素,然後做一些操作

18. 事件修飾符:比較常用的stop和prevent,v-on:click.prevent()可用於阻止預設行為,v-on:click.stop()可用於阻止事件冒泡

19.按鍵修飾符:v-on:keyup.enter="submit"還有.tab,.delete等按鍵別名

20.禁用特性繼承:inheritAttrs: false你可以不在元件的根元素繼承特性,可以選定製定的地方繼承特性和特性值。

21.關於伺服器上部署的專案問題:有時候我們再伺服器上部署了多個專案,可能導致,同一個'/'路由控制著多個頁面而多次跳轉的問題,儘量在自己的專案上多定義一個首頁路由,這樣退出登入的時候可以避免跳轉到'/'的問題。

22.IE瀏覽器相容性問題,IE不支援ES6語法,需要通過安裝babel-polyfill將ES6轉化成ES5

23.對element的理解,element中的el-dialog元件中的.sync屬性屬於初始化載入方式,true或false的改變只會讓元件隱藏顯示,如果需要元件銷燬重建,可以加個v-if