VUE基础入门20分

138 阅读5分钟

简答题

1.库与框架的区别是什么?

  • 库是将代码集合成的一个产品,供开发使用 在实际开发中,如果需要用到库,只需要使用库内我们所需的某个部分类或者函数,然后自己再实现其他部分的功能
  • 框架则是为了解决一个或一类问题而开发的产品 我们在开发使用框架的时候,框架为我们提供了一条龙服务,一整套的服务,我们调用框架的时候,取的是整个框架

2.Vue.js 的核心特性有哪些?

  • 数据驱动视图
  • 组件化开发

3.什么是数据驱动视图?

  • 数据变化会自动更新到对应元素中,无需手动操作 DOM,这种行 为称作单向数据绑定。
  • 对于输入框等可输入元素,可设置双向数据绑定。
  • 双向数据绑定是在数据绑定基础上,可自动将元素输入内容更新给数据, 实现数据与元素内容的双向绑定。

4.MVVM 模型各部分含义是什么,在 Vue.js 中分别对应哪些功能?

Vue.js 的数据驱动视图是基于 MVVM 模型实现的。

  1. MVVM (Model – View – ViewModel )是一种软件开发思想 • Model 层,代表数据 • View 层, 代表视图模板 • ViewModel 层,代表业务逻辑处理代码

5.el 选项的作用是什么,可以设置哪几种值?

用于选取一个 DOM 元素作为 Vue 实例的挂载目标。

  • 只有挂载元素内部才会被 Vue 进行处理,外部为普通 HTML 元素。
  • 代表 MVVM 中的 View 层(视图)。

可以为 CSS 选择器格式的字符串 或 HTMLElement 实例,但不能 为 html 或 body。挂载完毕后,可以通过 vm.$el 进行访问。

6.设置在 data 中的数据有什么特点?

  • 用于存储 Vue 实例需要使用的数据,值为对象类型。
  • data 中的数据可以通过 vm.$data.数据 或 vm.数据 访问。
  • data 中的数据可以直接在视图中通过插值表达式访问。
  • data 中的数据为响应式数据,在发生改变时,视图会自动更新。
  • data 中存在数组时,索引操作与 length 操作无法自动更新视图, 这时可以借助 Vue.set() 方法替代操作。

7.Vue.set() 可以解决什么问题?

  • data 中存在数组时,索引操作与 length 操作无法自动更新视图

8.插值表达式内有哪些书写要求?

  • 插值表达式只能书写在标签内容区域,可以与其它内容混合。
  • 内部只能书写 JavaScript 表达式,不能书写语句。
  • 挂载元素可以使用 Vue.js 的模板语法,模板中可以通过插值表 达式为元素进行动态内容设置,写法为 {{ }}。

9.methods 的作用是什么?

  • 用于存储需要在 Vue 实例中使用的函数
  • methods 中的方法可以通过 vm.方法名访问
  • 方法中的 this 为 vm 实例,可以便捷的访问 vm 数据等功能

10.谈谈你对指令的理解。

  • 指令的本质就是 HTML 自定义属性
  • 是以 v- 开头的自定义属性

11.常用的内容处理指令有哪些?

  • v-once 指令 使元素内部的插值表达式只生效一次
  • v-text 指令 元素内容整体替换为指定纯文本数据
  • v-html 指令 元素内容整体替换为指定的 HTML 文本

12.常用的属性绑定操作有哪些?

  • v-bind 指令 v-bind 指令用于动态绑定 HTML 属性 Vue.js 还为 v-bind 指令提供了简写方式':' 与插值表达式类似,v-bind 中也允许使用表达式 如果需要一次绑定多个属性,还可以绑定对象
  • Class 绑定 class 是 HTML 属性,可以通过 v-bind 进行绑定,并且可以与 class 属性共存 对于 class 绑定, Vue.js 中还提供了特殊处理方式 'class="'
  • Style 绑定 style 是 HTML 属性,可以通过 v-bind 进行绑定,并且可以与 style 属性共存 当我们希望给元素绑定多个样式对象时,可以设置为数组

13.v-for 指令的注意点?

  • 用于遍历数据渲染结构,常用的数组与对象均可遍历
  • 使用 v-for 的同时,应始终指定唯一的 key 属性,可以提高渲 染性能并避免问题
  • 通过 <template> 标签设置模板占位符,可以将部分元素或内容 作为整体进行操作

14.v-if 与 v-show 的区别?

v-show 指令:

  • 用于控制元素显示与隐藏,适用于显示隐藏频繁切换时使用
  • <template> 无法使用 v-show 指令 v-if 指令:
  • 用于根据条件控制元素的创建与移除
  • 给使用 v-if 的同类型元素绑定不同的 key
  • 出于性能考虑,应避免将 v-if 与 v-for 应 用于同一标签

15.如何绑定事件?

绑定事件:

<div id="app">
    <p>{{ content }}</p>
    <button v-on:click = "content = '新内容'">按钮</button>
</div>
var vm =  new Vue({
    el:'#app',
    data: {
        content: '默认内容'
    }
})

简写方式:

<div id="app">
    <p>{{ content }}</p>
    <button @click = "fn(content, $event)">按钮</button>
</div>
var vm =  new Vue({
    el:'#app',
    data: {
        content: '默认内容'
    },
    methods: {
        fn (content, event) {
            console.log(content);
            console.log(event);
        }
    }
})

16.谈谈你对双向数据绑定的理解?

  • 基于MVVM 模型实现的数据驱动视图解放了DOM操作
  • View 与 Model 处理分离,降低代码耦合度
  • 但双向绑定时的 Bug 调试难度增大
  • 大型项目的 View 与 Model 过多,维护成本高

17.如何设置自定义指令?

自定义全局指令:

<div id="app">
    <input type="text" v-focus>
</div>
Vue.directive('focus',{
    inserted: function (el) {
        el.focus();
    }
})

自定义局部指令:

<div id="app">
    <input type="text" v-focus>
<div>
new Vue({
    directives: {
        focus: {
            inserted (el) {
                el.focus();
            }
        }
    }
})

18.过滤器通常用来做什么?

过滤器用于进行文本内容格式化处理 过滤器可以在插值表达式和 v-bind 中使用

19.methods 与 computed 有哪些区别?

  • computed 具有缓存型,methods 没有
  • computed 通过属性名访问,methods 需要调用
  • computed 仅适用于计算操作

20.如何设置侦听器?

var vm =  new Vue({
    el:'#app',
    data: {
        content: {
            obj1: '默认内容1',
            obj2: '默认内容2',
        },
    watch: {
        content {
            deep: true,
            handler (var, oldVal) {
                console.log(val, oldVar);
            }
        }
    }
})