JavaScript
-
标识符简短清晰,不用 1 和 0 代替 true 和 false,合理编写注释,提高代码可读性;
-
定义变量一定写 var,以免污染全局,同时,new Function() 和 eval() 也会污染全局;
-
长字符串用字符串链接写法,而非跨行。在兼容的情况下,用 ES6 中的多行字符串也更好;
-
不要在 if 和 for 中定义函数,前置没有意义,破坏分支;后者易出现循环参数拖尾的情况;
-
在此法作用域开始处声明变量,提高可读性;
-
var Name = function Name(){};
有利于堆栈跟踪(注意变量名一致性); -
位运算不要大于32位;
-
不要随意重写已有原型,可以用其实例化对象代替,实现实例继承;
-
对象方法尽量返回 this 以便链式调用;
-
函数的放入同名文件夹中,定义 noConflict 方法导出前一版本并返回当然版本;
-
设计封装(类,闭包,模块)时,尽量使用严格模式;
-
在内容为 js 的 script 标签上和内容为 css 的 link 标签上省略 type 属性和 lang 属性;
-
注意变量名不要使用保留字和系统全局变量(方法)一样;
-
以下行为污染全局: setTimeout 和 setInterval 的首参传入字符串; eval()函数; new Function() 构造函数。
性能优化
====
页面渲染
减少页面 reflow
-
修改元素多个样式可以通过修改 className 完成,这样可以把多次 reflow 减少为一次 reflow;
-
修改元素多个样式可以分为三步:先隐藏(display:none), 再修改,最后显示。这样可以把多次 reflow 减少为两次次 reflow;
-
添加页面内容可以通过将所有内容写入 docuemnt fragment 元素后再一次性 append 到页面中;
-
添加页面内容可以通过将所有内容组成长字符串,再一次性编辑 innerHTML 加入到页面中;
-
css(style 标签和 link 标签) 放在 head 中,这样浏览器在加载数据时候可以直接通过 css tree 生成 render tree, 减少不必要的重新渲染;
-
在不影响视觉效果的情况下,尽量减少 js 动画精度;
-
div 布局优于 table 布局,因为后者中元素任意属性改名都会对整个表进行回流;
优化用户体验
-
使用懒加载技术,保证首屏优先加载;
-
使用异步脚步,不阻塞主页面渲染;
-
先渲染界面,在不影响首屏情况下,使用 js 脚本动态加载后续数据;
-
将不影响渲染的脚本后置(放在 body 之后),优先渲染;
-
添加自定义的错误页面(如404 not found 页面);
-
利用 GPU 加速;
代码优化
-
图片 img 标签的 src 不要空着,以免产生多余请求;
-
href, url()和 src 中的链接,用
//
代替http://
,/content/a.jpg
代替content/a.jpg
, 被替代的后者会多发送一个 http 请求; -
合理优化外链 css 和 JS 以利用缓存;
-
资源控制在25kB之内,否则移动端可能无法缓存;
-
减少不必要的 DOM 节点;
-
十六进制颜色优于 rgb/hsl 函数,图形转换优于动画,css 动画优于 js 动画,少用 hack 写法;
-
尽量避免 css 表达式;
-
不要重复加载相同代码;
-
利用事件委托减少事件定义;
-
利用变量保存多次用到的 DOM 查询结果,减少反复查找;
-
能用 !== 或 ===,就不要用 != 或 ==,减少不必要的隐式类型转换;
-
尽量使用现有的函数方法,比如数组所有元素求和,直接用 reduce 方法, 再考虑用 map 方法,接着考虑 forEach 方法,然后是 for…in, 最后是 for;
-
利用 {} 或 [] 定义对象或数组,比 new Object() 或 new Array() 效率高;
-
避免 String 类型隐式装箱(隐式调用 new String());
-
用 switch 代替过多的 if, 并按判断条件的可能性排序,以便尽早结束判断;
-
[].join() 动态生成字符串比字符串链接(+)性能更好;
-
nextSibling() 性能比 children 好;
-
cloneNode() 比 createElement() 效率高;
-
考虑在页面渲染完毕以后再动态加载辅助用的外部 js 脚本;
网络通信
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。
一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。