2023-07-25 面试
nginx
在 Linux 使用 nginx 对前端项目进行部署
先将前端项目打包成静态文件,然后将静态文件放到 nginx 的 html 目录下,然后配置 nginx 的配置文件,将请求转发到静态文件的目录下
nginx 命令
- 启动 nginx
nginx
- 停止 nginx
nginx -s stop
: 立即停止nginx -s quit
: 完整有序的停止
- 重启 nginx
nginx -s reload
登录模块实现
首先用户填写登录表单后,将表单数据发送到后端进行校验,如果校验通过,后端会生成一个 token,然后将 token 返回给前端,前端将 token 存储到 sessionStorage 或者 localStorage 中,在后续需要进行鉴权的请求接口中将 token 放入请求头的 Authorization 字段中
sessionStorage localStorage 区别
- 生命周期: localStorage 存储的数据没有过期时间,sessionStorage 存储的数据在关闭浏览器,或者标签页后就会被清除
权限设计
- 在用户进入页面时会发送请求页面路由权限的接口,前端根据返回的数据进行动态路由的注册
git 协作开发流程
- GitFlow 协同工作流
解决的问题
希望有一个分支是非常干净的,上面是可以发布的代码,上面的改动永远都是可以发布到生产环境中的。这个分支上不能有中间开发过程中不可以上生产线的代码提交。
对于已经发布的代码,经常会有一些 Bug-fix,不会将正在开发的代码提交到生产线上去。
分成 5 种分支
Master
分支 主分支 用作发布环境,上面的每一次提交都是可以发布的。Feature
分支 功能分支 用于开发功能,其对应的是开发环境Developer
分支 开发分支 开发分支,一旦功能开发完成,就向Developer
分支合并,合并完成后,删除功能分支。Release
分支 当Developer
分支测试达到可以发布状态时,开出一个Release
分支来,然后做发布前的准备工作。这个分支对应的是预发环境。之所以需要这个Release
分支,是我们的开发可以继续向前。(一旦Release
分支上的代码达到可以上线的状态,那么需要把Release
分支向 Master 分支和Developer
分支同时合并,以保证代码的一致性。然后再把Release
分支删除掉。)Hotfix
分支 是用于处理生产线上代码的Bug-fix
,每个线上代码的Bug-fix
都需要开一个Hotfix
分支,完成后,向Developer
分支和Master
分支上合并。合并完成后,删除 Hotfix 分支。
在这个工作流中,需要做的
- 需要长期维护 Master 和 Developer 两个分支。
- GitHub Flow 协同工作流
Forking flow
- 每个开发人员都把“官方库”的代码 fork 到自己的代码仓库中。
- 然后,开发人员在自己的代码仓库中做开发,想干啥干啥。
- 因此,开发人员的代码库中,需要配两个远程仓库,一个是自己的库,一个是官方库(用户的库用于提交代码改动,官方库用于同步代码)。
- 然后在本地建“功能分支”,在这个分支上做代码开发。
- 这个功能分支被 push 到开发人员自己的代码仓库中。
- 然后,向“官方库”发起 pull request,并做 Code Review。一旦通过,就向官方库进行合并。