個人記錄:Node 動態識別運行環境
可能我的描述不準確
可以動態識別當前環境是開發模式還是線上模式
比如:
var HOST = {
DEV:'192.168.1.235',
PRO:'192.168.1.231'
}
var PORT = {
DEV:'8080',
PRO:'802'
}
var PATH = {
DEV:'/mockjsdata/2',
PRO:''
}
var RUN = 'PRO';
工作中大家都有幾種環境的區分,開發環境,測試環境,線上環境,對於我之前的一個項目來講,區別在於host:port/path,在開發環境–>測試環境–>線上環境,每次都是手動在代碼裏修改 RUN 的值,很麻煩,所以主管便讓我實現可以動態識別…
BUT,我是前端菜鳥啊,不懂啥教動態識別啊,於是乎百度…谷歌…羣友…各種諮詢,也許是我描述不對,所以並沒有得到想要的答案。
然而呢,突然發現這個問題其實很簡單的,之前沒怎麼接觸過命令行,常用的命令不過是 node * cnpm install *
node裏邊其實有個 process 對象,這個對象是Node的一個全局對象,它提供當前Node進程的信息。它可以在腳本的任意位置使用,不必通過require命令加載。好了,廢話說完了,真正的乾貨在下邊…
process.env
process.env
屬性返回一個對象,包含了當前Shell的所有環境變量。比如,process.env.HOME返回用戶的主目錄。
我的做法是,新建一個環境變量RUN,用它確定當前所處的開發階段,生產階段設爲PRO,開發階段設爲DEV,然後在腳本中讀取process.env.RUN即可。
運行腳本時,改變環境變量,可以採用下面的寫法。
var HOST = {
DEV:'192.168.1.235',
PRO:'192.168.1.231'
}
var PORT = {
DEV:'8080',
PRO:'802'
}
var PATH = {
DEV:'/mockjsdata/2',
PRO:''
}
var RUN = process.env.RUN||'DEV';
然後在運行文件時這個樣子:
set RUN=PRO && node ./bin/www
好了,這樣就可以了,首先會先讀取RUN有沒有賦值,如果沒有就默認使用開發地址,如果設置了值就會使用設置的地址,當然你也可以增加判斷,如果輸入不正確進行提示之類的…
關於process對象的詳細介紹,可以去看下阮大神的文章:http://javascript.ruanyifeng.com/nodejs/process.html#toc4
全文完,希望對初學Node的大家有些許幫助