⼤神coderwhyWEB前端线上系统课【完整】分享学习
前端性能优化建议
性能优化是把双刃剑,有好的⼀⾯也有坏的⼀⾯。好的⼀⾯就是能提升⽹站性能,坏的⼀⾯就是配置⿇烦,或者要遵守的规则太多。并且某些性能优化规则并不适⽤所有场景,需要谨慎使⽤,请读者带着批判性的眼光来阅读本⽂。
前端性能的⼀个重要指标是页⾯加载时间,不仅事关⽤户体验,也是搜索引擎排名考虑的⼀个因素。
Donwload:
来⾃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"); der(<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/>;
}
8ponentDidMount和useEffect的区别是什么class App extends React.Component {
componentDidMount() {
console.log('mount');
}
}
useEffect(() => {
console.log('useEffect');
}, [])
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论