趁著新春開年研究了一些小問題坯沪,小的菜鳥一枚筒严,如有錯誤請指教,大牛請繞道尉辑。
用vue腳手架搭建出的項目幫我們省去了非常多的功夫帆精,大大的增加了前端人員的壽命,但是如果只是會用的話我覺得還是欠缺很多的隧魄,所以我這里列出幾點我剛算弄明白的一些問題卓练,以免以后有懵逼。
項目中的環(huán)境變量process對象
用過vue腳手架開發(fā)項目的伙伴們應(yīng)該多少見過一個東東??process.env?
我們先來說下process是啥购啄,他是node中的一個全局對象? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?官方解釋:?process?對象是一個?global?(全局變量)襟企,提供有關(guān)信息,控制當(dāng)前?Node.js?進程狮含。顧名思義顽悼,這個對象保存著項目運行中的所有環(huán)境信息曼振,有興趣的伙伴可以在運行過程中去打印看看里面的詳細信息,這里我們不多做討論蔚龙,我們接著直奔主題冰评。
process.env是什么?上面我們解釋到process是node中的一個環(huán)境對象府蛇,env當(dāng)然就是它的一個屬性咯集索,env-顧名思義,就是environment(環(huán)境)汇跨,連一個四級都沒過的我都知道务荆,如果你不知道的話就去面壁吧。所以這個屬性就是用來保存我們的環(huán)境變量了穷遂。知道這個后函匕,我們再來看下一個問題? process.env.NODE_ENV是啥呢?請看下面
看到圖一盅惜,腳手架搭建出來的項目中的config文件夾中有dev.env和prod.env這兩個js,我們發(fā)現(xiàn)里面有定義一個叫NODE_ENV的參數(shù)忌穿,說到這里抒寂,我們心里大概就已經(jīng)猜到了,process.env.NODE_ENV里面的NODE_ENV就是在這里來的掠剑。那么問題來了屈芜,這兩個變量是什么時候被設(shè)置到process.env對象里面的呢。請聯(lián)想下朴译,不把項目跑起來井佑,怎么把變量添加進去。所以眠寿,跑起來成為了問題的線索 --- npm run dev
廢話不多說躬翁,請看圖二,控制臺已經(jīng)很清楚的告訴我們盯拱,在執(zhí)行npm run dev命令的時候盒发,它去運行了webpack.dev.config.js,所有坟乾,這個配置文件成為了我們線索迹辐,請看下面圖三
喲西,這下真相大白甚侣,同志們看到?jīng)],是plugins(插件)配置中的webpack.DefinePlugin插件把我們的NODE_ENV參數(shù)給添加進去的间学。至于webpack.DefinePlugin插件殷费,我大概去網(wǎng)上查閱了一下印荔,這里做個簡單的解釋:可以把變量設(shè)置成全局變量。這里我們看到详羡,這里把NODE_DEV設(shè)置成process.env屬性的屬性值了仍律。所以,這下大家應(yīng)該就知道了NODE_DEV這個東西到底是哪里來的了实柠。
OK水泉,說到這里,有些人會疑問窒盐,為什么我要去找這個東西草则。有句話叫沒有應(yīng)用場景的技術(shù)都是耍流氓,所以我開始說下這東西可以咋用蟹漓,歡迎大家補充炕横。
我們知道config文件夾中index.js的proxyTable配置可以幫我們解決跨域的問題,主要這個配置可以讓開發(fā)服務(wù)器去幫助我們發(fā)送請求葡粒,切記其中的changeOrigin參數(shù)設(shè)置為true不能少份殿。那么問題來了,如果在開發(fā)環(huán)境和生產(chǎn)環(huán)境中嗽交,接口請求的地址不一致的問題卿嘲,我們可以像下面這樣子
OK,說到這里就ending了夫壁,如果有錯誤請大家多多指正拾枣,希望對大家有所幫助。