关键认知:前端不是"美化页面"那么简单,PM不懂前端,就不知道哪些需求"简单",哪些需求"要命"。
一、前端开发的血泪教训
1.1 一个"简单需求"让前端加班3天
2023年,我在做一个电商项目,上线前一天,运营提了个需求:
"首页商品卡片加个'限时抢购'的动态倒计时标签,很简单吧?"
我当时觉得确实简单,就写进需求:
• 商品卡片右上角显示倒计时 • 倒计时结束自动隐藏标签
然后前端告诉我一个晴天霹雳:
"首页有100个商品,每个都要独立倒计时,会导致页面卡顿。需要重新设计渲染逻辑,至少3天。"
为什么会卡顿?
我后来才明白,100个倒计时意味着:
• 每秒钟要更新100次DOM(页面元素) • 浏览器要不断重新渲染页面 • 用户滑动页面会明显卡顿
如果一开始我懂前端:
我会这样设计:
• 只在可视区域显示倒计时(用户看不到的不渲染) • 使用一个统一的定时器管理所有倒计时 • 或者直接用静态图片,避免性能问题
代价:
• 需求延期3天 • 前端加班到凌晨 • 第二天上线bug频出
教训:看似简单的需求,可能涉及复杂的前端性能问题。PM必须懂基础的前端知识。
1.2 PM眼中的前端 vs 真实的前端
PM眼中的前端(误解):
真实的前端工作:
PM常见的误解:
| "改个颜色很简单" | ||
| "加个字段而已" | ||
| "就加个动画" | ||
| "抄XX网站的效果" |
1.3 不懂前端的PM vs 懂前端的PM
需求评审时:
| 提需求 | ||
| 问工期 | ||
| 看设计稿 |
产品设计时:
| 交互设计 | ||
| 性能考虑 | ||
| 兼容性 |
二、HTML/CSS/JavaScript是什么关系
2.1 HTML:网页的骨架
用盖房子来类比:
HTML就是定义网页的结构:
• 标题:这是一级标题、二级标题 • 段落:这是一段文字 • 图片:这里放一张图 • 按钮:这里有一个按钮 • 列表:这是一个商品列表
举个真实例子:
一个商品卡片的HTML结构:
商品卡片
├── 商品图片
├── 商品名称
├── 价格
│ ├── 原价
│ └── 现价
└── 购买按钮PM为什么要懂HTML?
在评审设计稿时,你能判断:
• ✅ 这个设计稿结构清晰,容易实现 • ❌ 这个设计稿层级混乱,前端要费很多时间理解
2.2 CSS:网页的外观
CSS负责"好看":
• 颜色:文字是黑色,按钮是红色 • 大小:标题18px,正文14px • 位置:图片在左边,文字在右边 • 间距:元素之间的距离 • 动画:鼠标悬停时的效果
CSS的难点在哪?
| 布局 | ||
| 适配 | ||
| 兼容 |
真实案例:
设计师给的设计稿:
• iPhone 13 Pro:390px宽 • 实际用户设备:从320px到1920px都有
前端要做的:
• 保证在所有设备上都能正常显示 • 不能变形、不能错位、不能超出屏幕
PM常见的误解:
❌ "设计稿上是这样的,为什么网页不一样?"
✅ 网页是动态的,不同屏幕大小显示效果不同
❌ "这个效果抄XX网站的CSS不就行了?"
✅ 每个网站结构不同,不能直接复制CSS
2.3 JavaScript:网页的行为
JavaScript负责"交互":
想象一下没有JavaScript的网页:
• ❌ 点击按钮没反应 • ❌ 表单无法验证 • ❌ 无法动态加载数据 • ❌ 没有任何动态效果
有了JavaScript:
• ✅ 点击"加入购物车",商品添加成功 • ✅ 输入邮箱,实时验证格式是否正确 • ✅ 下拉到底部,自动加载更多商品 • ✅ 鼠标悬停,显示商品详情弹窗
JavaScript能做什么?
| 数据交互 | ||
| 表单验证 | ||
| 动态效果 | ||
| 状态管理 |
真实案例:
需求:用户点击"收藏"按钮
JavaScript要做的事:
1. 检测用户是否登录(未登录跳转登录页) 2. 调用收藏接口 3. 等待后端返回结果 4. 成功:按钮变红色,提示"收藏成功" 5. 失败:提示错误信息 6. 更新页面上的收藏数量
看似简单的点击,背后有6步逻辑。
2.4 三者如何协同工作
用做菜来类比:
| HTML | ||
| CSS | ||
| JavaScript |
一个完整的页面加载过程:
PM需要知道的关键点:
1. 加载顺序很重要
• HTML先加载(所以首屏要快) • CSS加载慢会导致页面闪烁 • JavaScript加载慢会导致功能不可用
• HTML结构不合理,CSS很难写 • CSS动画太多,JavaScript性能受影响 • JavaScript逻辑复杂,页面会卡顿
• 不能只优化JavaScript,HTML和CSS也要优化 • 减少HTTP请求比优化代码更重要
三、前端三大框架:React/Vue/Angular
3.1 为什么需要前端框架
没有框架时的痛点:
想象你要做一个电商网站,有100个商品卡片。当用户点击"收藏":
传统方式的问题:
• 需要手动找到这个商品的DOM元素 • 手动修改收藏按钮的样式 • 手动更新页面上的收藏数量 • 手动同步多个地方显示的收藏状态
一个商品还好,100个商品呢?
• 代码重复100遍 • 一改要改100个地方 • 容易出bug,难以维护
有了前端框架:
框架的核心优势:
• 数据驱动:只需改数据,UI自动更新 • 组件化:一次编写,处处复用 • 自动化:不需要手动操作DOM
3.2 React:组件化思想
React核心理念:把页面拆成独立的组件
用搭积木来类比:
传统开发 = 画一整幅画(改一个地方很麻烦)
React开发 = 用积木搭房子(可以随意组合和替换)
一个电商首页的组件拆分:
首页
├── 导航栏组件
├── 轮播图组件
├── 商品列表组件
│ ├── 商品卡片组件(复用100次)
│ │ ├── 图片组件
│ │ ├── 价格组件
│ │ └── 按钮组件
└── 底部导航组件React的优势:
| 组件复用 | ||
| 生态丰富 | ||
| 大厂背书 |
适用场景:
• ✅ 大型复杂应用(如后台管理系统) • ✅ 对性能要求高的应用 • ✅ 需要跨平台(Web + 移动端)
3.3 Vue:渐进式框架
Vue核心理念:简单易学,渐进式使用
什么是"渐进式"?
你可以:
• 只在一个页面使用Vue • 也可以用Vue构建整个应用 • 根据项目需要逐步加入功能
Vue的优势:
| 学习曲线平缓 | ||
| 中文文档友好 | ||
| 模板语法 |
适用场景:
• ✅ 中小型项目 • ✅ 团队前端经验不足 • ✅ 需要快速开发
真实案例:
我做过一个项目,技术选型Vue:
• 原因:前端只有2个人,其中1个是刚毕业的新人 • 结果:新人1周上手,2个月完成项目 • 如果选React:学习成本高,项目延期风险大
3.4 Angular:企业级方案
Angular核心理念:大而全的企业级框架
Angular vs React/Vue:
| 定位 | ||
| 学习难度 | ||
| 适用场景 | ||
| 开发规范 |
为什么企业喜欢Angular?
• 规范统一:强制代码风格,团队协作容易 • 功能齐全:路由、表单、HTTP都内置 • TypeScript:类型安全,减少bug
但Angular的问题:
• ❌ 学习曲线陡峭(新人需要1-2个月上手) • ❌ 框架较重(打包体积大) • ❌ 灵活性不如React/Vue
适用场景:
• ✅ 大型企业级应用 • ✅ 对代码规范要求高 • ✅ 团队经验丰富
3.5 如何选择框架
PM需要考虑的因素:
选择建议:
| 创业公司MVP | ||
| 中型SaaS产品 | ||
| 大型企业系统 | ||
| To C移动端 |
PM常见误区:
❌ "用最新的框架"
✅ 用最适合团队和项目的框架
❌ "XX大厂用的框架就是好"
✅ 大厂的场景和你的可能完全不同
四、前端性能优化的8个技巧
4.1 技巧1:减少HTTP请求
问题场景:
一个商品详情页需要加载:
• 10张商品图片 = 10次HTTP请求 • 5个CSS文件 = 5次HTTP请求 • 8个JavaScript文件 = 8次HTTP请求
总计:23次HTTP请求
每次请求都需要时间:
• 建立连接:50ms • 等待响应:100ms • 下载数据:200ms
23次请求 = 至少8秒!
优化方案:
| 合并文件 | ||
| 雪碧图 | ||
| 内联小资源 |
PM需要知道:
• 一个页面HTTP请求<20次:优秀 • 20-50次:一般 • 50次:需要优化
4.2 技巧2:资源压缩与合并
真实案例:
我做过一个项目,首页加载慢,用户投诉多。
分析发现:
• 一个JavaScript文件:800KB • 用户下载时间:4G网络需要10秒
优化后:
• 压缩后的文件:200KB • 下载时间:2.5秒
压缩方式:
| JavaScript | |||
| CSS | |||
| 图片 |
PM的关注点:
• 首页JavaScript文件不要超过300KB • 单张图片不要超过200KB • 总资源大小<2MB
4.3 技巧3:图片优化
图片是性能杀手:
一个电商首页,100个商品卡片,每个有1张图:
• 如果每张图500KB:总共50MB • 4G网络下载:需要2分钟 • 用户早就关闭页面了
优化方案:
| WebP格式 | ||
| 响应式图片 | ||
| 图片裁剪 | ||
| 懒加载 |
PM需要注意:
• 商品缩略图:<100KB • 商品详情大图:<300KB • Banner图:<500KB
4.4 技巧4:懒加载
什么是懒加载?
用户打开首页,屏幕只能看到前5个商品。
• ❌ 传统方式:一次加载100个商品(慢) • ✅ 懒加载:先加载5个,滚动时再加载更多(快)
懒加载的场景:
| 图片懒加载 | ||
| 列表懒加载 | ||
| 组件懒加载 |
PM的误区:
❌ "一次加载所有数据,用户体验好"
✅ 首屏快才是好体验,其他按需加载
4.5 技巧5:CDN加速
CDN是什么?
内容分发网络(Content Delivery Network)
不用CDN:
用户(深圳) → 服务器(北京)
距离:2000公里
延迟:200ms使用CDN:
用户(深圳) → CDN节点(深圳)
距离:10公里
延迟:20msCDN的优势:
| 就近访问 | ||
| 减轻压力 | ||
| 高可用 |
PM需要考虑的成本:
• 小型网站:用免费CDN(阿里云、腾讯云) • 中型网站:每月100-1000元 • 大型网站:每月1万+
4.6 技巧6:浏览器缓存
缓存的作用:
用户第一次访问网站:
• 下载所有资源:5秒
用户第二次访问(有缓存):
• 从缓存读取:0.5秒
缓存策略:
| HTML | ||
| CSS/JS | ||
| 图片 |
PM关注点:
• 发布新版本后,用户能立即看到新功能吗? • 需要清理浏览器缓存吗?
4.7 技巧7:代码分割
什么是代码分割?
传统方式:
• 把整个网站的代码打包成一个大文件:10MB • 用户打开首页要下载10MB
代码分割:
• 首页代码:500KB • 其他页面代码:按需加载
效果对比:
4.8 技巧8:首屏优化
首屏是用户第一印象:
• 首屏<1秒:优秀 • 1-3秒:良好 • 3-5秒:一般 • 5秒:用户流失
首屏优化技巧:
| 骨架屏 | ||
| 关键CSS内联 | ||
| 异步加载JS | ||
| 预加载 |
真实案例:
某电商首页优化前后对比:
PM需要关注的指标:
• 首屏时间(越短越好) • 白屏时间(要<1秒) • 可交互时间(用户能操作的时间)
五、前端常见技术问题
5.1 跨域问题
什么是跨域?
真实场景:
• 你的网站: www.example.com• 调用API: api.example.com
浏览器会报错:"跨域请求被阻止"
为什么会有跨域限制?
安全原因。想象这个场景:
1. 你打开银行网站 bank.com并登录2. 同时打开恶意网站 evil.com3. 如果没有跨域限制, evil.com可以调用bank.com的接口4. 你的钱就被转走了
跨域的常见场景:
www.a.comwww.a.com |
||
www.a.comapi.a.com |
||
www.a.comwww.b.com |
||
http://a.comhttps://a.com |
||
a.com:80a.com:8080 |
PM需要知道的:
1. 提前规划域名
• 前端: www.example.com• API: api.example.com• 告诉后端配置跨域
• 开发环境: localhost:3000→localhost:8080(跨域)• 生产环境: www.a.com→api.a.com(需要配置)
• 微信支付、地图API等都涉及跨域 • 需要前端做特殊处理
5.2 兼容性问题
真实案例:
2023年某项目上线后,收到用户投诉:
• 用户A(Chrome浏览器):正常 • 用户B(IE11浏览器):页面错乱 • 用户C(Safari浏览器):部分功能不可用
兼容性问题的3个层面:
1. 浏览器兼容
| Chrome | ||
| Safari | ||
| Edge | ||
| Firefox | ||
| IE11 |
PM的决策:
场景1:To C电商网站
• ✅ 兼容Chrome、Safari、Edge • ❌ 不兼容IE11(成本高,用户少)
场景2:政府项目
• ✅ 必须兼容IE11(政府部门电脑可能还在用) • 💰 开发成本增加30%
2. 屏幕尺寸兼容
常见设备屏幕宽度:
• iPhone SE:375px • iPhone 13:390px • iPad:768px • MacBook:1440px • 台式机:1920px
PM需要明确:
• 最小支持屏幕:375px(iPhone SE) • 超宽屏如何显示:1920px+
3. 操作系统兼容
| 输入法弹起 | |||
| 滚动效果 | |||
| 日期选择器 |
PM的实践建议:
1. 需求评审时明确兼容范围
• 支持哪些浏览器? • 最小屏幕尺寸? • 是否需要IE11?
• iPhone(iOS) • 安卓手机(不同品牌) • iPad • PC(Chrome、Safari)
5.3 SEO优化
什么是SEO?
Search Engine Optimization(搜索引擎优化)
为什么前端要关注SEO?
真实案例:
• 公司A:用Vue做官网,没考虑SEO • 百度搜索公司名:找不到官网 • 竞争对手排第一
前端影响SEO的3个方面:
1. 页面渲染方式
| 服务端渲染(SSR) | ||
| 静态生成 | ||
| 客户端渲染(SPA) |
PM需要决策:
场景1:企业官网
• ✅ 用服务端渲染或静态生成 • 原因:需要被搜索引擎收录
场景2:后台管理系统
• ✅ 用客户端渲染 • 原因:不需要SEO,开发效率优先
2. 页面结构
搜索引擎喜欢的页面:
• ✅ 有清晰的标题层级(H1、H2、H3) • ✅ 图片有描述文字 • ✅ 链接有明确的文字说明 • ✅ URL简洁有意义
3. 页面速度
谷歌的研究:
• 页面加载时间从1秒增加到3秒 • 跳出率增加32% • 搜索排名下降
PM的SEO checklist:
• 页面标题是否包含关键词? • 每个页面是否有独特的描述? • 图片是否有alt描述? • URL是否简洁有意义? • 首屏加载是否<3秒?
六、前端开发流程
6.1 设计稿到代码
完整流程:
各环节PM需要关注的:
1. 设计稿review(PM参与)
检查点:
• ✅ 不同状态是否都有设计(默认、hover、点击、禁用) • ✅ 加载中、空状态、错误提示是否有设计 • ✅ 响应式设计是否清晰(移动端、PC端)
常见问题:
• ❌ 设计师只给了默认状态 • ❌ 没有考虑极端情况(文字过长怎么办?) • ❌ 移动端和PC端差异太大(开发成本高)
2. 技术可行性确认
PM要问前端:
• "这个设计效果能实现吗?" • "实现成本多大?" • "是否有替代方案?"
真实案例:
设计师做了一个3D旋转的商品展示
• 前端评估:需要WebGL技术,工期7天 • PM决策:改成普通轮播,工期1天 • 结果:节省6天开发时间
3. 前端开发
PM关注的时间节点:
• 第1天:搭建框架 • 第2-3天:实现页面布局 • 第4-5天:实现交互逻辑 • 第6天:对接后端接口 • 第7天:调试优化
4. 设计还原度检查
常见的还原度问题:
PM的角色:
• 不要过度追求100%还原 • 重点关注用户体验 • 平衡开发成本和视觉效果
6.2 前后端联调
什么是联调?
前端和后端对接接口的过程。
联调的常见问题:
| 接口字段不一致 | ||
| 接口返回格式错误 | ||
| 接口响应慢 | ||
| 跨域问题 |
PM如何减少联调问题?
1. 需求阶段明确接口设计
PRD里写清楚接口格式和字段说明。
2. 联调前的准备
• 前后端都确认接口文档 • 后端提供Mock数据 • 前端用Mock数据先开发
3. 联调时的沟通
❌ 不好的沟通:
"这个接口不行,你改改"
✅ 好的沟通:
"商品列表接口,返回的price字段是字符串,应该是数字,麻烦改一下"
6.3 测试与发布
前端测试的3个层面:
1. 功能测试
测试点:
• ✅ 所有按钮都能点击吗? • ✅ 表单验证正确吗? • ✅ 页面跳转正常吗? • ✅ 数据显示正确吗?
2. 兼容性测试
测试设备:
• iPhone(Safari) • Android手机(Chrome) • iPad • PC(Chrome、Safari、Edge)
3. 性能测试
测试指标:
• 首屏加载时间 < 3秒 • 白屏时间 < 1秒 • 接口响应时间 < 1秒
发布流程:
PM关注的发布节点:
1. 灰度发布(先给5%用户)
• 观察1-2小时 • 没问题再扩大范围
• 页面加载速度 • 错误率 • 用户留存
• 发现严重bug立即回滚 • 回滚时间<10分钟
七、小结:PM必备的前端知识
7.1 PM要懂的前端核心概念
7.2 前端需求评审checklist
需求评审前(PM准备):
• 页面结构是否清晰? • 交互逻辑是否完整? • 异常状态是否考虑?(加载中、失败、空状态) • 响应式设计是否明确?(PC、移动端) • 接口设计是否清晰?
需求评审中(PM要问的问题):
技术可行性:
• "这个设计效果能实现吗?" • "实现难度大吗?" • "有没有现成的组件库?"
性能考虑:
• "首页100个商品会卡吗?" • "图片多大合适?" • "需要做懒加载吗?"
兼容性:
• "需要兼容IE11吗?" • "iPad上如何显示?" • "安卓和iOS有差异吗?"
开发工期:
• "这个功能多久能做完?" • "如果简化设计,能节省多少时间?"
需求评审后(跟进事项):
• 前端确认技术方案 • 设计师调整不合理的设计 • 后端确认接口设计 • 测试了解测试重点
7.3 血泪教训总结
教训1:没考虑前端性能,导致页面卡顿
• ❌ 首页100个倒计时,页面卡死 • ✅ 应该只在可视区域显示倒计时 • 💰 代价:前端加班3天重构
教训2:设计稿过度复杂,开发成本暴增
• ❌ 设计师做了炫酷的3D效果 • ✅ 应该在设计阶段评估技术可行性 • 💰 代价:开发时间从3天变成10天
教训3:没有明确兼容性要求,上线后用户投诉
• ❌ 没说要兼容IE11,结果政府用户用不了 • ✅ 应该在需求阶段明确兼容范围 • 💰 代价:紧急改造,延期1周
教训4:接口设计不合理,联调时频繁返工
• ❌ PRD里没写清楚接口格式 • ✅ 应该在需求阶段定义清楚接口 • 💰 代价:前后端联调3天,反复修改
给PM的建议:
1. ✅ 学习前端基础知识,知道什么简单、什么复杂 2. ✅ 需求评审时多问前端,听听技术意见 3. ✅ 关注性能,首屏加载速度很重要 4. ✅ 明确兼容性范围,不要模糊不清
推荐阅读:
• 《JavaScript高级程序设计》- Nicholas C. Zakas • 《CSS权威指南》- Eric A. Meyer • 《现代前端技术解析》- 张成文

优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!
优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、微信小程序定制开发、移动端应用(手机站、APP开发)、微信定制开发(微信官网、微信商城、企业微信)等一系列互联网应用服务。
公安局备案号:

