es6 新特性
let cont 箭头函数
var
-
-支持全局、函数作用域
-
-接受重复声明
-
-变量预解析
let
-
-不接受重复声明
-
-不存在变量提升
-
-支持块作用域(es6新提出的概念)
const
-
-特性同let
-
-用来声明常量,一旦声明不能更改
Vue 生命周期
创建前后
挂载前后
更新前后
销毁前后
Vue 的优缺点
优点用户体验好, 内容改变不需要重新加载页面
前后端分离 架构清晰
缺点
首次加载比较慢
seo 比较差
vuex 使用场景
音乐播放 购物车,
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。每一个 Vuex 应用的核心就是 store(仓库)。“store” 基本上就是一个容器,它包含着你的应用中大部分的状态 ( state )。
(1)Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
(2)改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化。
主要包括以下几个模块:
-
State:定义了应用状态的数据结构,可以在这里设置默认的初始状态。
-
Getter:允许组件从 Store 中获取数据,mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性。
-
Mutation:是唯一更改 store 中状态的方法,且必须是同步函数。
-
Action:用于提交 mutation,而不是直接变更状态,可以包含任意异步操作。
-
Module:允许将单一的 Store 拆分为多个 store 且同时保存在单一的状态树中。
闭包的好处
(1)希望一个变量长期驻扎在内存当中(不被垃圾回收机制回收)
(2)避免全局变量的污染
(3)私有成员的存在
(4)安全性提高
最擅长的技能是啥?
apply()和call()的区别
apply:最多只能有两个参数——新this对象和一个数组argArray。
call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。
ajax请求的时候get 和post方式的区别
答案:
一个在url后面 ,一个放在虚拟载体里面
get有大小限制(只能提交少量参数)
安全问题
应用不同 ,请求数据和提交数据
事件委托是什么
答案: 利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!
闭包的优缺点是什么?
优点是不产生全局变量,实现属性私有化缺点是闭包中的数据会常驻内存,在不用的时候需要删除,否则会导致内存溢出(内存泄漏)。
vue父组件向子组件传递数据?
答:通过props
子组件像父组件传递事件?
答:$emit方法
v-show和v-if指令的共同点和不同点?
答: 共同点:都能控制元素的显示和隐藏;
不同点:v-show本质就是通过控制css
v-if是动态的向DOM树内添加或者删除DOM元素
<keep-alive></keep-alive>的作用是什么?
答:keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。
分别简述computed和watch的使用场景
答:computed:
当一个属性受多个属性影响的时候就需要用到computed
最典型的栗子: 购物车商品结算的时候
watch:
当一条数据影响多条数据的时候就需要用watch
栗子:搜索数据
$nextTick的使用
答:当你修改了data的值然后马上获取这个dom元素的值,是不能获取到更新后的值,
你需要使用$nextTick这个回调,让修改后的data值渲染更新到dom元素之后在获取,才能成功。
引进组件的步骤
答: 在template中引入组件;
在script的第一行用import引入路径;
用component中写上组件名称。
new操作符的作用是什么?
作用如下:
(1)创建一个空对象。
(2)由this变量引用该对象
(3)该对象继承该函数的原型(更改原型链的指向)
(4)把属性和方法加入到this引用的对象中。
(5)新创建的对象由this引用,最后隐式地返回this,
讲解一下 JavaScript对象的几种创建方式。
有以下创建方式:
(1) Object构造函数式。
(2)对象字面量式。
(3)工厂模式。
(4)安全工厂模式。
(5)构造函数模式。
(6)原型模式。
(7)混合构造函数和原型模式。
(8)动态原型模式。
(9)寄生构造函数模式。
(10)稳妥构造函数模式。
v-model 的原理?
我们在 vue 项目中主要使用 v-model 指令在表单 input、textarea、select 等元素上创建双向数据绑定,我们知道 v-model 本质上不过是语法糖,v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件:
-
text 和 textarea 元素使用 value 属性和 input 事件;
-
checkbox 和 radio 使用 checked 属性和 change 事件;
-
select 字段将 value 作为 prop 并将 change 作为事件。
Vue组件封装过程
● 首先,使用Vue.extend()创建一个组件
● 然后,使用Vue.component()方法注册组件
● 接着,如果子组件需要数据,可以在props中接受定义
● 最后,子组件修改好数据之后,想把数据传递给父组件,可以使用emit()方法