自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我本地明明是好的???前端怎么本地復(fù)現(xiàn)線上問題?

開發(fā) 前端
數(shù)據(jù)不同。本地更多的是用的 test 環(huán)境的數(shù)據(jù),live 用的真實環(huán)境的數(shù)據(jù)。不同數(shù)據(jù),頁面的渲染以及交互可能是不同的。

試想一下,某天 QA 給你報了一個線上問題,那你會怎么做?

我本地明明是好的?。靠隙ㄊ钦`報!

當然這種情況大部分是你內(nèi)心的 YY,事實上是真的有問題。

看完 QA 的復(fù)現(xiàn)路徑,你嘗試在本地復(fù)現(xiàn),然后你本地卻怎么也無法復(fù)現(xiàn)。

究其原因,還是 live 和本地的環(huán)境差異導(dǎo)致,這里的原因就可能有很多,我理解主要是以下兩點:

  • 數(shù)據(jù)不同。本地更多的是用的 test 環(huán)境的數(shù)據(jù),live 用的真實環(huán)境的數(shù)據(jù)。不同數(shù)據(jù),頁面的渲染以及交互可能是不同的。
  • 打包配置不同。前端在使用一些打包工具,比如 webpack 的時候,一般會區(qū)分 dev 和 prod 環(huán)境。不同的環(huán)境配置不一樣,比如 dev 環(huán)境需要開啟熱更新,prod 環(huán)境需要做一些代碼壓縮。
  • ...

使用 nginx 本地部署我們打包出來的代碼

對于上述的第二點,假如要復(fù)現(xiàn)的話,也很簡單,只需要將我們本地 build 出來的代碼跑起來,不就可以了?這里我們使用 nginx 本地部署我們打包出來的代碼。

具體的安裝 nginx 的流程,我們這里不做討論,請各位看官自行 Google。如果是 Mac,并且你安裝了 brew。如下:

brew install nginx

第一步,打包你的代碼。

圖片

第二步,修改你的 nginx? 配置文件。Mac 是 /usr/local/etc/nginx/nginx.conf。修改 server root 中的配置,指向你項目打包后的靜態(tài)文件存放的地址。

server {
listen 8080;
server_name localhost;
location / {
- root html/static;
# 項目打包后的靜態(tài)文件存放的地址
+ root /Users/guangpingfeng/Documents/shopee/projects/yapi;
index index.html index.htm;
}
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

第三步,啟動 nginx。至此,你就可以通過 http://0.0.0.0:8080 訪問你的頁面了,其跟正式環(huán)境的前端打包資源是一致的。

# 啟動
nginx

其它關(guān)于 nginx 更多命令:

  • 退出服務(wù):nginx -s quit
  • 強制關(guān)閉服務(wù):nginx -s stop
  • 重載服務(wù):nginx -s reload ?。ㄖ貑?,服務(wù)不會中止)
  • 驗證配置文件:nginx -t
  • 使用配置文件:nginx -c
  • 使用幫助:nginx -h

有沒有簡單一點的——whistle

這里不對 whistle 的過多介紹,感興趣的可以看我之前的一篇文章——前端應(yīng)該知道的web調(diào)試工具——whistle[1]。

使用 whistle 的思路,就是使用本地打包出來的資源代理到線上。

以上面的例子為例。我們希望線上訪問 static/prd? 目錄下的靜態(tài)資源能夠訪問到本地打包出來的資源。只需要配置這么一條規(guī)則(這里演示的域名我都使用 www.test.com)。whistle 會根據(jù)匹配 url 的剩余路徑自動補齊本地文件路徑,并自動忽略后面的請求參數(shù):

www.test.com/static/prd file:///Users/projects/yapi/static/prd

比如訪問 https://www.test.com/static/prd/lib3@d380218b438aef3811b2.js? 會代理到本地的 file:///Users/projects/yapi/static/prd/lib3@d380218b438aef3811b2.js。

這個是非常有用的,但是有一些時候,你會發(fā)現(xiàn)打包出來的 md5 串不一樣,這種情況可以使用通配符匹配的方式。

匹配模式必須以 ^ 開頭(如果需要限制結(jié)束位置可以用 ,為通配符,支持通過0...9 獲取通配符匹配的字符串,其中 $0 表示整個請求 url。

上面的例子的規(guī)則就可以表示如下:

^www.test.com/prd/**.*.* file:///Users/projects/yapi/static/prd/$1.$3

在訪問 www.test.com/prd/index.xxxx.js 的時候,實際上訪問的是 file:///Users/projects/yapi/static/prd/index.js。(注意,這個時候,本地打包出來的代碼是不帶有 md5 的)。

live 數(shù)據(jù)和本地環(huán)境不同

這種情況,最快的方式,就是讓 QA 給我復(fù)制一份 live 的數(shù)據(jù),我直接把接口返回的數(shù)據(jù)代理到本地請求復(fù)現(xiàn)。這個通過 whistle 其實可以很簡單實現(xiàn),不展開細說。

另外,我們平時開發(fā),實際上就是本地起了一個服務(wù),用 webpack 做構(gòu)建時,習慣引入 webpack-dev-server 做內(nèi)存靜態(tài)服務(wù)器,其提供了 proxy 負責做一層代理,我們通過匹配后端接口,然后通過 target 指向 live 環(huán)境。

proxy: {
'/api': {
target: `https://www.test.com,
changeOrigin: true,
onProxyRes(proxyRes, _, res) {
// ****
},
},
},

同理,完全可以用 whistle 進行解決,一條規(guī)則搞定。

^http://0.0.0.0:9528/api/*** https://www.test.com/api/$1

最后

你有遇到過,本地沒有問題,線上有問題么?你們一般是怎么解決的呢?希望本文能夠給你一些思路。

參考

  • 用whistle實現(xiàn)map local[2]
  • vue項目打包本地后通過nginx解決跨域??[3]

參考資料

[1]前端應(yīng)該知道的web調(diào)試工具——whistle: https://juejin.cn/post/6861882596927504392。

[2]用whistle實現(xiàn)map local: https://juejin.cn/post/6844903600611819534。

[3]vue項目打包本地后通過nginx解決跨域??: https://juejin.cn/post/6956774987722129416。

責任編輯:姜華 來源: 前端雜貨鋪
相關(guān)推薦

2017-12-01 10:13:42

前端操作上傳

2024-02-01 08:38:19

項目代碼CICD

2017-12-28 15:20:50

2020-04-28 09:46:34

線上問題排查

2021-02-22 17:13:47

HTTP1.1協(xié)議

2022-07-27 07:32:28

Debug版本arthas

2020-07-20 09:04:05

Java語言Vue

2025-04-29 02:50:00

IntelliJIDEA遠程調(diào)試

2020-12-16 08:33:58

Excel數(shù)據(jù)分析FineBI

2021-02-02 10:53:16

Python編程開發(fā)

2022-10-19 11:17:35

2021-08-07 07:23:08

Webpack中間件模型

2018-04-16 16:31:56

前端開發(fā)從零開始

2024-07-12 09:35:38

前端工具檢驗

2009-09-04 09:24:05

思科認證CCNA考試資料

2010-05-26 14:28:53

本地SVN

2012-05-24 14:58:55

開源代碼

2019-07-18 08:00:49

對象存儲IHS Markit

2020-10-20 10:14:01

JVM內(nèi)存模型

2024-03-18 09:24:00

索引失效SQL
點贊
收藏

51CTO技術(shù)棧公眾號