咱们为何要跨域?前端
是由于浏览器的同源机制引出的跨域操做。nginx
同源又是什么?json
域名不一样,协议不一样,端口不一样,都是不一样源的。canvas
那浏览器为何同源?segmentfault
浏览器经过限制从一个源的资源如何与另外一个源的资源进行交互。这是用于隔离恶意文件的重要安全机制。后端
正确跨域有什么方法?api
解决api方式:跨域
jsonp :只能传get方法浏览器
空ifream加form :能够传post方法安全
cros: 分为简单方法和非简单方法
代理:nginx转发
解决dom方式:
postMessage
document.domain
canvas操做跨域图片
引用:思否博客:segmentfault.com/a/119000001…
总体来讲,React和Vue等框架出现后,目前前端在代码开发方面的复杂度已经基本获得解决,再加上Node解决先后端分离,前端技术栈自己其实已经比较成熟,所以我认为前端自己的开发技术将来几年应该不会有大的方向变化。 既然前端开发技术栈自己已经比较成熟,那咱们看看目前还有哪些制约前端发展瓶颈的,也许这些瓶颈的地方就是后面技术方向突破的地方。
首先是浏览器。虽然浏览器这几年在Chrome的带动下,性能飞速发展,但毕竟其核心原理没有变化,性能始终难以达到原生App的水平,所以这部分我认为是最有可能出现大的变化的,一个可能的方向就是浏览器变成虚拟机,前端代码编译为字节码,经过这种方式来将性能提高一个等级,虽然仍是难以达到原生App的水平,但已经可以知足绝大部分应用的性能需求,相似于Java对比C/C++同样。同时,虚拟机还能够直接调用OS提供的各类接口,至于安全问题,其实和如今的App同样能够采起权限申请的方式。 第二个就是统一的DOM树限制了单线程的渲染。理论上来讲,一个页面某个时间变化的部分只是集中在一小块区域,没有必要将整个DOM树锁住。所以,一个可能的方向是分区渲染,即将页面划分为几个不一样的区域,每一个区域有独立的DOM树,独立渲染,那么性能会高不少,相似于App开发中的组件,组件类的运行不影响其它组件,若是须要依赖其它组件,经过组件间消息进行通讯。