链接: https://pan.baidu.com/s/1d6YONkCi4u7T1ZBm1yZLYg 提取码: iamh
作者-\/ 307570512

前端性能优化建议

性能优化是把双刃剑,有好的一面也有坏的一面。好的一面就是能提升网站性能,坏的一面就是配置麻烦,或者要遵守的规则太多。并且某些性能优化规则并不适用所有场景,需要谨慎使用,请读者带着批判性的眼光来阅读本文。

前端性能的一个重要指标是页面加载时间,不仅事关用户体验,也是搜索引擎排名考虑的一个因素。

来自Google的数据表明,一个有10条数据0.4秒能加载完的页面,变成30条数据0.9秒加载完之后,流量和广告收入下降90%。
Google Map 首页文件大小从100KB减小到70-80KB后,流量在第一周涨了10%,接下来的三周涨了25%。
亚马逊的数据表明:加载时间增加100毫秒,销量就下降1%。

尽量减少 HTTP 请求个数——须权衡
使用CDN(内容分发网络)
为文件头指定 Expires 或 Cache-Control ,使内容具有缓存性。
避免空的 src 和 href
使用 gzip 压缩内容
把 CSS 放到顶部
把 JS 放到底部
避免使用 CSS 表达式
将 CSS 和 JS 放到外部文件中
减少 DNS 查找次数
精简 CSS 和 JS
避免跳转
剔除重复的 JS 和 CSS
配置 ETags
使 AJAX 可缓存
尽早刷新输出缓冲
使用 GET 来完成 AJAX 请求
延迟加载
预加载
减少 DOM 元素个数
根据域名划分页面内容
尽量减少 iframe 的个数
避免 404
减少 Cookie 的大小
使用无 cookie 的域
减少 DOM 访问
开发智能事件处理程序
用 代替 @import
避免使用滤镜
优化图像
优化 CSS Spirite
不要在 HTML 中缩放图像——须权衡
favicon.ico要小而且可缓存
保持单个内容小于25K
打包组件成复合文本

前端框架vue、react源码如何深入学习

第一步:可以从lodash这种工具库开始看,因为都是比较小块的函数,比较好上手理解,也容易调试看效果。还可以补足自己的基础,例如节流、防抖、深拷贝等。另外还推荐30 seconds of code,全是小而美的代码片段,有些lodash的函数可以用这个替代。
第二步:找到了看源码的感觉后,再去看某个类库的源码,比如说redux、moment这种,功能专一同时也兼顾深度。完全理解 redux(从零实现一个 redux)
带着问题看React-Redux源码(一万四千字长文预警)可以再去看现在mvvm框架实现的原理,也是从单一的功能开始,拆解mvvm框架的通用实现模式,如双向绑定、虚拟dom等,最后实现自己的mini mvvm。
第四步:这时候你具备了看react、vue这种框架的能力了,最好还是带着问题去看,比如看react fiber的原理、如何渲染的,setState怎么操作等等。
最后:可以试着参与到开源框架的开发中来,对preact、vue等框架进行一些issue的修复和功能的迭代。如果觉得过于困难,可以对react或者vue周边生态的库进行pr,经过前面的这么多铺垫,这时候也可以释放自己创造力了,可以试着做一些对标业界开源高质量的轮子。

6.点击Father组件的div,Child会打印Child吗

function Child() {console.log('Child');return <div>Child</div>;
}function Father(props) {const [num, setNum] = React.useState(0);return (<div onClick={() => {setNum(num + 1)}}>{num}{props.children}</div>);
}function App() {return (<Father><Child/></Father>);
}const rootEl = document.querySelector("#root");
ReactDOM.render(<App/>, rootEl);

7.打印顺序是什么

function Child() {useEffect(() => {console.log('Child');}, [])return <h1>child</h1>;
}function Father() {useEffect(() => {console.log('Father');}, [])return <Child/>;
}function App() {useEffect(() => {console.log('App');}, [])return <Father/>;
}

8.componentDidMount和useEffect的区别是什么

class App extends React.Component {componentDidMount() {console.log('mount');}
}useEffect(() => {console.log('useEffect');
}, [])

coderwhy - WEB前端线上系统课全程直播课相关推荐

  1. Web前端线上系统课-01-HTML+CSS/06-CSS盒子模型-CSS设置背景

    CSS盒子模型-CSS设置背景 盒模型 margin <!DOCTYPE html> <html lang="en"><head><met ...

  2. Web前端线上系统课-01-HTML+CSS/08-结构伪类-图形-字体-字体图标-元素定位

    结构伪类-图形-字体-字体图标-元素定位 结构性伪类选择器 nth-child 父元素中的第n个子元素 nth-child(n) <!DOCTYPE html> <html lang ...

  3. python在线学习直播-Python在线学习最有效马哥开启全网独家全程直播课

    原标题:Python在线学习最有效马哥开启全网独家全程直播课 一直以来,IT行业的高薪吸引了大量的人员进入--2017年,国家统计局发布的薪酬水平统计中,IT首次超过金融,成为平均薪资最高的行业. I ...

  4. Jmeter对Web Socket进行压力测试 —— 200人直播课实战经验

    转载 Jmeter对Web Socket进行压力测试 -- 200人直播课实战经验 分类专栏: Jmeter 测试经验 Web Socket 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-S ...

  5. 青灯教育 python录播课_9款线上少儿编程课测评合集:录播课、直播课,最后2家的老师难选到飙泪!...

    [写在前面]如果大家在给孩子选择英语.数学.编程.语文等课上有疑问,欢迎加我个人微信:18069192768 详谈,为方便我及时通过好友申请,请备注"知乎家长". 少儿编程教育是近 ...

  6. 前端线上图片怎么生成马赛克?

    前言 说起图片的马赛克,可能一般都是由后端实现然后传递图片到前端,但是前端也是可以通过canvas来为图片加上马赛克的,下面就通过码上掘金来进行一个简单的实现. 实现 实现过程 <img src ...

  7. 前端线上图片生成马赛克

    前言 说起图片的马赛克,可能一般都是由后端实现然后传递图片到前端,但是前端也是可以通过canvas来为图片加上马赛克的,下面就进行一个简单的实现. 思路 最开始需要实现马赛克功能是需要通过canvas ...

  8. 前端线上问题如何调试

    记录Vue开发过程中遇到的问题,测试环境以及本地显示都没有问题,但是一上线就出现问题,于是对于这个问题进行排查,在此记录排查问题的步骤以及方法,希望对大家有帮助. 错误信息:Uncaught Type ...

  9. 一道百度前端线上笔试题

    要求: 输入两个字符串   strA   长度 1-50 只能包含 0或者1   strB   长度 1-5   可以包含 0或1或? (? 代表    0  或者 1) 例如: strA = '10 ...

最新文章

  1. CodeSite使用小结
  2. 什么是光纤以太网交换机?
  3. java遍历文件夹并获取所有路径
  4. python2和3_python2和python3的区别
  5. dj电商-数据表的设计-商品表的设计
  6. 一个高性能的key/value存储服务器 - Tarantool/Box
  7. iOS开发基础-Plist实现嵌套模型
  8. 用栈实现计算器c语言报告,利用栈实现c语言计算器
  9. sscom 中文显示 乱码_SSM框架中的中文乱码问题
  10. uniapp好用项目和插件总结
  11. 从产品模式到生活方式,苏宁小Biu车联网迈过了哪些坎?
  12. 各种常用的默认端口号 总结
  13. 中创向心力:如何把思想政治教育贯穿职业教育全过程?
  14. 【NVMe2.0b 8】NVMe 队列仲裁机制
  15. 高可靠环境 FileNet 系统介绍和应用实例
  16. 美团也玩大数据杀熟?
  17. win10开机占用内存大,资源管理器也看不到运行进程
  18. POJ 3253 Fence Repair(修篱笆)
  19. qsort函数的使用
  20. TEE系列之GP规范TEE API浅析

热门文章

  1. 相爱者彼此可以做的100件事
  2. 阿里达摩院联合友盟+ ,推出国内首个智能推送
  3. HTML源码中 form 标签的 enctype 属性
  4. Linux--NiaoGe-Service-05
  5. 声网 agora php sdk,快速了解声网Agora SDK 3.0
  6. wyy课堂cmos模拟设计课学习笔记-Bandgap电路设计4
  7. 【Oracle】Oracle数据库忘记用户名和密码怎么办?重置密码方法
  8. .net报表控件ActiveReports教程:运行时修改数据(附源码)
  9. VS 和Qt快速格式化快捷键
  10. Android接入advance活体检测