? ? ? ? 本人node服務(wù)端新人一枚,網(wǎng)上找了不少資料尿赚,看了很多別人的配置信息添忘,感覺(jué)都不是很合適采呐,看的多了自己也明白配置的具體思路跟實(shí)現(xiàn)方式了,以下為我的實(shí)現(xiàn)方式搁骑。通過(guò)package.json里面的scripts配置命令行信息斧吐,然后在命令行信息里面添加參數(shù),在具體執(zhí)行文件里面判斷參數(shù)引入對(duì)應(yīng)路徑的文件仲器。
????????首先我的目錄結(jié)構(gòu)是這樣的
? ? ? ? 實(shí)現(xiàn)目標(biāo)是通過(guò)不同的命令行命令執(zhí)行對(duì)應(yīng)環(huán)境下的配置文件煤率,首先在config目錄下創(chuàng)建三個(gè)文件夾
dev_env.js
stage_env.js
prod_env.js
分別對(duì)應(yīng)開(kāi)發(fā)測(cè)試生產(chǎn)環(huán)境要訪問(wèn)的接口等信息,具體需要什么變量可以自己配置娄周。然后package.json文件需要配置scripts涕侈。
package.json中scripts部分
接下來(lái)是具體執(zhí)行文件,比如我的router.js接收參數(shù)部分煤辨,使用process.argv接收命令行參數(shù)
這樣就可以了裳涛,命令行執(zhí)行npm run dev 執(zhí)行的就是dev_env.js的配置信息,npm run stage 執(zhí)行的就是stage_env.js
本來(lái)以為這樣就萬(wàn)事大吉了众辨,但是實(shí)際跑起來(lái)還有一些問(wèn)題端三,隔一段時(shí)間后就無(wú)法訪問(wèn)了,查詢后才知道是node進(jìn)程掛了鹃彻,然后搜索一番發(fā)現(xiàn)需要進(jìn)程守護(hù)郊闯,nohup試驗(yàn)過(guò)后還是會(huì)莫名中斷進(jìn)程,最后選用了pm2蛛株,這里有一點(diǎn)需要說(shuō)明团赁,pm2安裝需要在服務(wù)器上執(zhí)行安裝命令并且配置軟連接,在本地node環(huán)境執(zhí)行npm install 安裝各種包只限于js中引用使用谨履,比如express等欢摄,就可以直接通過(guò)git上傳的方式在測(cè)試環(huán)境正式環(huán)境部署后就可以直接使用,但不推薦這么做因?yàn)榭梢陨蟼骶鸵馕吨鴦e人也可以上傳笋粟,很容易出問(wèn)題怀挠,除非只有你有權(quán)限析蝴。
安裝成功后,把package.json改成如下代碼就可以了
記錄下pm2常用命令:
pm2 start app.js? ?啟動(dòng)app.js文件
pm2 stop app.js? 關(guān)閉app.js文件
pm2?restart app.js 重啟app.js文件
pm2 list 查看運(yùn)行狀態(tài)
pm2?describe app? 查看app.js運(yùn)行具體信息
?中臺(tái)實(shí)現(xiàn)功能方面绿淋,整體實(shí)現(xiàn)思路是使用arttemplate模板在服務(wù)端讀取views下的文件闷畸,然后通過(guò)axios發(fā)起請(qǐng)求獲取后端接口數(shù)據(jù),把頁(yè)面跟數(shù)據(jù)集成后再返回給客戶端吞滞。具體模板配置及使用就不具體介紹了佑菩。說(shuō)說(shuō)我遇到的項(xiàng)目中的問(wèn)題吧。
????????因?yàn)榻涌跀?shù)據(jù)我在服務(wù)端請(qǐng)求過(guò)了冯吓,所以客戶端不會(huì)再發(fā)起這個(gè)請(qǐng)求倘待,但是一些json類型的數(shù)據(jù)客戶端還要用到,因此要把接口數(shù)據(jù)傳輸給客戶端组贺,這部分內(nèi)容通過(guò)兩種方案來(lái)實(shí)施了,簡(jiǎn)單數(shù)據(jù)類型比如字符串或者數(shù)字的通過(guò)在html上添加屬性祖娘,復(fù)雜json類型的通過(guò)cookie傳遞
服務(wù)端:res.cookie('desp',JSON.stringify(data.entity.desp))
客戶端:JSON.parse(decodeURIComponent(config.getCookie('desp')))
????????注意服務(wù)端存cookie需要轉(zhuǎn)成json字符串失尖,客戶端接收需要用decodeURIComponent處理后再轉(zhuǎn)成json對(duì)象,如果報(bào)502錯(cuò)誤,大概率是你的cookie存儲(chǔ)超過(guò)了4kb渐苏,這種情況下服務(wù)端是不會(huì)報(bào)錯(cuò)的掀潮。