浏览器执行过程
渐进增强和优雅降级
闭包
跨域
本地存储(cookie,localstorage,sessionstorage,session)
去重
es6
盒子模型
防抖和节流
重绘重排
iframe
优化
懒加载
三次握手
原型链
布局
css3 html5新特性
兼容性
脏检查
如何保持登录状态
移动端适配问题
实现页面的局部刷新
加载:根据请求的URL进行域名解析,向服务器发送请求,接收响应文件(如 HTML、JS、CSS、图片等)。
解析:对加载到的资源(HTML、JS、CSS等)进行语法解析,构建相应的内部数据结构(比如HTML的DOM树,JS对象的属性表,CSS的样式规则等)。
渲染:构建渲染树,对各个元素进行位置计算、样式计算等,然后根据渲染树完成页面布局及绘制的过程(可以理解为“画”页面元素)。
渐进增强:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能,以达到更好的用户体验。
优雅降级:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
闭包就是能够读取其他函数内部变量的函数,可以理解成定义在一个函数内部的函数
jquery这种类库就是大的闭包
function newAdd() {
let num = 0
function fn() {
return num++
}
return fn
}
let add=newAdd()
add() //1
add() //2
add() //3
为什么会出现跨域问题?
出于浏览器的同源策略限制,浏览器会拒绝跨域请求。
同源策略是一种约定,它是浏览器最核心也最基本的安全功能。所谓同源是指,域名,协议,端口相同。
当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域,不同域之间相互请求资源,就算作“跨域”。
同源策略限制内容有:
Cookie、LocalStorage、IndexedDB 等存储性内容
AJAX 请求发送后,结果被浏览器拦截了(跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。)
DOM 节点
script、img、link、iframe等不存在跨域请求的限制;而且这里所有的资源文件请求都是get请求
跨域解决方案
1、jsonp跨域
2、nginx反向代理
3、跨域资源共享(CORS)
4、webSocket
5、document.domain + iframe跨域
6、location.hash + iframe跨域
7、window.name + iframe跨域
8、postMessage跨域
jsonp跨域
jsonp的原理就是利用