最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談vue項目重構技術要點和總結

 更新時間:2018年01月23日 09:34:05   作者:haorooms  
這篇文章主要介紹了淺談vue項目重構技術要點和總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

最近太忙了,博客好久沒有更新了。今天忙里偷閑,簡單總結一下最近vue項目重構的一些技術要點。

vue數據更新, 視圖未更新

這個問題我們經常會遇到,一般是vue數據賦值的時候,vue數據變化了,但是視圖沒有更新。這個不算是項目重構的技術要點,也和大家分享一下vue2.0通常的解決方案吧!

解決方案如下:

1、通過vue.set方式賦值

Vue.set(數據源, key, newValue)

2、 通過Array.prototype.splice方法

數據源.splice(indexOfItem, 1, newValue)

3、修改數據的長度

數據源.splice(newLength)

4、變異方法

Vue.js 包裝了被觀察數組的變異方法,故它們能觸發(fā)視圖更新。被包裝的方法有:

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

prop 對象數組應用

在 JavaScript 中對象和數組是引用類型,指向同一個內存空間,如果 prop 是一個對象或數組, 在子組件內部改變它會影響父組件的狀態(tài) 。利用這一點,我們在子組件中改變prop數組或者對象,父組件以及所有應用到prop中數據的地方都會變化。我之前寫過一篇js深拷貝和淺拷貝的文章,感興趣的去看下,其實,原理是一致的。

案例如下:

<input class="pinput max" type="text" v-model="itemData.data.did">

<script>
export default {
 components: {
 },
 data() {
 },
 props: {
 itemData: Object
 },
 methods: {
 }
};
</script>

所有應用到itemData的地方都會變化!

上面這種改變prop,Vue 不會在控制臺給出警告,假如我們完全改變或者賦值prop,控制臺會發(fā)出警告!引用官方給出的解決方案如下:

1、定義一個局部變量,并用 prop 的值初始化它:

props: ['initialCounter'],
data: function () {
 return { counter: this.initialCounter }
}

2、定義一個計算屬性,處理 prop 的值并返回:

props: ['size'],
computed: {
 normalizedSize: function () {
 return this.size.trim().toLowerCase()
 }
}

v-model 的一些坑

其實v-model和sync都是一些語法糖,我之前有文章介紹過,官網也能找到類似的案例!

v-model 數據有時候是undefined的時候,不會報錯,所以,一定要注意,v-model不能是undefined,否則有些莫名的問題!

重構-動態(tài)組件的創(chuàng)建

有時候我們有很多類似的組件,只有一點點地方不一樣,我們可以把這樣的類似組件寫到配置文件中,動態(tài)創(chuàng)建和引用組件

方法一:component 和is配合使用

通過使用保留的 元素,并對其 is 特性進行動態(tài)綁定,你可以在同一個掛載點動態(tài)切換多個組件:

var vm = new Vue({
 el: '#example',
 data: {
 currentView: 'home'
 },
 components: {
 home: { /* ... */ },
 posts: { /* ... */ },
 archive: { /* ... */ }
 }
})
<component v-bind:is="currentView">
 <!-- 組件在 vm.currentview 變化時改變! -->
</component>

方法二:通過render方法創(chuàng)建

<script>
export default {
 data() {
 return {
 };
 },
 render: function(createElement) {
 let _type = bi.chart.data.type;
 let _attr = bi.chart.components[_type]["attr"];
 return createElement(_attr, {
  props: {
  }
 });
 }
};
</script>

bi.chart.components[_type]["attr"]這個是在配置文件中動態(tài)配置的,type點擊的時候會改變,會取不同type下面的attr屬性!

公共屬性抽離

我們在項目中,經常會用很多狀態(tài)或者數據,我們可以把很多公共數據抽離出來,放到一個對象中,后面我們可以監(jiān)聽這個數據對象變化。進行數據保存或者獲取。

c: {
 handler: function (val, oldVal) { /* ... */ },
 deep: true
},
// 該回調將會在偵聽開始之后被立即調用
d: {
 handler: function (val, oldVal) { /* ... */ },
 immediate: true
},

可以利用上面深度監(jiān)聽。假如初始化的時候要立即執(zhí)行,我們可以用立即執(zhí)行監(jiān)聽!

require動態(tài)加載依賴

我們可以利用require同步特性,在代碼中動態(tài)加載依賴,例如下面echart主題,我們可以點擊切換的時候,動態(tài)加載!

require("echarts/theme/"+ data.theme);

import加載要放到頭部,初始化的時候,可以把默認主題用import加載進來!

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

相關文章

  • 關于vue的語法規(guī)則檢測報錯問題的解決

    關于vue的語法規(guī)則檢測報錯問題的解決

    在配置路有的時候,陸續(xù)出現了各種報錯其中最多的是一些寫法,例如空格,縮進,各種括號,這篇文章主要介紹了關于vue的語法規(guī)則檢測報錯問題的解決,非常具有實用價值,需要的朋友可以參考下
    2018-05-05
  • 詳解Vue內部怎樣處理props選項的多種寫法

    詳解Vue內部怎樣處理props選項的多種寫法

    這篇文章主要介紹了詳解Vue內部怎樣處理props選項的多種寫法,詳細的介紹了props的使用的寫法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • vue arco.design錨點Anchor使用方式

    vue arco.design錨點Anchor使用方式

    這篇文章主要介紹了vue arco.design錨點Anchor使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 分享vue.js devtools遇到一系列問題

    分享vue.js devtools遇到一系列問題

    這篇文章主要為大家詳細介紹了vue.js devtools遇到問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Vue動態(tài)組件component的深度使用說明

    Vue動態(tài)組件component的深度使用說明

    這篇文章主要介紹了Vue動態(tài)組件component的深度使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Mint UI實現A-Z字母排序的城市選擇列表

    Mint UI實現A-Z字母排序的城市選擇列表

    這篇文章主要為大家詳細介紹了Mint UI實現A-Z字母排序的城市選擇列表,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • vue+mousemove實現鼠標拖動功能(拖動過快失效問題解決方法)

    vue+mousemove實現鼠標拖動功能(拖動過快失效問題解決方法)

    這篇文章主要介紹了vue+mousemove實現鼠標拖動功能,文中給大家介紹了鼠標移動過快拖動就失效問題的解決方法,需要的朋友可以參考下
    2018-08-08
  • 如何一步步基于element-ui封裝查詢組件

    如何一步步基于element-ui封裝查詢組件

    這篇文章主要給大家介紹了關于如何一步步基于element-ui封裝查詢組件的相關資料,本文通過示例代碼介紹的非常詳細,對大家學習或者使用vue.js具有一定的參考學習價值,需要的朋友可以參考下
    2021-10-10
  • 在vue路由上添加公共的路由前綴方式

    在vue路由上添加公共的路由前綴方式

    這篇文章主要介紹了在vue路由上添加公共的路由前綴方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 實例詳解vue.js淺度監(jiān)聽和深度監(jiān)聽及watch用法

    實例詳解vue.js淺度監(jiān)聽和深度監(jiān)聽及watch用法

    這篇文章主要介紹了vue.js淺度監(jiān)聽和深度監(jiān)聽及watch用法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-08-08

最新評論

无棣县| 桐城市| 来凤县| 抚松县| 汕头市| 禄丰县| 山东| 津南区| 延吉市| 诏安县| 平度市| 万载县| 巴彦淖尔市| 巴南区| 花莲县| 平乡县| 梁平县| 商河县| 和硕县| 汝城县| 苗栗市| 西昌市| 马龙县| 伊春市| 武定县| 鹤岗市| 弥勒县| 兴安盟| 白河县| 武邑县| 灵武市| 襄城县| 长阳| 沙坪坝区| 兴城市| 双流县| 灵寿县| 和龙市| 静海县| 阿荣旗| 三都|