- 如何设计一个复用组件
- 单一职责 (只做一件事,利用组合)
- 无副作用(不要对其他组件产生影响)
- 避免操作DOM
- 开放封闭原则(改变的部分做成参数)
- 当不需要的时候,很容易就去除
- JS异步加载方式
- 同步加载(阻止浏览器执行引用JS后面的代码,直到加载完成)
- 异步加载
- <script type="text/javascript" src="xxx.js" async="async"> 下载完成后执行
- <script type="text/javascript" src="xxx.js" defer> 渲染完成后执行
- XSS 和 CSRF
- xss 需要过滤用户提交的任何数据
- csrf 模拟用户请求
- 事件委托
- 利用冒泡来委托到上级元素
- CDN
- 内容分发网络, 用来图片缓存,JS CSS缓存
- 闭包
- 闭包的原理的JS的作用域链。IE中会内存泄露,需要在函数完成之前删除变量.
- 跨域
- JSONP: 利用script引用的方式,只支持GET
- CORS: 跨域资源共享, 服务器设置Access-Control-Allow-Origin
- 代理跨域, 一般用nodejs转发
- postMessage跨域
- 内存泄露
- DOM移除, 变量引用没有被清空
- 事件监听时间移除, DOM节点引用没有被清空
- 前端优化
- 减少请求数量
- 控制DNS解析数量
- GZIP: 在服务器压缩资源,到前端再解压
- KeepAlive
- ES6 和 CommonJS
- ES6:import方式,值的引用
- CommonJS:require方式, 值的copy,内部不会影响到外面