对于Vue是一套渐进式框架的理解
渐进式:主张最小
- 渐进式就是当页面加载到需要使用的指定内容时才会加载该内容
- 不会一开始加全部加载全部的内容
- 使用到了哪一个才去下载哪一个,互相没有关联
- 方便操作,轻量级,主要减少消耗
- 没有主张,可以当jQuery用,也可以整个全家桶开发
- 他只做自己该做的事情,不做不该做的事情
v-show和v-if的区别?分别说明其使用场景 v-show 和 v-if
都主要设置界面的显示和隐藏
- 而v-show当判断是false的时候,他会给标签添加display:none
- 但是DOM结构依旧存在
- 而v-if如果判断是false的时候,他会直接不再加载DOM结构
- v-show主要使用在经常使用隐藏和显示切换的时候
- 因为v-if采用惰性加载 不会加载DOM结构,如果大量使用隐藏和显示会消耗内存
Watch和computed的区别?
Watch是监听
- 他会实时监听变量的改变
- 当监听函数一旦创建,该函数会立即执行
computed 是计算
- computed不修改原始数据,通过return返回处理数据,可以包含大量运算逻辑
- 他不需要定义变量,但是需要使用
- 当数据发生改变他会实时更新
- 在他内部写一个全新的变量名
常用修饰符有哪些
- stop 阻止事件冒泡
- prevent 阻止系统默认事件
- once 只执行一次该事件
- self 只有点击到自己本身的时候才会生效
- capture:将事件流设为捕获方式
- enter 回车
- space 空格
- up down left right esc delete
常见表单修饰符
- tirm 清除内容的首尾空格
- lazy 和change事件一样,当该变量才会执行该事件
- number 强转 数字类型
vue中key值的作用
在v-for使用时,标识组件的唯一性,更好的区分组件,更高效的更新虚拟dom
父组件向子组件通信?
- 父组件需要使用自定义属性来进行传递
- 在父元素使用子元素使用的开始标签上写一个自定义属性
- 而在子元素内使用props来接收一个数组
- 一个页面可是声明多个自定义属性,也就说明可以传递多个值
子组件向父组件通信
- 子传父需要使用自定义事件
- 在父元素使用子元素使用的开始标0签上写一个自定义事件
- 而子元素通过this.$emit('自定义事件名,'数据'')来进行传递
- 值会传递到父元素事件的参数上
非父子组件传值
- 需要事先开辟一个空间,在vue原型上
- 传递参数的组件,通过this.自定义原型名.$emit进行传递
- 而接受参数的组件,可以在挂载完成之后通过this.自定义原型名.$on进行接收
VUE 基础指令
- v-text 纯文本格式
- v-HTML html格式
- v-model 事件双向绑定
- v-if v-else-if v-else 判断是否显示DOM结构
- v-show v-hide 判断是否需要设置隐藏显示
- v-for 进行循环遍历
- v-on 事件 简写@
- v-bind 动态 简写:
MVVM?
M model V view VM viewmodel 模型 视图他们之间并没有什么联系 通过双向绑定 , 使用数据来驱动页面 当数据进行变化,结构也会进行改变,所以VUE 中进行避免操作DOM
计算属性
computed:{ 新定义的变量名字(){ return } }
vue中的组件的作用是什么?如何定义和使用组件
组件是为了增加可维护性,重复使用性 ,大量的使用组件进行拼接的一个页面,相同的结构可以使用不同的数据渲染成不同的数据
- 有全局定义和局部定义两种
- 全局定义在vue实例,引入全局组件
- 使用component进行注册
- 局部组件是在使用时候在组件内引入,在components内进行注册
- 使用组件是在注册完成之后,把标签名以标签的形式执行
vue的两个核心是什么
数据驱动和组件化
动态绑定class的方法
class的的属性值使用变量的形式命名 因为class原本是不允许使用变量的,所以需要使用v-bind 简写为: 当进行判断,或者进行点击操作的使用,更改变量的值,这就是动态class
深度监听
Watch :{ handler(){
}
deep:true
} 监听对象属性的时候才会使用深度监听方法,使用深度监听才会可以检测到对象的属性,不然不会监听到属性,只能监听到对象的本身 无法实时监听属性的变化
vue中computed和methods的区别有哪些
methods内部的事件需要声明 需要执行事件才会进行执行 不管依赖的数据变不变,methods都会重新计算
computed内的变量不需要声明 当发生改变时会实时监听 如果依赖数据不变,他会重新获取,不会重新计算
生命周期钩子
vue一次页面加载有八个生命周期 当一个页面加载时,从他的产生,挂载,更新到销毁这是一个周期
创建 beforeCreate(){ } 创建开始 不会加载挂载对象和变量内容 created(){ } 创建完成 不会加载挂载对象,会加载变量内容
挂载 beforeMount(){ } 挂载开始 加载挂载对象,但不解析内容 mounted(){ } 挂载完成 解析挂载内容 我们一般操作都会写在这个生命周期内
更新 beforeUpdate(){ } 更新开始,当数据发生改变 updated(){ } 更新开始,当数据发生改变 updated(){ } 更新完成,当数据发生改变 当我们销毁重新挂载的时候,更新周期不再执行
销毁 beforeDestroy(){ } 销毁开始 vue内容不再执行 destoryed(){ } 销毁完成
组件的data为什么不是对象
因为data如果返回一个对象,所有的组件都会执行一个对象 那么当其中一个组件改变内部的值,所有的组件的值都会发生改变 当返回的是一个是对象的时候,他们返回的是一个个不相关的对象 那么当有组件操作的使用,其他组件不会受其影响
写出vue的is的使用场景
改变html标签的默认规则,比如ul里放li,dl里放dt等 他会改变默认的dom结构 可以执行动态组件
vue-router是什么?他有那些组件?
vue-router 他是路由,他可以定义路由规则,注册组件进行更改请求地址,得到不同的内容
组件
router-link 动态组件 router-views 可视区
vue-router有哪几种导航钩子?
- 全局导航钩子
- 全局前置
- beforeEach -全局后置
- afterEach
- 全局前置
- 组件导航钩子
- 组件前置
- beforeRouterLeave
- 组件后置
- beforeRouterEnter
- 组件更新
- beforeRouterUpdate
- 组件前置
- 组件导航钩子 beforeEnter
怎么定义vue-router的动态路由?怎么获取传过来的动态参数?
- 先在index里引入组件,配置path属性 component注册组件
- 在path配置路由地址的时候地址后面跟:加一个属性名
- 传递参数的时候通过this.$router.push("地址"+值)
- 在接收参数的组件里面是有this.$route.params内取值
router || route 的区别?
- $route 是路由信息对象,包括"path,hash,query,fullpath,method,name等路由信息参数"
- $router是路由实例对象,包括路由的跳转方法,实例对象等 push to replace
axios是什么?怎么使用?
请求后台的资源模块
- 使用npm i axios-s来安装
- 将axios挂载到vue实例上:vue.prototype.$axios = axios 在config文件夹中的index.js中的Dev中填写
- 在config文件夹中的index.js中的Dev中填写 ProxyTable:{ ‘/api’:{ Target:’代理服务器的目标地址’, changeOrigin: true, PathRewrite: {“^/api”:” ”} } }
- 在需要调用后台资源的组件中进行使用this.$axios({ Url: ‘/api/地址’, Method:’post’,//post请求必须设置 Params:{要传的参数}//post要将params设置为data }).then(res=>{}).catch(err=>{})
如何解决跨域问题?
- jsonp处理跨域问题
- src属性没有跨域问题,所以jsonp是通过src属性进行跨域处理
- webpack打包构建配置处理跨域
- 后台设置跨域
- 配置请求头
- 在axios中配置changeOrigin:true允许跨域
请列出axios,get和post提交数据的方式
- get直接把数据以?加&符号的方式直接拼接到url地址上
- axios.get(url,data)、axios({method:'get',url:请求地址,params:{提交的数据}})
- axios.post(url,data)、axios({method:'post',url:'请求地址'},data:{提交的数据})
vuex是应用程序的状态管理模式
他在main.js中进行使用:
- 下载引用vuex ,用use使用 ,实例化store对象,在里面进行配置
- 配置
- state配置变量,和data的使用方式类似
- getter 计算属性,他可以更改变量的值,可以自定义变量
- mutations配置事件,和methods的使用方式类似
- actions配置异步处理,因为store是同步执行的,所以当事件没有执行完成的时候,会堵塞线程,所以actions是监听事件,进行异步处理
- models是子对象,他里面的配置和store里面的配置是一样的,就是可以一层一层通过models属性进行嵌套
- 在有大量的组件嵌套是在使用传值,如果少量的数据不需要vuex进行传值,因为他依赖很多也很繁琐
怎么让css只在当前作用域生效?
在style标签上写scoped