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

Vue.use()在new Vue() 之前使用的原因淺析

 更新時間:2019年08月26日 09:41:30   作者:獼猴桃豆老大  
本文通過實例代碼給大家介紹了為什么Vue.use()在new Vue() 之前使用,需要的朋友可以參考下

使用Vue前端框架開發(fā)有些時間了,官方文檔對于插件開發(fā)也有詳細的介紹。最近強迫癥犯了,老在想為什么Vue.use函數(shù)執(zhí)行,要在Vue實例化即new Vue(options)之前。解鈴還須系鈴人,這個問題只能通過看源碼解決,于是。。。

先看Vue.use做了什么

Vue.use = function (plugin: Function | Object) {
  //Vue構(gòu)造函數(shù)上定義_installedPlugins 避免相同的插件注冊多次
  const installedPlugins = (this._installedPlugins || (this._installedPlugins = []))
  // import是單例模式
  //所以plugin不論是Fuction還是Object同一個插件都是同一個
  if (installedPlugins.indexOf(plugin) > -1) {
   return this
  }

  // additional parameters
  const args = toArray(arguments, 1)
  // Vue作為第一個參數(shù)傳遞給插件
  args.unshift(this)
  if (typeof plugin.install === 'function') {
   plugin.install.apply(plugin, args)
  } else if (typeof plugin === 'function') {
   plugin.apply(null, args)
  }
  installedPlugins.push(plugin)
  return this // 返回的是this,可以鏈?zhǔn)秸{(diào)用
 }

do:

  1. 檢查插件是否已經(jīng)注冊,相同的插件只注冊一次
  2. 將Vue構(gòu)造函數(shù)作為第一個參數(shù),作為插件注冊調(diào)用
  3. 根據(jù)插件形式選擇調(diào)用plugin.install還是plugin
  4. 存儲已注冊插件,用于插件是否已注冊檢驗
Vue.prototype._init中合并options
Vue.prototype._init = function (options?: Object) {
  const vm: Component = this
  // a uid
  vm._uid = uid++
  let startTag, endTag
  ...
  vm.$options = mergeOptions(
    resolveConstructorOptions(vm.constructor),
    options || {},
    vm
   )
   ...
   // 掛載到dom上
  if (vm.$options.el) {
   vm.$mount(vm.$options.el)
  }
}

new Vue(options)時首先會執(zhí)行this._init進行初始化,將Vue上的屬性和options進行合并,然后在進行事件、生命周期等的初始化。beforeCreate,created生命周期的hook函數(shù)也是在這里進行調(diào)用

如果Vue.use在new Vue()之后執(zhí)行,this._init()時你使用的插件的內(nèi)容還沒有添加到Vue.options.components、Vue.options.directives、Vue.options.filters等屬性中。所以新初始化的Vue實例中也就沒有插件內(nèi)容

總結(jié)

以上所述是小編給大家介紹的Vue.use()在new Vue() 之前使用的原因淺析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • 詳解el-table表頭文字換行的三種方式

    詳解el-table表頭文字換行的三種方式

    本文主要介紹了el-table表頭文字換行的三種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • vue項目部署跨域問題的詳細解決過程

    vue項目部署跨域問題的詳細解決過程

    一般我們的前端Vue項目中都會涉及到跨域的問題,下面這篇文章主要給大家介紹了關(guān)于vue項目部署跨域問題的詳細解決過程,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • vue+axios+promise實際開發(fā)用法詳解

    vue+axios+promise實際開發(fā)用法詳解

    這篇文章主要介紹了vue+axios+promise實際開發(fā)用法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • 詳解如何在vue-cli中使用vuex

    詳解如何在vue-cli中使用vuex

    這篇文章主要介紹了詳解如何在vue-cli中使用vuex,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • vue el-table實現(xiàn)遞歸嵌套的示例代碼

    vue el-table實現(xiàn)遞歸嵌套的示例代碼

    本文主要介紹了vue el-table實現(xiàn)遞歸嵌套的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue中內(nèi)網(wǎng)/局域網(wǎng)/離線的情況下使用及建立項目方式

    vue中內(nèi)網(wǎng)/局域網(wǎng)/離線的情況下使用及建立項目方式

    這篇文章主要介紹了vue中內(nèi)網(wǎng)/局域網(wǎng)/離線的情況下使用及建立項目方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Vue3中事件總線mitt的使用方式

    Vue3中事件總線mitt的使用方式

    mitt又稱事務(wù)總線,是第三方插件,這篇文章主要為大家詳細介紹了Vue3中事件總線mitt的使用方式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • vue?select組件綁定的值為數(shù)字類型遇到的問題

    vue?select組件綁定的值為數(shù)字類型遇到的問題

    這篇文章主要介紹了vue?select組件綁定的值為數(shù)字類型遇到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • axios如何取消重復(fù)無用的請求詳解

    axios如何取消重復(fù)無用的請求詳解

    這篇文章主要給大家介紹了關(guān)于axios如何取消重復(fù)無用的請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用axios具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • vue+ElementUI 關(guān)閉對話框清空驗證,清除form表單的操作

    vue+ElementUI 關(guān)閉對話框清空驗證,清除form表單的操作

    這篇文章主要介紹了vue+ElementUI 關(guān)閉對話框清空驗證,清除form表單的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

崇义县| 什邡市| 临澧县| 南通市| 台中县| 天镇县| 广元市| 金昌市| 南雄市| 千阳县| 咸宁市| 德钦县| 安塞县| 灌南县| 黄山市| 临湘市| 四川省| 台中市| 咸阳市| 乡城县| 九龙县| 开远市| 镇原县| 连州市| 抚州市| 肥城市| 永安市| 松原市| 尉犁县| 宾川县| 扎兰屯市| 周宁县| 繁昌县| 阳高县| 玛多县| 名山县| 高邮市| 平安县| 利辛县| 水富县| 宝山区|