溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

vue 中有哪些作用域

發(fā)布時(shí)間:2021-06-25 14:46:14 來源:億速云 閱讀:426 作者:Leah 欄目:web開發(fā)

今天就跟大家聊聊有關(guān)vue 中有哪些作用域,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

1. 全局作用域

Vue 應(yīng)用程序中的全局作用域與任何編程語言中的全局作用域類似,這些變量在應(yīng)用程序中的任何地方都是可用的。

可以把全局作用域看作應(yīng)用程序作用域,因?yàn)樗鼘⒆饔糜蛳拗茷檎麄€(gè)應(yīng)用程序。

使用全局作用域

使用全局作用域的主要方式是向Vue原型添加一個(gè)值:

Vue.prototype.$globalValue = 'Global Scope!';

通過將其添加到 Vue 對象的原型中,可以在應(yīng)用程序的每個(gè)組件上自動使用它。可以像這樣直接從組件訪問它:

export default {   mounted() {     console.log(this.$globalValue);  // 'Global Scope!'   }, };

使用$作為這些變量的前綴是一種標(biāo)準(zhǔn)做法,因此我們知道它們是全局值,而不是每個(gè)組件唯一的。

Vue、vue-router和vuex(以及許多其他庫)都使用這種技術(shù)來定義全局值。例如,來自vue-router的$route對象是這樣一個(gè)全局作用域的變量。

2. 子樹作用域

大多數(shù)時(shí)候,全局范圍有點(diǎn)像大錘,我們需要一些更精確的東西。子樹作用域中的變量作用域是應(yīng)用程序的特定部分,而不是整個(gè)應(yīng)用程序。

此級別的作用域可能是最少使用的,但是在確實(shí)需要使用時(shí)非常方便。通常,一組組件需要共享很多相同的數(shù)據(jù),并且通過props傳遞數(shù)據(jù)非常繁瑣。

此作用域最適合用于共享上下文信息,這些上下文信息可以根據(jù)組件在應(yīng)用程序中的位置進(jìn)行更改,可以是這樣的:

  • 本地狀態(tài)和數(shù)據(jù)-如果只有一小部分應(yīng)用程序需要使用 Vuex,則無需使用  Vuex。如果使用props傳遞會變得繁瑣且麻煩,此時(shí),子樹作用域可能是我們最好的選擇。

  • 配置-有時(shí)我們需要組件以某種特定方式運(yùn)行,但僅在應(yīng)用程序的一部分中運(yùn)行。例如,注冊表單中的所有Input組件都需要驗(yàn)證,但是我們不想在整個(gè)應(yīng)用程序中都要求驗(yàn)證。

使用子樹作用域:

子樹作用域是通過使用provide和inject創(chuàng)建的。我們提供希望可用于整個(gè)子樹的值,然后將它們注入需要它們的組件中。

3. 組件作用域

更具體一點(diǎn),組件作用域使變量可用于單個(gè)組件。但是這不應(yīng)該與更具體的實(shí)例作用域相混淆。

如果一個(gè)變量具有組件作用域,那么它就是一個(gè)組件的所有實(shí)例都可以使用的單個(gè)變量。我們可以擁有幾個(gè)相同的組件,并且它們都能夠訪問相同的變量。

你可能熟悉 JS  中的模塊作用域。在單個(gè)模塊或文件中定義的任何內(nèi)容都屬于相同的模塊作用域。由于組件是在單個(gè)文件中定義的,所以組件中的所有內(nèi)容都在相同的模塊作用域內(nèi)。

使用組件作用域:

要使用組件作用域,我們需要在與組件相同的文件中定義一個(gè)變量:

vue 中有哪些作用域

在此組件中渲染的變量componentScope是相同的變量,不管使用此組件多少次,componentScope 始終只有一個(gè),沒有多個(gè)副本。

如果此組件的一個(gè)實(shí)例修改了componentScope的值,則該組件的每個(gè)其他實(shí)例都會更改。不應(yīng)使用這種方式在組件之間進(jìn)行通信,但這是共享數(shù)據(jù)的一種好方法。

4. 實(shí)例作用域

實(shí)例作用域是我們可以獲得的Vue作用域變量最常見形式,具有實(shí)例作用域的任何變量僅可用于組件的特定用法。我們通常將其稱為內(nèi)部狀態(tài),有時(shí)也稱為局部狀態(tài)。

使用實(shí)例作用域:

無論何時(shí)使用data()函數(shù)或使用computed props,都是在使用實(shí)例作用域。

甚至直接向組件實(shí)例添加屬性也可以達(dá)到以下效果:

someMethod() {   this.newProperty = 'Instance scope'; }

看完上述內(nèi)容,你們對vue 中有哪些作用域有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI