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

Vue源碼學(xué)習(xí)之數(shù)據(jù)初始化

 更新時間:2022年09月06日 09:18:34   作者:i東東  
這篇文章主要為大家介紹了Vue源碼學(xué)習(xí)之數(shù)據(jù)初始化實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

初始化數(shù)據(jù)

環(huán)境搭建:菜鳥學(xué)Vue源碼第一步之rollup環(huán)境搭建步

響應(yīng)式數(shù)據(jù)的核心就是,數(shù)據(jù)變化了可以監(jiān)聽到數(shù)據(jù)變化了,數(shù)據(jù)的取值和更改值可以監(jiān)測到,首先第一步需要創(chuàng)建一個Vue實例

創(chuàng)建Vue實例

//dist/index.html
//用Vue創(chuàng)造一個實例
const vm = new Vue({
  data(){
    return {
      name:'i東東',
      age:18
    }
  }
})

創(chuàng)造完 Vue實例,緊接著就需要有一個類去代理data中的數(shù)據(jù),但是在Vue中并沒有直接去用class去構(gòu)建一個類,因為這樣寫會將所有的方法都耦合在一起(類的特點),所以Vue本身采用了一個構(gòu)造函數(shù),通過構(gòu)造函數(shù)去擴展方法。

構(gòu)造函數(shù)擴展方法

//src/index.js
import { initMixin } from "./init";
function Vue(options){
this._init(options)
}
initMixin(Vue) // 擴展了init方法 (后面會寫)
export default Vue

在拿到options選項之后需要做一個初始化,就需要加一個方法來用于初始化。但是如果功能一多,就很比較亂,所以就需要把它拆成兩個文件

export function initMixin(Vue) { //給Vue增加init方法
  Vue.prototype._init = function (options) { //用來初始化數(shù)據(jù) }
}

這樣就可以直接在index.js中調(diào)用initMixin方法,這種方法,就可以把這些原型方法擴展成一個個函數(shù),通過函數(shù)的方式在圓形上去擴展功能。

在用的時候就可以在當前實例上擴展一些屬性,比如Vue中的vm.$optios,就是用來獲取用戶配置的,緊接著就需要進行初始化狀態(tài)

初始化狀態(tài)

//src/init.js
import { initState } from "./state"
export function initMixin(Vue) { //給Vue增加init方法
  Vue.prototype._init = function (options) { //用來初始化數(shù)據(jù)
    // 所有以$開頭的都會被認為是Vue的屬性,比如$nextTick()
    const vm = this 
    vm.$options = options // 將用戶的屬性掛載到實例上
    // 初始化狀態(tài)(props,methods,data等進行處理)原型中的this值得都是實例
    initState(vm)
  }
}

initState方法可以將它進行拆分到一個新的文件中,通過initState方法對數(shù)據(jù)進行劫持,判斷數(shù)據(jù)是否存在,然后調(diào)用initData方法對數(shù)據(jù)進行代理

調(diào)用initData方法對數(shù)據(jù)進行代理

//
/src/state.js
export function initState(vm){
    // 對數(shù)據(jù)需要進行劫持
    const opts = vm.$options //獲取所有選項
    if (opts.data){
        initData(vm)
    }
}
function initData(vm){
    // 對數(shù)據(jù)進行代理
    let data = vm.$options.data
    // data可以是函數(shù)或者對象,根實例可以是對象,組件data必須勢函數(shù)
    data = typeof data === 'function' ? data.call(vm) : data
    console.log(data); // {name: 'i東東', age: 18}
}

執(zhí)行index.html 當控制臺輸出{name: 'i東東', age: 18}就表示初始化數(shù)據(jù)完成

以上就是Vue源碼學(xué)習(xí)之數(shù)據(jù)初始化的詳細內(nèi)容,更多關(guān)于Vue 數(shù)據(jù)初始化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue.js每天必學(xué)之數(shù)據(jù)雙向綁定

    Vue.js每天必學(xué)之數(shù)據(jù)雙向綁定

    Vue.js每天必學(xué)之數(shù)據(jù)雙向綁定,如何進行綁定,如何進行數(shù)據(jù)雙向綁定,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 使用vue構(gòu)建一個上傳圖片表單

    使用vue構(gòu)建一個上傳圖片表單

    這篇文章主要為大家詳細介紹了使用vue構(gòu)建一個上傳圖片表單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • vue單應(yīng)用在ios系統(tǒng)中實現(xiàn)微信分享功能操作

    vue單應(yīng)用在ios系統(tǒng)中實現(xiàn)微信分享功能操作

    這篇文章主要介紹了vue單應(yīng)用在ios系統(tǒng)中實現(xiàn)微信分享功能操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 使用watch監(jiān)聽路由變化和watch監(jiān)聽對象的實例

    使用watch監(jiān)聽路由變化和watch監(jiān)聽對象的實例

    下面小編就為大家分享一篇使用watch監(jiān)聽路由變化和watch監(jiān)聽對象的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 一篇文章讓你看懂封裝Axios

    一篇文章讓你看懂封裝Axios

    axios的封裝和api接口的統(tǒng)一管理,其實主要目的就是在幫助我們簡化代碼和利于后期的更新維護,這篇文章主要給大家介紹了關(guān)于封裝Axios的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Vue的子組件props如何設(shè)置多個校驗類型

    Vue的子組件props如何設(shè)置多個校驗類型

    這篇文章主要介紹了Vue的子組件props如何設(shè)置多個校驗類型問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • VUE3基于vite封裝條形碼和二維碼組件的詳細過程

    VUE3基于vite封裝條形碼和二維碼組件的詳細過程

    基礎(chǔ)組件開發(fā)是項目業(yè)務(wù)開發(fā)的基石, 本文主要介紹了通過vue3的vite腳手架快速搭建項目, 開發(fā)條形碼和二維碼組件的過程,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • uni-app無限級樹形組件簡單實現(xiàn)代碼

    uni-app無限級樹形組件簡單實現(xiàn)代碼

    文章介紹了如何在uni-app中簡單封裝一個無限級樹形組件,該組件可以無線嵌套,展開和收縮,并獲取子節(jié)點數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-01-01
  • Vue學(xué)習(xí)筆記進階篇之多元素及多組件過渡

    Vue學(xué)習(xí)筆記進階篇之多元素及多組件過渡

    本篇文章主要介紹了Vue學(xué)習(xí)筆記進階篇之多元素及多組件過渡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 利用Vue實現(xiàn)一個markdown編輯器實例代碼

    利用Vue實現(xiàn)一個markdown編輯器實例代碼

    這篇文章主要給大家介紹了關(guān)于如何利用Vue實現(xiàn)一個markdown編輯器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論

柯坪县| 泰来县| 射洪县| 肇州县| 治多县| 象州县| 潞城市| 海丰县| 通许县| 天水市| 玉树县| 祁门县| 新宾| 临沭县| 吴忠市| 旌德县| 延川县| 周宁县| 德庆县| 象州县| 盐亭县| 雷山县| 凌海市| 孝义市| 梁河县| 通江县| 洛扎县| 四会市| 穆棱市| 内丘县| 互助| 江达县| 当涂县| 台南市| 天津市| 纳雍县| 开封县| 桑日县| 哈尔滨市| 碌曲县| 新晃|