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

Vue.use源碼分析

 更新時間:2017年04月22日 16:41:47   作者:瓜子  
這篇文章主要為大家詳細介紹了Vue.use源碼,Vue.use方法的引入,具有一定的參考價值,感興趣的小伙伴們可以參考一下

我想有過vue開發(fā)經(jīng)驗的,對于vue.use并不陌生。當使用vue-resource或vue-router等全局組件時,必須通過Vue.use方法引入,才起作用。那么vue.use在組件引入之前到底做了那些事情呢?讓我們一窺究竟。

先上vue.use源碼

// javascript的方法是可以傳遞的,哈哈
Vue.use = function (plugin) {
  /* istanbul ignore if */
  if (plugin.installed) {
   return
  }
  // additional parameters
  var args = toArray(arguments, 1);
  args.unshift(this);
  if (typeof plugin.install === 'function') {
   plugin.install.apply(plugin, args);
  } else if (typeof plugin === 'function') {
   plugin.apply(null, args);
  }
  plugin.installed = true;
  return this
 };

假設我們通過Vue.use引入一個插件plugin(該插件可以暫時理解為一個變量或參數(shù)),即Vue.use(plugin); 

首先判斷傳入的參數(shù)plugin的屬性installed是否存在,如果存在且邏輯值為真,那么直接返回,后邊的代碼就不會再執(zhí)行,這個判斷的作用是什么呢?后邊會講到。 

我們先假設plugin的屬性installed不存在或為假,那么繼續(xù)往下執(zhí)行。

var args = toArray(arguments, 1);

//執(zhí)行了一個toArray方法,toArray接收了兩個參數(shù),arguments為Vue.use方法傳入的參數(shù)集合,例如Vue.use(a,b,c),那么arguments類似于[a,b,c](說明:arguments只是類數(shù)組,并不是真正的數(shù)組)。此處因為只引入一個參數(shù)plugin,所以arguments類似于[plugin]。

toArray的作用是什么呢?看源碼。

function toArray (list, start){
 start = start || 0;
 var i = list.length - start;
 var ret = new Array(i);
 while (i--) {
 ret[i] = list[i + start];
 }
 return ret
}

當執(zhí)行toArray(arguments,1),會生成一個新數(shù)組ret,長度 = arguments.length-1,然后進行while循環(huán),依次倒序把arguments的元素賦值給ret,因為ret比arguments長度少1,所以最終等同于arguments把除了第一個元素外的其余元素賦值給ret。toArray主要作用就是把類數(shù)組轉化為真正的數(shù)組,這樣才能調用數(shù)組的方法。因為此處我只引入一個plugin參數(shù),即arguments=[plugin],所以toArray返回為空數(shù)組[]。

接著往下執(zhí)行,args.unshift(this),等同于[].unshift(Vue),即args = [Vue];然后執(zhí)行

if (typeof plugin.install === 'function') {
  plugin.install.apply(plugin, args);
 } else if (typeof plugin === 'function') {
  plugin.apply(null, args);
 }

此處判斷plugin的install是否為函數(shù),如果為函數(shù),立即執(zhí)行pluign.install方法,install方法傳入的參數(shù)為args內數(shù)組元素,即install接受的第一個參數(shù)為Vue.

如果plugin的install不是函數(shù),那么判斷plugin本身是否為函數(shù),如果為函數(shù),那么執(zhí)行plugin函數(shù),且參數(shù)為args內數(shù)組元素。

最后設置plugin.installed為true。設置plugin.installed為true的作用是避免同一個插件多次執(zhí)行安裝,比如Vue.use(plugin)執(zhí)行一次之后,installed為true,再次執(zhí)行的話走到第一步判斷就返回了。

綜上所述,Vue.use的作用其實就是執(zhí)行一個plugin函數(shù)或者執(zhí)行pluign的install方法進行插件注冊,并且向plugin或其install方法傳入Vue對象作為第一個參數(shù),use的其他參數(shù)作為plugin或install的其他參數(shù)。

舉個簡單的例子

 import Vue from 'vue'

function test(a){
 console.log(a);//Vue
}

function test1(a,b){
  console.log(a,b);//Vue hello
}

let oTest = {
 install:function(a,b){
  console.log(a,b);//Vue hello1
 }
}

Vue.use(test);
Vue.use(test1,'hello');
Vue.use(oTest,'hello1');
console.log(oTest);
//{
  install:function(){...},
  installed:true
}

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

相關文章

  • Uniapp設置頁面的背景圖片方法代碼

    Uniapp設置頁面的背景圖片方法代碼

    這篇文章主要給大家介紹了關于Uniapp設置頁面的背景圖片,uni-app中設置背景圖有兩種方式,分別是全局設置和在相應的view內設置背景,文中給出了代碼示例,需要的朋友可以參考下
    2024-03-03
  • 通過vue手動封裝on、emit、off的代碼詳解

    通過vue手動封裝on、emit、off的代碼詳解

    這篇文章主要介紹了通過vue手動封裝on,emit,off的代碼詳解,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 一次在vue中使用post進行excel表下載的實戰(zhàn)記錄

    一次在vue中使用post進行excel表下載的實戰(zhàn)記錄

    最近遇到了需求,覺著有必要給大家總結下,這篇文章主要給大家介紹了關于一次在vue中使用post進行excel表下載的實戰(zhàn)記錄,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Vue.js 點擊按鈕顯示/隱藏內容的實例代碼

    Vue.js 點擊按鈕顯示/隱藏內容的實例代碼

    下面小編就為大家分享一篇Vue.js 點擊按鈕顯示/隱藏內容的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue+Koa2+mongoose寫一個像素繪板的實現(xiàn)方法

    Vue+Koa2+mongoose寫一個像素繪板的實現(xiàn)方法

    這篇文章主要介紹了Vue+Koa2+mongoose寫一個像素繪板的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 關于Vue.js一些問題和思考學習筆記(2)

    關于Vue.js一些問題和思考學習筆記(2)

    這篇文章主要為大家分享了關于Vue.js一些問題和思考的學習筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 解決vue路由name同名,路由重復的問題

    解決vue路由name同名,路由重復的問題

    這篇文章主要介紹了解決vue路由name同名,路由重復的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue實現(xiàn)頭像上傳功能

    vue實現(xiàn)頭像上傳功能

    這篇文章主要為大家詳細介紹了vue實現(xiàn)頭像上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue.js打包項目后頁面出現(xiàn)空白的解決辦法

    vue.js打包項目后頁面出現(xiàn)空白的解決辦法

    這篇文章主要介紹了vue.js打包項目后頁面出現(xiàn)空白的解決辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-11-11
  • vue生命周期和react生命周期對比【推薦】

    vue生命周期和react生命周期對比【推薦】

    本文通過實例代碼給大家介紹了vue生命周期和react生命周期對比 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09

最新評論

伽师县| 那曲县| 长治县| 顺平县| 平果县| 广西| 宁陵县| 额尔古纳市| 巴青县| 获嘉县| 海安县| 淮北市| 江山市| 资兴市| 伊通| 五台县| 斗六市| 交城县| 随州市| 大新县| 织金县| 吴江市| 北京市| 鹤峰县| 长治市| 大邑县| 巴南区| 台山市| 阿图什市| 始兴县| 呼和浩特市| 扶风县| 桂阳县| 彭山县| 花莲市| 衡东县| 公主岭市| 宜丰县| 新野县| 吉安市| 平原县|