欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue開發(fā)心得和技巧分享

 更新時間:2016年10月27日 11:03:52   作者:Coffce  
這篇文章主要為大家分享了vue開發(fā)心得和技巧,具有一定的參考價值,感興趣的小伙伴們可以參考一下

這個系列記錄我在一年vue開發(fā)中總結(jié)的一些經(jīng)驗和技巧。

利用Object.freeze()提升性能

Object.freeze()是ES5新增的特性,可以凍結(jié)一個對象,防止對象被修改。

vue 1.0.18+對其提供了支持,對于data或vuex里使用freeze凍結(jié)了的對象,vue不會做getter和setter的轉(zhuǎn)換。

如果你有一個巨大的數(shù)組或Object,并且確信數(shù)據(jù)不會修改,使用Object.freeze()可以讓性能大幅提升。在我的實際開發(fā)中,這種提升大約有5~10倍,倍數(shù)隨著數(shù)據(jù)量遞增。

并且,Object.freeze()凍結(jié)的是值,你仍然可以將變量的引用替換掉。舉個例子:

<p v-for="item in list">{{ item.value }}</p>

new Vue({
 data: {
 // vue不會對list里的object做getter、setter綁定
 list: Object.freeze([
  { value: 1 },
  { value: 2 }
 ])
 },
 created () {
 // 界面不會有響應
 this.list[0].value = 100;

 // 下面兩種做法,界面都會響應
 this.list = [
  { value: 100 },
  { value: 200 }
 ];
 this.list = Object.freeze([
  { value: 100 },
  { value: 200 }
 ]);
 }
})

vue的文檔沒有寫上這個特性,但這是個非常實用的做法,對于純展示的大數(shù)據(jù),都可以使用Object.freeze提升性能。

使用 vm.$compile 編譯dom

$compile函數(shù)可以用來手動調(diào)用vue的方式來編譯dom。在你需要處理某個jQuery插件生成的html或者服務端返回的html的時候,這個函數(shù)可以派上用場。但注意這是個私有api,隨時都有可能變動,并且這種做法有違vue的理念。僅在不得已的時候使用。

new Vue({
 data: {
 value: 'demo'
 },
 created () {
 let dom = document.createElement('div');
 dom.innerHTML = '{{ value }}';
 this.$compile(dom);
 }
})

合理使用track-by="$index"

track-by是vue為循環(huán)提供的優(yōu)化方法,可以復用多次v-for中id相同的dom。如果你的數(shù)據(jù)沒有一個唯一的id,也可以選擇使用track-by="$index",但必須注意一些副作用。

舉個例子:

new Vue({
 data: {
 list: [1, 2, 3]
 }
})
<div id="demo-1">
 <p v-for="item in list">{{ item }}</p>
</div>
<div id="demo-2">
 <p v-for="item in list" track-by="$index">{{ item }}</p>
</div>

這時候執(zhí)行this.list = [4, 5, 6],可以通過F12觀察到,demo-1里的dom被全部刪除,然后重新循環(huán)list生成dom,而demo-2不會刪除dom,只是把他們的text格子修改為4,5,6。這就是track-by="$index"的效果,復用了兩次v-for中$index相同的dom。

這是一個很好的優(yōu)化方法,但不是所有場景都適用,比如循環(huán)中包含表單控件或子組件時,由于dom并不會被刪除重新生成,會導致第二次執(zhí)行的v-for,原有表單控件的值不會改變,可以看這個例子:https://jsfiddle.net/jysboza9/1/

不要濫用Directive

網(wǎng)上有一種說法,認為dom操作都應該封裝在指令中。實際開發(fā)中,我認為并不應該遵循這種教條。是否使用指令應該看你實現(xiàn)的是什么功能,而不是看是否操作了dom。比如說你想用vue封裝一個jQuery插件,來看看下面哪種封裝方法比較好:

<!-- component -->
<datepicker></datepicker>
<!-- directive -->
<div v-datepicker="{options}"></div>

個人認為無疑是第一種方法更好,datepicker是一個獨立的組件,你并不需要關心他的內(nèi)部是否操作了dom,是否封裝了jQuery插件。

那么什么時候使用指令呢?來看一下瀏覽器原生提供的指令:

<a title="這是一個指令"></a>
<p title="這是一個指令"></p>
<div title="這是一個指令"></div>

title屬性為不同的標簽提供tooltip功能,這就是一個指令。一個指令應該表示一個獨立的功能,可以為不同的標簽和組件提供相同的功能。

未完待續(xù)……

本文已被整理到了《Vue.js前端組件學習教程》,歡迎大家學習閱讀。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • vue實現(xiàn)標簽云效果的示例

    vue實現(xiàn)標簽云效果的示例

    這篇文章主要介紹了vue實現(xiàn)標簽云效果的示例,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-11-11
  • Vue.js實現(xiàn)文章評論和回復評論功能

    Vue.js實現(xiàn)文章評論和回復評論功能

    這篇文章主要為大家詳細介紹了Vue.js實現(xiàn)文章評論和回復評論功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Vue實現(xiàn)簡單計算器

    Vue實現(xiàn)簡單計算器

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)簡單計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • vue中路由參數(shù)傳遞可能會遇到的坑

    vue中路由參數(shù)傳遞可能會遇到的坑

    這篇文章主要給大家介紹了關于vue中路由參數(shù)傳遞遇到的坑的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • Vue3.x使用mitt.js進行組件通信

    Vue3.x使用mitt.js進行組件通信

    Vue2.x 使用 EventBus 進行組件通信,而 Vue3.x 推薦使用 mitt.js。本文就介紹一下mitt.js的具體使用方法,感興趣的可以了解一下
    2021-06-06
  • antd+vue實現(xiàn)動態(tài)驗證循環(huán)屬性表單的思路

    antd+vue實現(xiàn)動態(tài)驗證循環(huán)屬性表單的思路

    今天通過本文給大家分享antd+vue實現(xiàn)動態(tài)驗證循環(huán)屬性表單的思路,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • 詳解Vue底部導航欄組件

    詳解Vue底部導航欄組件

    這篇文章主要介紹了Vue底部導航欄的詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 詳解Vue中Axios封裝API接口的思路及方法

    詳解Vue中Axios封裝API接口的思路及方法

    這篇文章主要介紹了詳解Vue中Axios封裝API接口的思路及方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 深入解析Vue的自定義指令

    深入解析Vue的自定義指令

    這篇文章主要介紹了深入解析Vue的自定義指令,自定義指令主要是為了重用涉及普通元素的底層 DOM 訪問的邏輯,一個自定義指令由一個包含類似組件生命周期鉤子的對象來定義,需要的朋友可以參考下
    2023-05-05
  • vue動態(tài)修改頁面title的兩種方法

    vue動態(tài)修改頁面title的兩種方法

    本文主要介紹了vue動態(tài)修改頁面title的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06

最新評論