在vue的使用過程中會遇到各種場景,當普通使用時覺得沒什麼,但是或許優化一下可以更高效更優美的進行開發。下面有一些我在日常開發的時候用到的小技巧
每個vue例項都會**其data物件裡所有的屬性,這些被**的資料是響應式的,在其資料改變時檢視也會隨之更新。
在每個vue元件中都有乙個data物件,不要把所有資料都放在data中。只把需要做響應式的資料放在data物件中;原因是:如果乙個資料存在於data中,資料會被劫持,vue會給資料新增乙個getter(獲取資料),乙個setter(設定資料),效能不會高。
可以把一些不需要響應的資料直接放到例項上,而不是在data裡
data()
}
object.freeze() 方法可以凍結乙個物件。乙個被凍結的物件再也不能被修改;凍結了乙個物件則不能向這個物件新增新的屬性,不能刪除已有屬性,不能修改該物件已有屬性的可列舉性、可配置性、可寫性,以及不能修改已有屬性的值。此外,凍結乙個物件後該物件的原型也不能被修改。freeze() 返回和傳入的引數相同的物件對於一些不需要響應列表資料,也可以用 object.freeze() 處理
data()
},created () ,
])// 凍結 listdata
this.list = listdata;
// 介面不會有響應
this.list[0].value = 100;
// 下面兩種做法,介面都會響應,只是凍結 listdata 沒有凍結 this.list
this.list = [,];
this.list = object.freeze([
,]);
}
有時候我們會遇到這樣的場景,需要自己去監聽一些事件什麼的,可能會像下面這個寫,但是有時候可能因為mounted和destroyed不再乙個位置啥的,導致忘記清除對事件監聽。可以利用 hook 去監聽鉤子事件將它們寫在一起
mounted() ,
destroyed() ,
methods:
}
更改後
mounted() );
},methods:
}
在有些情況下,我們可能需要對乙個prop進行「雙向繫結」。 不幸的是,真正的雙向繫結會帶來維護上的問題,因為子元件可以修改父元件,且在父元件和子元件都沒有明顯的改動**。這也是為什麼我們推薦以update:mypropname的模式觸發事件取而代之。舉個例子,在乙個包含showprop 的假設的元件中,我們可以用以下方法表達對其賦新值的意圖:
this.$emit('update:show', newshow)
父元件可以監聽那個事件並根據需要更新乙個本地的資料
使用 .sync 簡寫
有時候需要對一些元件進行更高層次封裝,例如有乙個普通**元件,需要實現能有行內編輯等一些功能時候,就需要對**進行二次封裝。像**元件屬性較多時,需要乙個個去傳遞,非常不友好並且費時
可以看到傳遞屬性和事件的方便性,而不用乙個個去傳遞,還有$attrs(props、class、style 除外的其他 attribute )可以使用
當 watch 乙個變數的時候,初始化時並不會執行,如下面的例子,你需要在created的時候手動呼叫一次。
created() ,
watch: ,
}
上面這樣的做法可以使用,但很麻煩,我們可以新增immediate屬性,這樣初始化的時候就會自動觸發(不用再寫created去呼叫了),然後上面的**就能簡化為
watch: ,
immediate: true
}}
Vue開發小技巧
vue 3.x 的pre alpha 版本。後面應該還會有 alpha beta 等版本,預計至少要等到 2020 年第一季度才有可能發布 3.0 正式版 所以應該趁還沒出來加緊打好 vue2.x 的基礎 vue基本用法很容易上手,但是有很多優化的寫法你就不一定知道了,本文從列舉了 36 個 vue...
html中的小技巧(一)
1 在網頁中設定自動重新整理 在中加入其中content的值20 單位秒 是重新整理的時間值。如果不是重新整理頁面的而是跳轉到另乙個頁面的話 在content中加入url your html 一定要用分號跟前面的20分開。否則無效 2 settimeout用法 settimeout alert 對不...
vue使用技巧
1.全域性元件註冊 原 新 建立全域性.js檔案管理全域性元件 globalcomponent.js 1 globalcomponent.js import vue from vue 引入vue 處理首字母大寫 abc abc function changestr str require.conte...