Vue核心概念及特性 (一)

14 篇文章 0 订阅
4 篇文章 1 订阅

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。

特点: 易用,灵活,高效,渐进式框架。

前端优选

可以随意组合需要用到的模块 vue components vue-router vuex vue-cli

一.Vue的概念和特性

1.什么是库,什么是框架?

  • 库是将代码集合成一个产品,我们可以调用库中的方法实现自己的功能。
  • 框架则是为解决一类问题而开发的产品,我们在指定的位置编写好代码,使用时框架帮我们调用。

框架与库之间最本质区别在于控制权:you call libs, frameworks call you.

Vue属于框架

2.MVC模型 && MVVM模型

前端优选

在传统的mvc中除了model和view以外的逻辑都放在了controller中,导致controller逻辑复杂难以维护,在mvvm中view和model没有直接的关系,全部通过viewModel进行交互

Vue是MVVM模式

3.声明式和命令式

  • 自己写for循环就是命令式 (命令其按照自己的方式得到结果)
  • 声明式就是利用数组的方法forEach (我们想要的是循环,内部帮我们去做)

二.Vue的基本使用

1.mustache语法

允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。在使用数据前需要先声明:

  • 编写三元表达式
  • 获取返回值
  • JavaScript 表达式
<div id="app">
    {{ 1 1 }}
    {{ msg == 'hello'?'yes':'no' }}
    {{ {name:1} }}
</div>
<script src="./node_modules/vue/dist/vue.js"></script>
<script>
let vm = new Vue({
    el:'#app',
    data:{
        msg:'hello'
    }
})
</script>

2.响应式数据变化

Vue中使用Object.defineProperty重新将对象中的属性定义,如果是数组的话需要重写数组原型上的方法

function notify() {
    console.log('视图更新')
}
let data = {
    name: 'youxuan',
    age: 18,
    arr: [1,2,3]
}
// 重写数组的方法
let oldProtoMehtods = Array.prototype;
let proto = Object.create(oldProtoMehtods);
['push', 'pop', 'shift', 'unshift'].forEach(method => {
    proto[method] = function (...args) {
        let inserted;
        switch (method) {
            case 'push':
            case 'unshift':
                inserted = args;
                break;
        }
        observerArray(inserted)
        notify();
        oldProtoMehtods[method].call(this, ...args)
    }
})
function observerArray(obj) { // 观察数组中的每一项
    for (let i = 0; i < obj.length; i  ) {
        observer(obj[i]);
    }
}
function observer(obj) {
    if(typeof obj !== 'object'){
        return obj
    }
    if (Array.isArray(obj)) {
        obj.__proto__ = proto
        observerArray(obj);
    }else{
        for (let key in obj) {
            defineReactive(obj, key, obj[key]);
        }
    }
}
function defineReactive(obj, key, value) {
    observer(value); // 再一次循环value
    Object.defineProperty(obj, key, { // 不支持数组
        get() {
            return value;
        },
        set(val) {
            notify();
            observer(val);
            value = val;
        }
    });
}
observer(data);
data.arr.push({name:'jw'})
console.log(data.arr);

· 缺陷

  • 不能通过通过长度、索引改变数组
  • 不能给对象新增属性
  • 需要通过vm.$setvm.$delete方法强制添加/删除响应式数据

3.Vue实例上的方法

  • vm.$el;
  • vm.$data;
  • vm.$options;
  • vm.$nextTick();
  • vm.$mount();
  • vm.$watch();
  • vm.$set();

三.Vue中的指令

在vue中 指令 (Directives) 是带有 v- 前缀的特殊特性,主要的功能就是操作DOM

1.v-once

<div v-once>{{state.count}} </div>

2.v-html

永远不要对用户输入使用v-html,可能会导致xss攻击

<div v-html="text"></div>

3.v-bind

动态绑定属性需要使用v-bind进行绑定

<img v-bind:src="src">

可以使用:来简写 v-bind

4.v-for

<template v-for="(fruit,index) in fruits" >
    <li :key="`item_${index}`">{{fruit}}</li>
    <li :key="`fruit_${index}`">{{fruit}}</li>
</template>

多个元素循环时外层需要增加template标签,需要给真实元素增加key,而且key不能重复,尽量不要采用索引作为key的值

举个key值的例子:

前端优选

5.v-if/v-else/v-show

v-if可以切换DOM元素是否存在,并且v-iffalse时内部指令不会被执行
v-show可以控制元素的显示及隐藏,主要控制的是元素样式

6.v-on

  • 事件的绑定 v-on绑定事件
  • 事件修饰符 (.stop .prevent) .capture .self .once .passive

7.v-model

双向数据绑定

<input type="text" :value="value" @input="input">
<input type="text" v-model="value">

四.面试题环节

  • 请说下对于MVVM的理解
  • Vue实现数据双向绑定的原理
  • Vue常用的指令有哪些
  • v-model的原理
  • v-if 和 v-show 区别
  • Vue中 key 值的作用

欢迎关注 [ 前端优选 ] 精彩文章,等你来看!

webyouxuan

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SpringBoot是一个轻量级的Java框架,它提供了一个快速的应用开发平台,可以帮助开发人员更快地构建和部署应用程序。Vue是一种渐进式JavaScript框架,它建立在现有的技术堆栈之上,专注于构建单页应用程序,使用Vue可以前后端分离,更好地管理代码,减少重复开发。SpringBoot和Vue的优势在于它们提供了一个简单的开发环境,可以快速构建和部署应用程序,提高开发效率,减少重复开发的工作量。 ### 回答2: Spring Boot是一个为开发微服务和独立的Spring应用程序提供快速、便捷的框架。它的特性主要包括以下几个方面: 1. 简化的配置:Spring Boot采用"约定优于配置"的原则,提供了自动配置的能力,可以根据应用程序的依赖自动配置相应的功能。减少了开发者对各种繁琐配置的工作量,提高了开发效率。 2. 嵌入式服务器:Spring Boot内置了多个Web服务器,如Tomcat、Jetty等,可以直接将应用程序打包成可执行的Jar文件,便于部署和运行。 3. 智能的依赖管理:Spring Boot通过自动分析应用程序的依赖关系,帮助开发者管理和解决版本冲突的问题,减少了开发者的维护工作。 4. 健康检查和指标监控:Spring Boot提供了健康检查和指标监控的功能,可以实时监控应用程序的运行状态,方便运维人员进行故障排查和性能优化。 Vue是一种流行的前端框架,它的特性和优势主要包括以下几个方面: 1. 简洁的语法:Vue采用了简洁的模板语法,使得开发者可以通过直观的模板代码构建用户界面,不需要深入学习复杂的语法和概念。 2. 响应式数据绑定:Vue支持响应式的数据绑定,当数据发生变化时,相关的视图会自动更新。这大大减少了开发者手动操作DOM的时间和精力。 3. 组件化开发:Vue提供了组件化的开发方式,将页面拆分成多个独立的组件进行开发和维护,提高了代码的可复用性和可维护性。 4. 生态丰富:Vue配套了丰富的插件和工具,如Vue Router、Vuex等,能够帮助开发者更高效地构建复杂的单页面应用。 综上所述,Spring Boot和Vue作为后端和前端的两个框架,在各自领域都拥有强大的特性和优势。通过将它们结合起来使用,可以实现前后端分离的开发模式,提高开发效率,同时还能够借助Spring Boot的优秀生态系统和Vue的灵活性,构建出更加强大和易于维护的应用程序。 ### 回答3: Spring Boot是一个用于构建独立的、生产级别的Java应用程序的框架。它的特性和优势如下: 1. 简化开发流程:Spring Boot可以快速创建和配置Spring应用程序,简化了Spring项目的开发流程。它提供了一套默认配置,减少了开发人员的配置工作。 2. 内嵌服务器支持:Spring Boot内置了Tomcat、Jetty等常用的Java Web服务器,无需单独部署服务器,方便开发和调试。 3. 自动配置:Spring Boot根据应用程序的所需依赖自动配置,减少了手动配置的工作量。 4. 简化依赖管理:Spring Boot使用约定大于配置的原则,简化了依赖管理,使用Maven或Gradle构建项目,可以自动解决依赖冲突问题。 5. 提供监控与管理功能:Spring Boot提供了丰富的监控与管理功能,可以轻松地进行应用程序的监控和管理,如健康检查、性能监控等。 Vue是一个流行的JavaScript框架,用于构建用户界面。它的特性和优势如下: 1. 渐进式框架:Vue是一个渐进式框架,可以逐渐将Vue引入现有的项目中,而无需重写整个项目,方便项目的持续迭代和扩展。 2. 响应式数据绑定:Vue提供了灵活的数据绑定机制,可以方便地将数据和DOM进行关联,实现数据的自动更新。 3. 组件化开发:Vue采用组件化的开发方式,将UI界面拆分成独立的组件,提高了代码的复用性和可维护性。 4. 轻量级:Vue核心库很小,加载和启动速度快,对项目的性能影响较小。 5. 生态系统丰富:Vue拥有庞大的生态系统,有丰富的第三方插件和组件库可供选择,可以快速构建复杂的前端应用。 通过结合Spring Boot和Vue,我们可以利用Spring Boot的强大功能构建稳健的后端服务,同时使用Vue构建灵活、高效的前端界面,实现前后端的分离开发,并且可以实现快速迭代及扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值