本文適用於先後端分離的項目,固然有興趣的同窗也能夠看一下,瞭解一下我口中的「孽緣」;html
在吃螃蟹前我們先了解一下幾種傳統的前端開發模式(以java web爲例):前端
傳統開發模式所面臨的兩個問題就是:開發效率、數據。咱們在繪製頁面的時候固然能夠用假數據先繪製上去,也能夠本地mock數據,可是有時候遇到一些複雜的業務場景的時候,這些並知足不了咱們的需求,就算知足了也會很繁瑣很繁瑣。整個開發模式其實先後端有工做交叉的狀況出現,後端寫接口的時候其實都已經測試過接口了,各類數據接口都存在了,前端再去mock有時候就是一種資源浪費。固然我相信小夥伴們會在這裏提出一個疑問:那若是後端沒有寫接口前我就要去寫前端頁面怎麼辦?沒事,繼續往下面看。java
今天我想講的是在一個先後端分離的項目開發過程當中,咱們怎麼去作好這個前端開發模式,來保證前端在開發過程上不會由於太依賴與後端而下降開發效率。有不少項目都是採用了RESTfull 架構:後端提供API,前端調用後端接口,而後ajax一個又一個的接口。nginx
在瞭解傳統的建立開發模式後,這邊給你們介紹一下我所認識的前端開發模式。在某些業務場景裏,咱們須要用到線上的數據,而非咱們本地mock。又或者有時候咱們線上代碼是打包混淆過的,咱們須要去跟蹤一個問題,每每直接去線上調試也是一件比較麻煩的事情,固然還有不少沒列舉出來的狀況。因此針對以上幾種情景,我大體分爲如下幾種方案:web
以上幾種均是我在開發中用到過的開發模式,下面我給你們稍微講解一下怎麼去實現各個開發模式,而後也會像你們簡述一下優缺點。
本次案例信息以下:ajax
首先拿到線上登陸的session,保證用戶操做合法。而後將域名映射到本地,經過域名訪問本地項目。將全部請求API前面都加上一個新的前綴,而後將apache server 對新前綴的全部API請求進行攔截請求而且代理轉發。apache
代理軟件比較簡單粗暴,原理就是攔截全部請求,匹配到是你想攔截的文件就去代理到本地文件。json
登陸後打開代理工具,刷新一下頁面,而後把你想要調試的文件map local,這樣就能夠直接進行線上調試了後端
RAP工具模擬數據接口,前端頁面引入指定js腳本,會攔截請求,達到數據模擬的效果。api
nginx監聽指定端口的服務,並對請求進行代理轉發。
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } #監聽代理指定文件或目錄 server { listen 80; server_name local.damingge.com; charset utf-8; index /index.xhtml; location /static { #proxy_pass $scheme://$host$request_uri; #proxy_set_header Host $http_host; root /www/damingge; } location / { proxy_pass http://151.101.100.133/; proxy_set_header Host www.damingge.com; } } include servers/*; }
咱們將全部/static/xxxx/xxx下的請求都進行了攔截,也就是說咱們請求到的資源文件都是本地工程項目裏的。而後將其餘請求代理到遠程服務器上去,而且設置請求host爲www.damingge.com,這樣子處理的話能夠防止跨域問題。