2017-11-25 132 views
0

我使用的模式來配置變量存儲在我的/config/[xxx].env.js文件,像這樣:如何訪問組件中的vuejs webpack配置變量?

module.exports = merge(prodEnv, { 
    NODE_ENV: '"development"', 
    API: { 
    ROOT: "'http://blah.blah.blah'" 
    }, 
    CONNECTORS: { 
    SPOTIFY: { 
     CLIENT_ID: "'blah'", 
     SCOPES: "'blah'", 
     REDIRECT_URI: "'blah'" 
    } 
    } 
}) 

注意,其中有些是沒有具體的環境變量,但我想將這些類型的配置變量放在一個集中的位置。

在我main.js,我可以通過process.env訪問罰款變量:

Vue.http.options.root = process.env.API.ROOT 

但在一個較低的水平組件,「進程」並不存在。

我知道,它不應該,因爲它不是全局定義的,但我無法弄清楚如何從一個組件中得到該process.env對象。我知道我可以讓它成爲全球性的,但那不是「感覺不錯」。

兩個問題:

  1. 有一些其他的Vue進口/對象,我失去了去process.env?

  2. 有沒有更好的方式來存儲這些類型的集中值,這可能是與環境相關的?我已經看到了諸如ruby配置gem之類的東西,它能夠在默認配置的基礎上對環境特定的配置進行分層。

嘗試故宮配置創業板,但由於某種原因它缺少 其他所需的國家防範機制,並且似乎對node.js的齒輪,它 感覺就像我做錯了什麼不使用什麼vue-cli webpack 提供。

回答

2

一般公認的「行業標準」的方式有部件能夠從其他組件看到的數據,或者形成真正的任何地方是使用VueX。這與React中的Redux類似。它起初看起來有點複雜,但實際上它很簡單,VueX讓你無所不知,任何給定的組件都能看到任何給定的數據,並同時解決了許多其他問題。試試看。

當然,另一種方式是在你的應用程序模塊,實現一種「單例模式」,使任何代碼都可以只轉儲數據和獲取數據了。

+0

是啊,我用Vuex了。這是有道理的,我只是將它轉儲到應用程序加載的商店。 –

+0

Vuex的意思是在應用程序爲客戶端加載後會改變的狀態。如果這些構建配置變量不會通過VUE應用程序的生命週期改變你可能會更好把他們的服務容器內,如[VUE容器(https://www.npmjs.com/package/vue-container )。 – Sean