资讯详情

Vue面试题

目录标题

  • 基础
    • 介绍一下vue?你觉得vue有什么特点?你使用的其他框架有什么区别?
    • v-if 和v-show区别?
    • Vue作为MVVM框架,M、V、VM分别代表什么?
    • mvvm什么是框架?它和其他框架(jquery)有什么区别?哪些场景适合?
    • 方法调用,computed,watch区别?
    • 如何让css只在当前组件中工作?
    • vue Loader是什么?
  • vue中key是什么?
  • 声明周期
    • 生命周期是什么?
    • 生命周期是什么?
    • 这些有什么区别和意义?
    • 我们什么时候在项目中使用它?
  • 组件
    • 组件中data为什么不使用对象?
    • 什么是组件?
    • 组件有什么好处?
    • 如何创建组件?
    • 组件通讯
    • 父子组件传值
    • 兄弟组件传值?
  • 封装组件?(未解决)
  • 路由
    • 路由是什么?
    • keep-alive了解?
    • Vue.js $route 和 $router 的区别
  • 未分类
    • vue插件使用步骤?
  • axios
    • axios是什么?怎么用?描述使用它实现登录功能的过程?
  • Vuex
    • Vuex是什么?
    • Vuex同一管理状态的优势
    • 什么样的数据适合存储?Vuex中?
    • 怎样使用Vuex?
    • Vuex核心概念?
      • 1. State:State存储共有数据
      • 2. Mutation:操作State内数据
      • 3. Action:异步操作不能直接操作State,只能调用Mutation操作
      • 4.Getter: 数据包装,数据处理
      • 5.Module: 模块化(仓库细化)
  • 项目功能
    • 1.重置表单?

基础

介绍一下vue?你觉得vue有什么特点?你使用的其他框架有什么区别?

  1. 介绍:vue是渐进式的js框架可以作为第三方库使用,也可以使用vue构建复杂的单页项目。
  2. 特点:
  • 很容易开始,只需要html,css,js如果是如果是的话react还需要es6,jsx,函数编程
  • 灵活性:可作为第三方库或框架工程使用。
  • 高效:虚拟DOM。
  • 使用方便:指令、模板、数据双向绑定react可自动修改数据双向绑定,react需要手动执行setState。
  • 组件化:和react项目vue新手更容易接受组件化html,css,js,而react都是通过js实现。

v-if 和v-show区别?

  1. v-if是删除和创建,频繁切换消耗大
  2. v-show是添加display:none;block;来回切换,消耗小,适合频繁切换
  3. v-for优先于v-if

Vue作为MVVM框架,M、V、VM分别代表什么?

  • Model View VM
  • Model 是数据模型
  • View 是视图
  • VM 是 用于连接数据和视图

mvvm什么是框架?它和其他框架(jquery)有什么区别?哪些场景适合?

答:一个model view viewModel框架,数据模型model,viewModel连接两个 区别:vue数据驱动,通过数据显示视图层而不是节点操作。 场景:数据操作多的场景更方便

Model视图更新的相关依赖也会同步改变, 双向绑定就是vm起了作用

方法调用,computed,watch区别?

1.方法:每次重新渲染页面数据,都会重新执行。 性能消耗大,除非不想在缓存时使用. 2.computed:计算属性,依赖于其他属性,并且computed该值为缓存,只有当计算值发生变化时才能返回内容。 3.watch:将执行监控值的变化,并在回调中进行一些逻辑操作。

结论:一般不使用方法,除非你不想缓存 一般来说,动态获取值可以依靠其他属性来使用computed 对于监听到值的变化,需要进行异步操作或更昂贵的操作watch

如何让css只在当前组件中工作?

当前组件style修改为style scoped

< style scoped> < /style> 

vue Loader是什么?

vue Loarder作用是将.vue文件分析成浏览器可以识别的文件

vue中key是什么?

key虚拟的主要功能是有效更新DOM

声明周期

生命周期是什么?

生命周期是从创造到销毁的过程

生命周期是什么?

  • beforeCreate 创建前
  • created 创建后
  • beforeMount 挂载前
  • mounted 挂载后
  • beforeUpdate 数据更新前
  • updated 数据更新后
  • beforeDestroy 销毁前
  • destroyed 销毁后

这些有什么区别和意义?

  • beforeCreate创建前,刚执行new操作,其他什么都没做
  • created创建后,将属性和方法挂载到实例上
  • beforeMount挂载前,找到了el或mount相应的节点范围,但没有替换数据字,相当于创建DOM树
  • mounted挂载后,vue范围内的变量将被替换为data里面的数据值
  • beforeUpdate数据更新前
  • updated数据更新后
  • beforeDestroy销毁前
  • destroyed销毁后

我们什么时候在项目中使用它?

ajaxs在获取数据时created此时使用渲染页面

组件

组件中data为什么不使用对象?

  • 复用组件时,共享所有组件实例data,如果data它是一个对象,它会导致一个组件修改其他调用组件的值也会改变。此时,写一个函数,每次调用都会返回一个新的数据
  • new Vue() 其中的方法是生成一个根组件,它不会重用,也不会共享data情况

什么是组件?

我们可以抽象成一棵由组件组成的大组件树,从一个页面到一个按钮,一个页面由许多组件的嵌套拼接组成,即组件;

组件有什么好处?

  • 复用性强
  • 模块化开发
  • 代码好管理
  • 耦合度低

组件如何创建?

有三种组件:

  1. 全局组件:
  • Vue.component(‘组件名称‘,组件详情对象)
  1. 局部组件:
  • new Vue( components:{ 组件名称:组件详情的对象 } ))
  1. 单文件组件: .vue文件

组件通讯

  1. 第一种:
	1、父传子:props
	2、子传父:$emit自定义事件
  1. 第二种:
	 1、this.$parent.parentMsg;获取父级内容
	 2、this.$children; 获取子组件内容
  1. 第三种获取子集内容:
 	 // 多个子组件时根据子组件上的 ref 属性选择
	 <Child ref="c1">
	 <Child ref="c2">
	 this.$refs.c1.childMsg

父子组件传值?

  1. 父传子: 父传值 v-bind=“msg”,props[]子接受
  • 父组件 < son :fatherMsg=“msg” >,在父组件内的子组件上自定义指令绑定父组件的 msg
  • 子组件 props[“fatherMsg”],子组件通过props以数组形式接收,也可以对象形式这样写:
  • props:{ fatherMsg: String }
//父组件:
<son :fatherMsg="msg">
//子组件:
{
    
       { fatherMsg }}

<script>
props:["fatherMsg"]
//或
props:{
	fatherMsg: 数据类型
}
<script/>
  1. 子传父:用 this.$emit(“自定义事件名称”,传递内容)
  • 子组件通过 this.$emit(“事件名”,传递内容)传递内容
  • 父组件 < Sub @事件名(同子组件传输的一样)=“自定义事件名” >,在自定义事件上接收并保存在data就可以使用了
//父组件:
//自定义事件名要和子组件传过来的定义一样
<son @childInput="getVal>

<script>
  methods: {
  //接收数据并保存在data
      getVal(msg) {
         this.msgVal = msg;
  	} 
  }
</script>

//子组件:this. e m i t ( " 自 定 义 事 件 名 " , 传 递 内 容 ) t h i s . emit("自定义事件名",传递内容) this. emit("自定义事件名",传递内容)this.emit(“childInput”, this.subcon);

兄弟组件传值?

通过一个中转(bus.js)

//bus.js内容
import Vue from "vue";
export default new Vue;

A兄弟传值:

  • 通过import引入bus.js
  • bus.$emit(“自定义事件名”,传递内容) B兄弟接收:
  • 通过import引入bus
bus.$on("自定义事件名"(同传过来的一样),(data) =>{
	//data是传过来的数据进行接收
   }
)

封装组件?(未解决)

  1. 创建组件.vue文件,内部写功能代码
  2. Vue.componte(“自定义组件名”,创建的组件名)注册组件
  3. 使用组件

路由

什么是路由?

路由:路由就是通过点击不同的按钮展示不同的页面或者组件的功能 原理:根据不同的路径地址,展示不同的页面,组件

vue-loader是什么?使用它的用途是什么?

  1. ,跟template,js,style转换成js模块。
  2. ,template可以加jade等

keep-alive了解?

  1. keep-alive是什么? 内置组件,能在组件切换过程中将状态保存在内存中,防止重复渲染DOM。

Vue.js $route 和 $router 的区别

  • $route 是,包括 path , params , hash , query ,fullPath , matched , name 等
  • ⽽ $router 是包括了路由的跳转⽅法,钩⼦函数等

未分类

vue插件使用步骤?

下载----引入----使用

axios

axios是什么?怎么使用?描述使用它实现登录功能的流程?

  1. 请求后台资源模块

  2. npm install axios -S装好,然后发送的是跨域,需在配置文件中config/index.js进行设置。后台如果是Tp5则定义一个资源路由。js中使用import进来,然后.get或.post。返回在.then函数中如果成功,失败则是在.catch函数中

  • 下载 npm install axios --seve
  • 引入(main.js)内
 import axios from "axios"
 Vue.prototype.axios = axios
  • 请求方式,以及传参
axios.get("/api/login?userName=xxx$userPwd=xxx")

axios.post("/api/login", {
	userName: xx,
	userPwd: xx
})

Vuex

Vuex是什么?

Vuex 是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据共享。

Vuex同一管理状态的优点?

  1. 易于开发和维护:能在vuex中集中管理共享数据
  2. 提高开发效率:能够高效的实现组件之间的数据共享
  3. 实时保持数据与页面的同步:存储在vuex中的数据都是响应式的

什么样的数据适合存储到Vuex中?

一般情况下,只有组件之间共享的数据才有必要存储到vuex中,对于组件的私有数据,依旧存储在自己自身的data中即可

怎样使用Vuex?

  1. 安装vuex依赖包
  2. 用import导入vuex包,用Vue.use(Vuex)安装vuex
  3. 创建store对象,new 一个Vuex.Store构造函数,提供一个存放全局共享数据的实例
const store = new Vuex.Store({
    //state中存放的就是全局共享数据
    state: { count: 0 }
})
  1. 将store对象挂载到vue实例中
new Vue({
    el: "#app",
    render: h => h(app),
    reuter,
    //将创建的共享数据对象挂载到Vue实例中
    //所有的组件就可以直接从store中获取全局的数据了
    store
})

Vuex的核心概念?

1. State:State是存储共有数据

  • 方式一:通过this.$store.state.count 获取数据,this可省略
  • 方式二:从 vuex 导入 mapState 函数,将全局数据为当前组件的计算属性

2. Mutation:操作State内数据

  • 方式一:通过this.$store.commit(“方法名”)操作mutation
  • 方式二:从 vuex 导入 mapMutations函数,将指定的 mutations函数映射为当前组件的methods函数,直接this. 调用,不需要再this.$store.commit

3. Action:异步操作,不能直接操作State,只能通过调用Mutation操作

  • Action内通过 context.commit()触发某个 mutation才行
  • 组件内通过 dispatch函数专门是用来触发 action的:this.$store.dispatch(“定义的action方法名”)

4.Getter: 数据包装,数据处理

5.Module: 模块化(仓库细致化)

项目功能

1.重置表单?

绑定事件,通过element-ui中表单提供的的resetFields方法可以重置表单,this.$refs.(表单的ref).resetFields

标签: subcon连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台