高级前端面试题,部分答案待补充,有好的答案可留言提供。
跨域请求原理
1、通过jsonp跨域
利用在页面中创建<script>节点的方法向不同域提交HTTP请求的方法称为JSONP,这项技术可以解决跨域提交Ajax请求的问题。
js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。
要解决跨域的问题,我们可以使用以下几种方法:
jsonp的原理就很清楚了,通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。所以jsonp是需要服务器端的页面进行相应的配合的。
jquery的$.getJSON方法会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;跨域的话,则会以异步加载js文件的形式来调用jsonp的回调函数。
2、通过修改document.domain来跨子域
修改document.domain的方法只适用于不同子域的框架间的交互。如果你想通过ajax的方法去与不同子域的页面交互,除了使用jsonp的方法外,还可以用一个隐藏的iframe来做一个代理。原理就是让这个iframe载入一个与你想要通过ajax获取数据的目标页面处在相同的域的页面
3、使用window.name来进行跨域
window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。
window.name的值只能是字符串的形式,这个字符串的大小最大能允许2M左右甚至更大的一个容量,具体取决于不同的浏览器,但一般是够用了。
能兼容到几乎所有浏览器。
4、使用HTML5中新引进的window.postMessage方法来跨域传送数据
使用postMessage来跨域传送数据还是比较直观和方便的,但是缺点是IE6、IE7不支持,所以用不用还得根据实际需要来决定。
除了以上几种方法外,还有flash、在服务器上设置代理页面等跨域方式。
=============================
基本数据类型:String,Boolean,Number,Undefined, Null
引用数据类型:Object(Array,Date,RegExp,Function)
什么是基本数据类型?基本数据类型的概念是什么?
ECMAScript中有5中简单数据类型(也称为基本数据类型): Undefined、Null、Boolean、Number和String。还有1中复杂的数据类型————Object,Object本质上是由一组无序的名值对组成的。
grunt实时刷新,浏览器如何监听文件改变?
watch + liveReload 实时监测文件变化自动刷新浏览器
LiveReload会监控你指定的目录中文件,如果有文件被更改,它就自动触发浏览器刷新页面。但如果你修改的是CSS或者图片,页面内容会即时更新,无需重新加载。
数据绑定mvvm,双向数据绑定,数据双向刷新,双向数据选择?
如何改变类的作用域?(call apply bind)
字面变量var a = [1,2,3];是否为伪数组?
数组,伪数组,agrument传入的是不是伪数组,es6可用...展开操作符
let var 的区别,优劣点?
npm全称是什么?
NPM的全称是Node Package Manager
less sass 优劣点,bootshrap5会用什么作为css?
CSS 的预处理程序(Sass、LESS、Stylus 等)分别都有哪些优缺点?
SASS2007年诞生,最早也是最成熟的CSS预处理器,拥有ruby社区的支持和compass这一最强大的css框架,目前受LESS影响,已经进化到了全面兼容CSS的SCSS。
LESS2009年出现,受SASS的影响较大,但又使用CSS的语法,让大部分开发者和设计师更容易上手,在ruby社区之外支持者远超过SASS,其缺点是比起SASS来,可编程功能不够,不过优点是简单和兼容CSS,反过来也影响了SASS演变到了SCSS的时代,著名的Twitter Bootstrap就是采用LESS做底层语言的。
Stylus,2010年产生,来自Node.js社区,主要用来给Node项目进行CSS预处理支持,在此社区之内有一定支持者,在广泛的意义上人气还完全不如SASS和LESS。
webgl opengl canvs 区别?canvs用到是cpu还是gpu?
Canvas是使用JavaScript程序绘图(动态生成),SVG是使用XML文档描述来绘图。
当浏览器开发商实现了canvas GPU 加速
如果没有GPU加速,移动平台的浏览器一般没有足够强大的CPU来处理基于 canvas的应用。
less 里面有没有for循环?
less没有for循环,用loop方法实现
vue 有那些缺点,react vue 有什么区别?
vue是谁开源的?国内公司用的比较多 Vue.js 的作者尤小右,由饿了么UED设计的桌面端组件库已经开源
nodejs 用在那些地方?跟java比有那些区别?有那些技术框架?跟自动化构建工具有那些关系?跟vue react这种数据绑定框架有什么关系?必须用nodejs吗?高并发,网易pemiloe
响应式布局的核心是什么?栅格化系统的核心是按百分比划分,除了这个还有其他解决方案吗?
大前端,saas