Vue 類的項目開發中項目結構基本都是類似于 Vue-cli 生成的方式,這種方式開發中,最常用到的模式是開啟代理進行 mock 調試或遠程調試,也就是使用了 Vue-cli 設置的配置 proxyTable 或者直接使用 Webpack-dev-server提供的 proxy 選項。它是采用了 http-proxy 庫,所以具體配置可查看:
https://github.com/nodejitsu/node-http-proxy#options
利用配置的這些參數我們可以做更為靈活的配置,達到更好的效果
使用需求
假設我們本地開發目前以下幾種狀態:
本地開發,數據使用本地的 mock Server 涉及權限接口使用本地 mock 數據,其他全部使用指定的一臺遠程機器 涉及權限接口使用本地 mock 數據,其他數據分接口使用不同的遠程機器 所有接口使用同一臺遠程機器方案
先看下經典的proxyTable 寫法:
proxyTable: { '/authui/': { target: target, changeOrigin: true }, '/vendor/': { target: target, changeOrigin: true }}其中用到了 changeOrigin 字段,主要是用于改變請求的 header。細化下需求:
本地開發:target 指向 localhost 的某個端口即可。至于 host 的驗證肯定是不需要的 部分本地,其他固定的一臺遠程機器:需要配置 localhost 和遠程的地址,遠程地址多半是需要驗證 host 的 同二,但機器有多臺:需要手動配置多臺機器 同一臺遠程機器,此時機器可能要嚴格驗證,即 IP 也必須使用域名,配置好系統 host 才可使用說明:嚴格驗證 host 和普通驗證 host 區別主要在于嚴格驗證時,請求的 url 必須是遠程機器的域名,
不能直接修改請求的 header 的 host 實現,即必須在系統 host 層面配置好域名。
分析完成具體需求好,就開始準備實現的方式。原有開發方式是執行 npm run dev,如果我們需要在命令行層面添加配置,就需要設置為 npm run dev --param=paramvalue 的方式。對于使用 npm 的 script 腳本執行的命令,
它參數的獲取無法通過 process.env 獲得,而且通過 process.env.npm_config_paramName 的方式獲取,
使用現成的命令行參數解析庫也不是很方便,但為了省事,暫時還是使用 npm 自帶的解析。
請求發起過程中需要以下幾個參數:
host: 發起請求需要指向的 host,可能每臺機器驗證并不相同 port: 代理轉發的端口 receiver: 用于 push 的遠程地址,內包含了 ip 地址,為了省事,沒有單獨列出 ip 地址然后定義代理請求自定義類型,用于配置:
local: 本地地址,即 localhost remote: 指定的遠程機器 其他自定義類型:用于在配置文件中已經指定的其他類型 原版本的請求,如 'http://xxx' 或者 Object 類型的配置,此類代理永不處理
|
新聞熱點
疑難解答
圖片精選