哈哈,框架搭完了甩苛,不寫(xiě)下來(lái)心里總感覺(jué)空空的蹂楣。。浪藻。
所以還是為了完善框架而來(lái)>杵取G琛爱葵!
1. 目的
為了讓環(huán)境和域名的對(duì)應(yīng)
2. 嘗試
config.js已經(jīng)建好,里面存放所有的環(huán)境域名反浓。
(1)方法一:設(shè)置全局變量
- 運(yùn)行時(shí) 后面加個(gè)
-- dev/qa/pl
萌丈,用process.env.argv來(lái)獲取最后一個(gè)參數(shù),與文件域名進(jìn)行匹配雷则,就可以拿到當(dāng)前環(huán)境域名辆雾。- 因?yàn)閣ebpack.config.js不能導(dǎo)出或?qū)耄@個(gè)環(huán)境域名需要在request里面和url拼接月劈,因此只能準(zhǔn)備將這個(gè)環(huán)境域名設(shè)置成全局變量度迂,再在request里直接用就行。
問(wèn)題:經(jīng)查找猜揪,webpack提供一個(gè)設(shè)置全局變量的惭墓,在fetch請(qǐng)求處將域名添加在url前面,運(yùn)行代碼后而姐,發(fā)現(xiàn)請(qǐng)求成功了腊凶,但是沒(méi)有返回?cái)?shù)據(jù),所以這是跨域的問(wèn)題拴念。钧萍。因此,pc端還是建議用代理轉(zhuǎn)發(fā)域名吧U蟆7缡荨!
webpack的全局變量用法如下:
之前一直不成功是因?yàn)榘裡slint打開(kāi)了公般,全局變量當(dāng)然沒(méi)有定義万搔,所以編譯不通過(guò)器躏,這個(gè)變量就一直沒(méi)有生效,最后關(guān)掉eslint的no-undef: 0
就行了蟹略,全局變量還是可以拿到的登失。
(2)方法二:使用代理proxy
經(jīng)查文檔,在開(kāi)發(fā)環(huán)境中挖炬,有一個(gè)devServer.proxy提供代理并轉(zhuǎn)發(fā)域名揽浙,因此在webpack.config.js這樣配置:
知道其用法就行,這只是一個(gè)demo例子意敛。proxy會(huì)將本地域名代理成環(huán)境域名(本地運(yùn)行看到的還是本地域名馅巷,看不到代理到的那個(gè)環(huán)境域名,不過(guò)應(yīng)該會(huì)代理成功的草姻,到時(shí)候在項(xiàng)目中實(shí)踐看看— _ —)钓猬。
拓展:
package.json里面運(yùn)行scripts,可以隨便添加環(huán)境域名撩独,一般都是大寫(xiě)敞曹,即可生效,相當(dāng)于定義變量使用综膀。因?yàn)槭褂昧薭abel-preset-react-app指定NODE_ENV的值為“development | test | production”
澳迫,不可以隨意改變,因此剧劝,只能重新定義一個(gè)API_ENV來(lái)獲取運(yùn)行環(huán)境橄登,目的改變域名。
最后讥此,再安利一個(gè)鏈接一篇就讓你學(xué)會(huì)webpack4拢锹,翻譯不錯(cuò),可以看看萄喳。