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

如何設置Vue全局公共方法

 更新時間:2023年05月24日 09:35:26   作者:杰~JIE  
這篇文章主要介紹了如何設置Vue全局公共方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

前言

在開發(fā)中,為了提高重用性,簡潔代碼,往往需要把代碼的公共部分提取出來,形成一個可復用的模塊。

當代碼提取出來形成模塊后,要實現(xiàn)所有地方都可以引用,就需要把這些模塊設置成全局屬性。

所以,要實現(xiàn)全局公共方法

我們需要知道以下幾個知識點:

  • 怎么設置全局屬性;
  • 怎么引用全局屬性;

一、設置全局屬性

全局屬性可以分為:全局變量和全局方法。

實現(xiàn)全局變量,常用的手段就是使用vuex (關于vuex 的使用方法這里不詳細說明了),還有一種方法就是借助原型屬性來實現(xiàn)。

下面,我將重點講一下原型。

二、引用全局屬性

在使用Vue時,我們都要寫這么一串代碼:

var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

上面代碼是借助Vue構(gòu)造函數(shù)創(chuàng)建一個Vue對象。

從這可以看出,Vue其實是一個對象。那么我們就可以借助Vue的原型實現(xiàn)對全局屬性的引用。

首先,我們需要了解以下知識點:

什么是原型?

在js 代碼中,我們經(jīng)常會看到一個屬性prototype 。他是構(gòu)造函數(shù)(就是用來構(gòu)造對象的函數(shù))的屬性,用于指向原型對象。

那什么是原型對象呢?

了解“原型對象”,我們需要把“原型”和“對象”拆開來說明。

先說對象,js 的內(nèi)建對象有很多,例如:String 、Math 、Object 、Array 等等。

// 聲明一個數(shù)組對象
const arr = Array();

以上是使用內(nèi)建對象——數(shù)組的構(gòu)造函數(shù),創(chuàng)建一個數(shù)組。

當然,我們也可以設置自定義對象,也就是自己設置一個新的對象。

const obj = {};

以上代碼就是設置了一個空對象。

那內(nèi)建對象和自定義對象有什么區(qū)別呢?

內(nèi)建對象和自定義對象的區(qū)別,就是內(nèi)建對象自帶了一些屬性和方法。就如上面聲明的數(shù)組對象。我們可以通過arr.length 屬性來獲數(shù)組的長度,或者可以通過arr.push() 方法來向數(shù)組新增一個元素。而自定義對象就沒有這些屬性和方法。這時,我們就會很疑惑,為什么同樣是對象,兩者的區(qū)別就這么大的區(qū)別呢?難到是上帝不公,創(chuàng)造的時候給了不同的待遇?

嘿!還別說,就是上帝(js源碼)創(chuàng)造的時候設定的,但是他并不是不公,而是為了分工合作。但是,上帝還是為了廣大民眾著想留了后門——把他創(chuàng)造的工具留了下來。

那就是原型的訪問工具 prototype__proto__。

其實,內(nèi)建元素跟自定義元素的區(qū)別就是在于原型的不同(沒錯,自定義元素也是有原型的,只是這個原型是Object 內(nèi)建對象的原型)。

直觀的說,原型是預先設定好的對象(可以說是我們創(chuàng)建的對象的祖先啦?。锩骖A設了各種各樣的方法。

下面我們來看看arr 和 obj 的原型

在這里插入圖片描述

在這里插入圖片描述

上圖的__proto__對象就是原型對象了。__proto__屬性是一個指針(地址),指向了原型。原型原型,原本的形狀。原型是一類對象的初始。所以不同的類型對象有著不同的原型。

__proto__與prototype的區(qū)別

到這里,可能大家就有點懵了。怎么又出現(xiàn)了prototype?不是__proto__嗎?別急,現(xiàn)在就捋捋兩者的關系。

首先,__proto__是對象的屬性,指向?qū)ο蟮臉?gòu)造函數(shù)的原型。而prototype是函數(shù)的屬性,指向它的原型。

其次,對象都是由函數(shù)(也就是構(gòu)造函數(shù))生成的。(這一點非常重要。要理解原型就要理解這句話,如果不理解就把它當做定理。)

基于以上兩點可得出下圖:

在這里插入圖片描述

以上就是prototype__proto__的關系了。

三、全局共用方法添加與引用

借助原型實現(xiàn)全局共用方法的添加

至此,我們具備一下幾點:

有訪問的工具–prototype__proto__;原型是個對象,意味著我們可以對原型進行屬性的增刪改查;基于同一原型生成的對象,所有的對象的原型都是同一個。

那么,只要修改原型,所有基于同一原型生成的對象的原型都同步改變;

基于以上三點,只要我們在Vue實例化前借助prototype把全局公共方法掛載到原型上,就能讓公共方法實現(xiàn)全局訪問。

main.js中注冊全局共用方法:

Vue.prototype.fn = function(){
  console.log("全局公共方法")
};
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

引用全局共用方法

全局共用方法可以通過兩種手段來使用:

  • vue實例化對象的作用域—— this
  • main.js 注冊全局共用方法后的 Vue.prototype

在組件中或者生命周期中直接通過this.fn()調(diào)用即可。

如果是通過Vue.prototype.fn()來調(diào)用,必須保證調(diào)用處的代碼全局公共方法注冊代碼后面執(zhí)行。

四、全局公共方法優(yōu)化

雖然我們已經(jīng)知道將方法掛載在Vue.prototype 就可以實現(xiàn)全局公共方法。

但是呢!當全局公共方法有很多時,我們就得需要寫很多個Vue.prototype 。

這顯然是不符合代碼美觀的。Vue.prototype 掛一個方法也是掛,掛一個對象也是掛。

那為什么我們不把所有的全局方法寫在同一個js 文件中呢?

創(chuàng)建commonApi.js

function fn1(){
  console.log("全局方法一")
}
function fn2(){
  console.log("全局方法二")
}
function fn3(){
  console.log("全局方法三")
}
function fn4(){
  console.log("全局方法四")
}
// 將四個全局公共方法,組合成一個對象,并暴露出去
export default {
  fn1,
  fn2,
  fn3,
  fn4,
}

在main.js 進行配置:

import commonApi from './store/commonApi'
Vue.prototype.commonApi = commonApi;

組件內(nèi)通過this引用:

text(){
  this.commonApi.fn1();
}

總結(jié)

以上就是新建全局公用的方法了。

這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳解Vue路由傳參的兩種方式query和params

    詳解Vue路由傳參的兩種方式query和params

    這篇文章主要介紹了Vue路由傳參的兩種方式query和params,介紹了query和params區(qū)別與總結(jié),結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • vue?表格單選按鈕的實現(xiàn)方式

    vue?表格單選按鈕的實現(xiàn)方式

    這篇文章主要介紹了vue?表格單選按鈕的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 如何使用RoughViz可視化Vue.js中的草繪圖表

    如何使用RoughViz可視化Vue.js中的草繪圖表

    這篇文章主要介紹了如何使用RoughViz可視化Vue.js中的草繪圖表,幫助大家更好的理解和使用roughViz,感興趣的朋友可以了解下
    2021-01-01
  • element中el-autocomplete的常見用法示例

    element中el-autocomplete的常見用法示例

    這篇文章主要給大家介紹了關于element中el-autocomplete的常見用法的相關資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用element具有一定的參考學習價值,需要的朋友可以參考下
    2023-03-03
  • vue組件文檔生成備注詳解

    vue組件文檔生成備注詳解

    這篇文章主要介紹了vue組件文檔生成備注詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue實現(xiàn)當前頁面刷新的七種方法總結(jié)

    Vue實現(xiàn)當前頁面刷新的七種方法總結(jié)

    大家在vue項目中當刪除或者增加一條記錄的時候希望當前頁面可以重新刷新,但是vue框架自帶的router是不支持刷新當前頁面功能,所以本文就給大家分享了七種vue實現(xiàn)當前頁面刷新的方法,需要的朋友可以參考下
    2023-07-07
  • 使用Vue實現(xiàn)簡單日歷效果

    使用Vue實現(xiàn)簡單日歷效果

    這篇文章主要為大家詳細介紹了使用Vue實現(xiàn)簡單日歷效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • vue的三種圖片引入方式代碼實例

    vue的三種圖片引入方式代碼實例

    這篇文章主要介紹了vue的三種圖片引入方式代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Vue3?Reactive響應式原理邏輯詳解

    Vue3?Reactive響應式原理邏輯詳解

    這篇文章主要介紹了Vue3?Reactive響應式原理邏輯詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • vant組件中 dialog的確認按鈕的回調(diào)事件操作

    vant組件中 dialog的確認按鈕的回調(diào)事件操作

    這篇文章主要介紹了vant組件中 dialog的確認按鈕的回調(diào)事件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論