JavaScript高级(二)常见的复杂问题

313 阅读2分钟

虚拟DOM

虚拟DOM的核心思想是:对复杂的文档dom结构,提供一种方便的工具,进行最小化的dom操作。 

dom节点包括标签属性和子节点。

通过js对象表示的虚拟dom计算出实际dom需要做的最小变动,然后在操作实际dom,从而避免粗放式的dom操作带来的性能问题。

跨域

同源策略

浏览器为了保证用户信息的安全,防止恶意的网站窃取数据,禁止不同域之间的js进行交互

只要域名,协议端口有一个不同就会引发同源策略。

如果是协议和端口造成的跨域问题,前台是无法解决的。

在跨域问题上,域仅仅是通过URL的首部来识别,不会去判断相同的ip地址对应着两个域是否在同一个ip上。

跨域的几种方法

1、jsonp请求,原理是利用

2、document.domain,这种方式用在主域名相同子域名不同的跨域访问中

3、window.name, 在同一个窗口的生命周期下,窗口里面的页面都共享一个window.name

每个页面都可以读写name,通过iframe配合可以进行局部跨域。

4、window.postMessage,这是HTML5中的一种新方法,可以使用它来向其他的window对象发送消息,无论这个window对象是不是同源。

5.Web Sockets;web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议。

6、CORS;CORS背后的基本思想,就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是应该失败。