當(dāng)前分析環(huán)境:windows10專業(yè)版1809以vue-cli3的配置(修改過)為例(vue-cli2的類似)"scripts":{"dev":"vue-cli-serviceserve","serve":"vue-cli-serviceserve","build":"vue-cli-servicebuild","lint":"vue-cli-servicelint"}當(dāng)執(zhí)行npmrundev后npm會(huì)去package.json里邊的scripts字段里找dev這個(gè)命令如果配置了的話,就會(huì)執(zhí)行對(duì)應(yīng)的配置vue-cli-serviceservevue-cli-service也是一個(gè)命令,當(dāng)npm的腳本執(zhí)行的時(shí)候就會(huì)去執(zhí)行當(dāng)前項(xiàng)目目錄下的node_modules/.bin/vue-cli-service.cmd這個(gè)文件(可自行查看源碼)vue-cli-service.cmd這個(gè)文件又會(huì)用node執(zhí)行@vue\cli-service\bin\vue-cli-service.js文件(可自行查看源碼)vue-cli-service.js這個(gè)文件里加載著(兩層加載)對(duì)應(yīng)的命令處理文件(@vue\cli-service\bin\commands\serve.js文件寫著可執(zhí)行的命令)然后你就會(huì)發(fā)現(xiàn)它加載了webpack-dev-server這個(gè)包(也就是說vue-cli-service是基于這個(gè)包實(shí)現(xiàn)的)(可自行查看源碼)然后再看webpack-dev-server這個(gè)包,它又是基于express實(shí)現(xiàn)的express又是一個(gè)node框架,它起的web服務(wù)器底層調(diào)用的實(shí)際是node的http這個(gè)核心模塊這時(shí)就出現(xiàn)一個(gè)調(diào)用鏈條npmrundev->vue-cli-serviceserve->webpack-dev-server->express->node->http(vue-cli2的配置少了vue-cli-service這層封裝)所以得出結(jié)論:vue在npmrundev后為什么就在localhost運(yùn)行了?這個(gè)問題的實(shí)質(zhì)是用node調(diào)用http模塊啟用了一個(gè)web服務(wù)器。