本文适用于先后端分离的项目,固然有兴趣的同窗也能够看一下,了解一下我口中的“孽缘”;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,这样子处理的话能够防止跨域问题。