前后端代码分离
来源:互联网 发布:up to date数据库 编辑:程序博客网 时间:2024/05/15 19:12
前端代码和后端代码分离
公司项目开发为了方便前端开发人员和后端开发人员的进度,使用了前后端分离。具体好处不列举了,我也不是很知道。知道的小伙伴可以回复我。
由于我们是代码提交到gitlab,jenkins触发脚本生成镜像到harbor,触发脚本,在k8s中delete deployments,create deployments,镜像从harbor中拉取。当然这个只是公司测试,实际上并不严谨,毕竟一个项目开发前哪里需要我先创建一个deployments的说法。说这些主要是与后面实现步骤承接。
接下来主要说前后端分离的实现。实现前后端分离最大问题是前端请求的跨域问题。在测试的时候,我们使用了google的插件web server for google。【操作使用简单】
实际运用的时候是通过nginx部署前端代码,修改nginx的配置文件,拦截特定路径请求到后端。
实现其实挺简单,具体操作我写在下面:
1、前端代码生成镜像
在安装docker的虚拟机中执行以下语句拉取nginx镜像,如果你不是用docker,也可以自己部署一个nginx。我是从网易丰巢拉取的镜像
docker pull hub.c.163.com/library/nginx:latest
构建自己的镜像 将dockerfile文件和前端代码放在同一个目录下,这里需要注意的是将web项目完整导入到nginx:latest中需要add ./而不是×或里面的文件夹、文件,否则它会将文件夹里面的文件全拿出来,密密麻麻一片。我的dockerfile ,基础镜像是nginx:v1,nginx的index页面地址是/usr/share/nginx/html/ 这里将自己的web项目替换nginxindex.html页面。
FROM nginx:v1
MAINTAINER ly
ADD ./ /usr/share/nginx/html/
执行构建语句
docker build -t="web:v1" .
使用docker images查看自己创建的镜像
使用web:v1镜像运行容器,以30066端口监听80端口
docker run -d -p 30066:80 web:v1
到这里你就可以通过docker所在IP:30066访问自己的前端项目了。
接下来我们就要进入到容器中修改配置文件,指向后端访问地址。
docker ps 查看容器CONTAINER ID 假设为xxx
docker exec -it xxx bash 进入容器
我的网易丰巢下载过来的nginx镜像配置文件所在是/etc/nginx/conf.d目录下的default.conf文件
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
可以看到nginx默认访问的是/usr/share/nginx/html/index.html
由于我的请求是/rest/aaa /rest/xxx这种类型,打个比方get一个后端请求http://10.100.100.139:8080/rest/getlist
我在location / 配置前上增加了一个
location /rest {
proxy_pass http://10.100.100.139:8080;
}
那么只要请求有/rest,首先到http://10.100.100.139:8080。如果没找到才到location /
这个拦截和haproxy基本一致。
由于是本地调用,所以前端调用10.100.100.139:8080/rest/getlist请求只需要写/rest/getlist即可。解决了跨域问题。
记得修改配置后执行
nginx -s reload 使配置生效。
当然这里只是测试。如果实际生产中我们可以docker build将需要修改的配置文件add进去,然后执行脚本nginx -s reload。
备注:这里为了方便修改个人建议最好将请求变成常量定义到一起,放在一个文件中,方便后期修改,不用再到js文件中去寻找。
- 前后端代码分离
- web前后端分离
- 前后端分离
- 前后端分离问题
- 前后端分离
- 前后端分离方案
- 前后端分离(一)
- 前后端分离(二)
- 前后端分离(三)
- 前后端分离实践
- 前后端完全分离
- 前后端分离案例
- 谈谈前后端分离
- 前后端分离开发
- 前后端分离势在必行!
- nodejs前后端分离
- 前后端分离笔记
- 前后端分离架构
- WingIDE 设置支持中文注释
- Gson项目使用全解析
- 需要读的书
- Sphinx参考手册(九)
- Servlet-2
- 前后端代码分离
- 酷毙了_全国首个程序员主题咖啡店居然长这样!
- python+网络爬取信息+邮箱通知
- 什么是Azure Data Lake
- Android获取本机IP地址
- 批处理中的echo命令图文详解
- LeetCode Array Partition I
- Oracle数据类型
- STL中的map使用