一言以蔽之,ZanProxy 是一個基於 Node.js
的代理服務器。它專一於幫助前端開發提升開發效率。css
在前端開發中,咱們經常會碰到如下幾個場景:html
爲解決上面這些問題,咱們進行了一些摸索而且作出了一些工具,可是這些工具都這樣或那樣不盡人意的地方。前端
咱們曾將作了一個項目級別的mock工具叫Doraemon
。 這個工具經過修改發送ajax請求的包,會把咱們的請求轉發到咱們的一個 mock 數據平臺,從而實現接口 mock 的功能。nginx
後來咱們又作了一個工具叫zRed
。zRed
是一個 Chrome 瀏覽器的插件,會自動監控 chrome 瀏覽器內的全部請求,根據預先設置的匹配規則,將線上前端 css,js 代碼請求轉發成相對應的本地請求。git
首先,Doraemon
會入侵咱們的項目代碼,強依賴於發送ajax請求的包,不利於工具的擴展和升級。並且這個工具只有 mock 功能,上面不少問題都不能得以解決。github
zRed
因爲是一個chrome
瀏覽器插件,不能在其餘平臺上使用,好比說在移動端上使用,讓真機調試成爲了一個問題。ajax
最終決定的方案是使用一個代理服務器,也就是 ZanProxy, 來幫助咱們解決環境問題。和之前的方案相比,ZanProxy 擁有更豐富的功能,能夠同時在pc端和移動端使用,爲開發者解決環境問題提供更了更多的助力。chrome
ZanProxy 支持代理 http 和 https 的請求,並會根據用戶配置的規則進行請求的轉發。用戶能夠在界面上配置本身的請求轉發規則,將符合某種特徵的請求轉發到須要的地址,能夠是本地的一個文件路徑或者是一個 URL 。咱們常見的用法是將瀏覽器請求的靜態資源如 js,css 等文件轉發到本地,實現用本地代碼對線上頁面的調試。後端
ZanProxy 支持遠程規則,目的是讓團隊成員間共用同一份轉發規則,下降溝通成本。ZanProxy 會在啓動的時候同步最新的遠程規則,全部的變動都能在使用者之間共享。跨域
ZanProxy 支持用戶自定義 Host 解析,方便用戶進行環境的切換,這是經過在轉發時,把域名直接替換成指定 ip 實現的,Hosts 的修改沒有緩存。ZanProxy 不會修改系統的 Hosts 文件,因此用戶在關閉 ZanProxy 後會恢復正常的 DNS 解析,不須要擔憂會有什麼反作用。
ZanProxy 支持用戶自定義請求的響應數據,意味着用戶能夠利用 ZanProxy mock 接口數據,不用再等待接口開發完成。
ZanProxy 可讓用戶監控全部被代理的請求,能看到每個請求的請求數據和響應數據。用戶能夠將手機的代理設置成 ZanProxy ,經過 ZanProxy 監控手機的請求,爲移動端真機調試帶來便利。
隨着業務複雜度的增長,單純的請求轉發已經不能知足業務方的需求,面對不斷增加的需求咱們發現ZanProxy須要有一個機制,讓用戶擴展 ZanProxy 的代理行爲,因而咱們爲 ZanProxy 增長了支持自定義插件的功能,這樣 ZanProxy 就有了很強的擴展性。ZanProxy 支持用戶開發自定義插件進行功能的擴展,知足用戶在各類場景下的需求,好比給全部的響應增長 Access-Control-Allow-Origin
的頭,輕鬆解決跨域問題。自定義插件編寫指南:點擊此處。
雖然 ZanProxy 在有贊內部已經大規模使用了,但確定存在許多的不足和能夠改進的地方,但願你們能多提寶貴的意見。
主頁:https://youzan.github.io/zan-proxy/