1.什么是vue生命周期 ?
vue实例从被创建到销毁的一系列过程就叫vue生命周期. 也就是从开始创建、初始化数据、编译模版、挂载DOM→渲染、更新、渲染、卸载等一系列过程。
2.axios的特点有哪些
axios是一个基于promise的HTTP库,支持promise的所有API
它可以拦截请求和响应
它可以转换请求数据和响应数据,并对响应回来的内容自动转换为json类型的数据
它安全性更高,客户端支持防御XSRF
3.vue父组件怎么给子组件传值?
父组件的数据要通过prop传到子组件
6.谈谈javascript数组排序方法sort()的使用,重点介绍参数使用及内部机制?
语法:arrayObject.sort(sortby)
参数sortby可选,规定排序顺序,必须是函数
注:如果调用该方法是没有使用参数,将按字符编码的顺序进行排序,要实现这一点,首先应把数组的元素都转换成字符串,以便进行比较。
如果想按照其他的标准进行排序,就需要两个比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对排序的数字。比较函数应该具有两个参数a和b,其返回值如下:
若a < b,则返回一个小于0的值
若a=b,则返回一个0
若a>b,则返回一个大于0的值
7.简述DIV元素和span元素的区别
div是一个块级元素,span是内嵌元素。块元素相当于内嵌元素在前后各加了一个换行。其实,块元素和行内元素也不是一成不变的,只要给块元素定义display:inline,块元素就变成了内嵌元素,同样的,给内嵌元素定义了display:block就变成了块元素了。
8.说几条XHTML规范的内容(至少3条)
所有的标记都必须有一个相应的结束标记
所有标签的元素和属性的名字都必须使用小写
所有的xml标记都必须合理嵌套
所有的属性值都必须用引号“”括起来
所有的<和&特殊符号用编码表示
给所有属性赋一个值
9.对web标准化(或网站重构)知道哪些相关的知识,简述几条你知道的Web标准?
网页主要有三部分组成:结构(Structrue)、表现(presentation)和行为(Behavior)。对应的网站标准也分为三方面:
结构化标准语言,主要包括XHTML和XML;
表现标准主要包括css
行为标准主要包括对象模型(如W3C DOM)、ECMAScript等
10.localstorage和sessionstorage是什么?区别是什么?
localstorage和sessionstorage一样都是用来存储客户端临时信息的对象,他们均只能存储字符串类型对象
localstorage生命周期是永久的,这意味着除非用户在浏览器提供的UI上清除localstorage信息,否则这些信息将永远存在。
sessionstorage生命周期为当前窗口或标签,一旦窗口或标签被永久关闭了,那么所有通过sessionstorage存储的数据也将被清空。
不同浏览器无法共享localstorage或sessionstorage中的信息。相同浏览器的不同页面可以共享相同的localstorage(页面属于相同的域名和端口),但是不同页面或标签间无法共享sessionstorage。这里需要注意的是,页面及标签仅指顶级窗口,如果一个标签页包含多个iframe标签他们属于同源页面,那么他们之间是可以共享sessionstorage的。
11.如何获取一个元素的属性值
element.getAttribute(‘属性名称’)
12.json和jsonp的区别?
json返回的是一串json格式数据;而jsonp返回的是脚本代码(包含一个函数调用)
jsonp的全名叫做json with padding,就是把json对象用符合js语法的形式包裹起来以使其他的网站可以请求到,也就是将json封装成js文件传过去。
13.箭头函数与普通函数的区别?
箭头函数相当于匿名函数,并且化简了函数定义。箭头函数有两种格式,一种只包含一个表达式,连{}和return都省略掉了,还有一种可以包含多条语句,这时候就不能省略{}和return
箭头函数式匿名函数,不能作为构造函数,不能作为构造函数,不能使用new。
箭头函数不能绑定arguments,而取而代之用rest参数解决。
箭头函数通过call()或apply()方法调用一个函数时,只传入了一个参数,对this并没有影响。
箭头函数没有原型属性
箭头函数不能当做Generator函数,不能使用yield关键字。
总结:
箭头函数函数的this永远指向其上下文的this,任何方法都改变不了其指向,如call()、bind()、apply()。
普通函数的this指向调用它的那个对象。
14.Promise以及.then函数?
在JavaScript的世界中,所有的代码都是单线程执行的。
由于这个缺陷,导致了JavaScript的所有网络操作,浏览器事件,都必须是异步执行的。
异步执行可以调用回调函数实现:
承诺将来执行的对象在JavaScript中成为Promise对象
then方法提供一个自定义的回调函数,若传入非函数,则会忽略当前then方法。
15.什么是虚拟DOM?
虚拟DOM的核心思想是:对复杂的文档DOM结构提供一种方便的工具,进行最小的DOM操作
优点:
提供一种方便的工具,使得开发效率得到保证。
保证最小化的DOM操作,使得执行效率得到保证。
16.webpack四大特性?
1、entry入口 2、output输出 3、loader加载器 4、plugins插件
17.vue数据双向绑定原理?
vue数据绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的。
因为vue是通过Object.defineProperty来实现数据劫持的
Object.defineProperty是用来做什么的,它可以来控制一个对象属性的一些特有操作,比如:读写权,是可以枚举。
实现过程:
实现数据的双向绑定,首先要对数据进行劫持监听,所以我们需要设置一个监听器observer,用来监听所有属性。如果属性发生变化了,就需要告诉订阅者Watcher看是否需要更新。因为订阅者是有很多个。所以我们需要有一个消息订阅器Dep来专门收集这些订阅者,然后在监听器observer和订阅者watch之间统一进行管理的。接着我们还需要有一个指令解析器Compile,对于每个节点元素进行扫描和解析,将相关指令对应初始化成一个订阅者watch,并替换模板数据或者绑定响应的函数,此时当订阅者watch接收到相应属性的变化,就会执行对应的更新函数,从而更新视图。因此接下去我们执行以下3个步骤,实现数据的双向绑定:
1、实现一个监听器observer,用来劫持并监听所有属性,如果有变动的,就通知订阅者。
2、实现一个订阅者watcher,可以收到属性的变化通知并执行相应的函数,从而更新视图。
3、实现一个解析器Compile,可以扫描和解析每个节点的相关指令,并根据初始化模板数据以及初始化相应的订阅器。