记录人:晚风吹行舟三里
开始时间:2026年2月
更新频率:每周整理一次
一、网络与HTTP
-
token放在请求中
-
位置:放在请求头
Authorization: Bearer <token> -
实现:在请求拦截器里统一添加,避免每个请求手动写
-
注意事项:
- token过期处理(刷新token或跳转登录)
- GET请求也可能需要带token(如图片鉴权)
-
GET请求body传参
-
HTTP规范:HTTP/1.1规范没有禁止GET带body,但很多服务器、代理、CDN会忽略或拒绝
-
优点:可以把复杂参数放body,不污染URL
-
缺点:
- 不符合惯例,可能被拦截
- 缓存/CDN可能出问题
- 长度限制不明确
-
结论:GET请求的参数放URL,复杂参数用POST
-
HTTP缓存相关
- 待补充:Cache-Control、Etag、Last-Modified
二、安全
-
对称加密 vs 非对称加密
| 类型 | 原理 | 特点 | 常见算法 | 应用场景 |
|---|---|---|---|---|
| 对称加密 | 加密解密用同一把钥匙 | 速度快,但钥匙怎么安全传给对方是问题 | AES、DES | 文件加密、大容量数据加密 |
| 非对称加密 | 公钥加密,私钥解密 | 速度慢,但安全,公钥可以公开传 | RSA、ECC | HTTPS握手、数字签名 |
实际应用:HTTPS握手时,先用非对称加密安全地传递对称密钥,后续通信用对称加密。
三、面向对象编程(OOP)
-
三大特性:封装、继承、多态
| 特性 | 含义 | 类比 | 代码体现 | |
|---|---|---|---|---|
| 封装 | 把数据和操作数据的方法包在一起,对外只暴露该暴露的 | 遥控器:只暴露按钮,内部电路隐藏 | private属性 + public方法 | |
| 继承 | 子类拿父类的东西,不用重新写 | 孩子继承父母的基因 | class Dog extends Animal | |
| 多态 | 同一个方法,不同对象有不同的实现 | 都是“按喇叭”,宝马和公交车声音不同 | 子类重写父类方法 |
-
多态示例
typescript
class Animal { speak() { console.log('动物叫') }}
class Dog extends Animal { speak() { console.log('汪汪') }}
class Cat extends Animal { speak() { console.log('喵喵') }} *// 都是调用speak,结果不同——这就是多态*
const animals = [new Dog(), new Cat()]animals.forEach(a => a.speak())
四、设计模式
-
什么是设计模式?
前辈们总结的“代码界的套路”——针对反复出现的问题,给出标准化的解决方案。
-
三大类23种
| 分类 | 作用 | 常见例子 | ||
|---|---|---|---|---|
| 创建型 | 怎么创建对象 | 单例模式、工厂模式 | ||
| 结构型 | 怎么组织类和对象 | 代理模式、适配器模式 | ||
| 行为型 | 对象之间怎么通信 | 观察者模式、策略模式 |
-
日常开发中已经在用的设计模式
- 观察者模式:Vue的响应式系统(数据变,页面自动更新)
- 单例模式:Vuex的store(整个应用只有一个)
- 工厂模式:Vue的
createApp()
五、项目实战·文件预览(Vue3+TS)
-
多类型文件预览方案
| 文件类型 | 预览方案 | 备注 | ||
|---|---|---|---|---|
| pdf.js 或 | pdf.js功能更全 | |||
| docx | docx-preview库 | 需配合jszip | ||
| Excel | xlsx库 | 可解析后渲染成表格 | ||
| png/jpg | 原生支持 |
-
封装思路
- 统一组件:传入
fileUrl和fileType - 内部用
v-if/v-else或动态组件渲染不同预览方式 - 公共逻辑抽成 hooks
-
待实现
- 大文件分片加载
- 预览失败降级方案
六、项目实战·路由与菜单
-
需求拆解
- 通过URL参数区分不同页面
- 左侧菜单高亮
- 底部tag标签(多页签)
- 页面内标题动态变化
-
技术要点
| 功能 | 实现思路 | |||
|---|---|---|---|---|
| URL参数 | route.query 获取参数,动态渲染内容 | |||
| 菜单高亮 | route.path 匹配菜单项 | |||
| tag标签 | keep-alive + 自定义tab列表 | |||
| 页面标题 | 根据参数动态设置 |
-
这套方案的价值
大厂后台管理系统标配——多页签、可缓存、可关闭。
七、项目实战·文件上传
-
文件上传大小限制统一声明
- 前端限制:在配置文件或环境变量中统一声明最大上传大小,上传前校验,超过则提示
- 后端限制:后端也要做限制,防止前端绕过
- 示例配置:
typescript
// config/upload.tsexport const MAX_FILE_SIZE = 10 * 1024 * 1024 // 10MB
-
待补充
- 大文件分片上传
- 断点续传
- 上传进度
八、nginx
-
nginx三板斧
| 板斧 | 作用 | 一句话理解 | ||
|---|---|---|---|---|
| 反向代理 | 把请求转发给后端服务器 | 前台只认识nginx,不认识后端 | ||
| 负载均衡 | 把请求分给多个后端 | 别让一个后端累死 | ||
| 静态资源服务 | 直接返回HTML/CSS/JS | 不用经过后端,更快 |
-
方法论
遇到性能问题,先看这三板斧能不能解决。
九、性能优化·雅虎35条
-
是什么
Yahoo! 团队总结的提升网站速度的35条最佳实践。
-
核心分类
| 类别 | 核心思想 | 典型做法 | ||
|---|---|---|---|---|
| 内容 | 减少请求次数 | 合并CSS/JS、CSS Sprites | ||
| 服务器 | 让缓存生效 | 配Expires、用CDN、Gzip压缩 | ||
| CSS | 别让样式堵住渲染 | CSS放顶部、别用CSS表达式 | ||
| JavaScript | 别让脚本拖慢页面 | JS放底部、延迟加载 | ||
| Cookie | 别让饼干太大 | 减小Cookie、静态资源用无Cookie域名 | ||
| 图片 | 别让图太大 | 优化图片、别在HTML里缩放 | ||
| 移动端 | 照顾小屏设备 | 单个内容小于25K |
-
最核心的几条
- 减少HTTP请求:80%的响应时间花在下载组件上
- 用CDN:把静态资源放离用户近的地方
- 加Expires/Cache-Control:让浏览器缓存
- CSS放顶部,JS放底部:别让脚本阻塞渲染
- Gzip压缩:文件体积能小70%
-
对工作的启示
和后端聊接口时,可以问:“这个接口能缓存吗?要不要配Cache-Control?”
十、工作方法与认知
-
前端写操作手册(开发阶段)
| 利 | 弊 | 怎么平衡 | ||
|---|---|---|---|---|
| 新人能快速上手 | 写得细了花时间 | 只写“变不动的”和“不看就废的”——项目结构、启动步骤、关键逻辑 | ||
| 自己回头看也清楚 | 需求一变就得改 | 让代码自己说话 | ||
| 领导觉得你有文档意识 | 写得粗了没用 | 定期更新,不求完美 |
-
多项目之间平衡自己
- 优先排:哪个急?哪个重要?哪个领导盯得紧?
- 每天列三件事:今天必须完成的
- 不是技术问题,是精力管理问题
-
方法论
遇到问题,先想“有没有套路”:
- nginx有三板斧
- 性能优化有雅虎35条
- 写代码有设计模式
- 目标:遇到一类问题,就总结一套自己的“三板斧”
-
形成自己的开发风格
- 稳定可预期:命名习惯、目录结构、注释方式一致
- 别人能看出来“这是你写的”
- 怎么形成:多写、多回头看、多改
-
能力强的开发直接跟后端说需要多少接口
-
这不是“强势”,是能想清楚自己要什么
-
怎么做:
- 先想清楚页面要什么数据
- 画出数据结构
- 拿着图去和后端聊
- 告诉后端:这几个数据拼一起返回,别让我调两次
十一、测试相关
-
黑白灰盒
| 类型 | 含义 | 应用场景 | ||
|---|---|---|---|---|
| 黑盒 | 不管内部,只看输入输出 | 功能测试 | ||
| 白盒 | 看内部代码逻辑 | 调试、自测 | ||
| 灰盒 | 知道一点内部结构,但不全看 | 调接口时——知道后端大概怎么设计的,但不用看后端代码 |
十二、每周记录模板
本周日期:__2__月__24__日 - __2__月__27__日
| 分类 | 记录内容 | 状态 | ||
|---|---|---|---|---|
| 网络/安全 | 待整理/已掌握 | |||
| OOP/设计模式 | 待整理/已掌握 | |||
| 项目实战 | 待整理/已掌握 | |||
| 工作方法 | 待整理/已掌握 | |||
| 性能优化 | 待整理/已掌握 |
本周最有价值的1个收获:
下周想解决的问题:
十三、待补充清单
- 继承、封装、多态 写一个完整的TS示例
- 对称加密和非对称加密 画对比图
- 文件预览组件 封装一个可复用的
- 多页签管理系统 自己实现一个demo
- nginx 本地搭一遍,试三板斧
- 雅虎35条 挑5条在工作中实践