逻辑思维篇

开发新功能,需要修复线上bug

  1. git stash 加上使用 webstorm git功能 代码片段保存
  2. git checkout dev
  3. git checkout -b fix-问题 & git commit
  4. git checkout dev & git merge fix-问题
  5. git push 触发 CI 测试
  6. 代码合并
    1. git checkout master + git merge dev
    2. pull request
  7. 功能稳定后可以考虑删除 fix 分支
  8. git checkout 原本开发的分支
  9. git stash pop

进入详情页,返回页面重新刷新了,如何解决

Vue

直接使用 keep-alive 组件。在 router 配置 meta 字段,添加 keepAlive = true。在 beforeRouteLevae 钩子记录滚动条位置,在 beforeRouteEnter 设置滚动条位置。

React

方法1:
使用 react-router-cache-route 库实现。

方法2:

  1. 保存页面数据和滚动条位置到 useRef 中,如果有则直接获取。
  2. 有需要可以判断如果首页,则清空缓存。防止获取淘汰数据。

SPA页面白屏解决方案

方法1:
使用 prerender-spa-plugin 预渲染插件,编译时把静态内容提前放到 app 中。

方法2:
使用骨架屏 age-skeleton-webpack-plugin 插件,原理是通过 Puppeteer 获取数据后,通过算法替换成一些占位图。

方法3:
直接使用 ssr 服务端渲染

在vue项目开发中,如果有多个子项目想共用一套 js 库或者是多个子项目 想集成到一个vue项目里面,如何实现比较合理

前者抽成 npm 包比较合适, 或者模块联邦提前公共逻辑.

后者要保留其他项目不做调整, 使用微前端.

解决请求嵌套

直接 async/await

自己写个node中间层,整合数据

防止别人开发模式调试

方法1:
死循环 debugger

方法2:
禁用右键

方法3:
禁用快捷键

如果浏览器内核过低, 如何兼容语法

通过 core-js 可以注入原型的方式, 兼容当前浏览器未实现的方法