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 协作开发流程

  1. 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 两个分支。
  1. GitHub Flow 协同工作流

Forking flow

  • 每个开发人员都把“官方库”的代码 fork 到自己的代码仓库中。
  • 然后,开发人员在自己的代码仓库中做开发,想干啥干啥。
  • 因此,开发人员的代码库中,需要配两个远程仓库,一个是自己的库,一个是官方库(用户的库用于提交代码改动,官方库用于同步代码)。
  • 然后在本地建“功能分支”,在这个分支上做代码开发。
  • 这个功能分支被 push 到开发人员自己的代码仓库中。
  • 然后,向“官方库”发起 pull request,并做 Code Review。一旦通过,就向官方库进行合并。
贡献者: huxiguo