Vue2\3有什么区别-Vue前端框架学习-基础

目录

渐进式框架

单文件组件

API风格

Vue3和Vue2有什么区别

核心架构与性能

Vue2只能有一个应用实例,而Vue3可以有多个应用实例

API 设计

语法与功能增强

        Vue实例创建方式

生命周期钩子

        方法定义

        HTML 模版更改

多根节点组件

Teleport 组件

多 v-model 支持

Element UI 升级为 Element Plus

开发体验


Vue是一款用于构建用户界面的JS框架,基于标准HTML、CSS和JS构建,并提供一套声明式、组件化的编程模型,帮助开发者高效地开发UI( User Interface)

声明式渲染:Vue基于标准HTML拓展了一套模版语法,使得可以声明式地描述最终输出的HTML和JS状态之间的关系

响应性:Vue会自动跟踪JS状态并在其发生变化时响应式地更新DOM

渐进式框架

Vue为了满足web开发多层次的需求,Vue的设计非常注重灵活性和“可被逐步集成”这个特点(就像叠积木一样)

        无需构建步骤,渐进式增强静态的HTML

        在任何页面中作为 Web Components 嵌入(一套由W3C标准支持的浏览器原生技术,允许开发者可复用、高封装性自定义HTML元素)

        单页应用(SPA)

        全栈/服务器端渲染(SSR)

        Jamstack/静态站点生成(SSG)

        开发桌面端、移动端、WebGL,甚至是命令行终端界面

单文件组件

在大多数启用构建工具的Vue项目中,我们可以用类似于 HTML 格式来书写 Vue 组件,它被称为单文件组件( .vue 文件,英文 Single-File Components ,缩写 SFC

单文件组件将一个组件的三大部分封装到一个文件里面

        <template>        定义组件的HTML模版

        <style>        定义组件的样式

        <script>        编写组件的 JS / TS 逻辑,比如数据、方法等

比如连点计数器

<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>

<template>
  <button @click="count++">Count is: {{ count }}></button>
</template>

<style scoped>
button {
  font-weight: bold;
}
</style>

API风格

Vue组件可以按照两种不同风格书写:选项式API 和 组合式API

选项式:Vue2中用包含多个选项的对象来描述组件的逻辑,例如 data、methods等,这些属性都会暴露在函数内部的 this 上,这是隐式的(自动将选项内容挂载到当前组件实例的 this 上)(在Vue3的组合式API中要求显式 return 暴露内容

<script>
export default {
  // data() 返回的属性将会成为响应式的状态
  // 并且暴露在 `this` 上
  data() {
    return {
      count: 0
    }
  },

  // methods 是一些用来更改状态与触发更新的函数
  // 它们可以在模板中作为事件处理器绑定
  methods: {
    increment() {
      this.count++
    }
  },

  // 生命周期钩子会在组件生命周期的各个不同阶段被调用
  // 例如这个函数就会在组件挂载完成后被调用
  mounted() {
    console.log(`The initial count is ${this.count}.`)
  }
}
</script>

<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>

组合式:使用导入的 API 函数来描述组件逻辑,在但文件组件中,组合式 API 通常和           <script setup> 搭配使用,这个 setup 是一个标识,告诉 Vue 需要在编译时进行一些处理,让我们可以更简洁地使用组合式 API ,比如 , <script setup> 中导入和顶层变量/函数都可以在模版中直接使用

<script setup>
import { ref, onMounted } from 'vue'

// 响应式状态
const count = ref(0)

// 用来修改状态、触发更新的函数
function increment() {
  count.value++
}

// 生命周期钩子
onMounted(() => {
  console.log(`The initial count is ${count.value}.`)
})
</script>

<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>

Vue3和Vue2有什么区别

核心架构与性能

  • 响应式系统:(响应式系统是 Vue 框架的核心特性之一,它能够自动追踪 JavaScript 状态变化并在变化发生时更新相关的 DOM。简单来说,它建立了数据与视图之间的自动同步机制,当数据变化时,视图会自动更新,无需手动操作 DOM,Vue能够智能地推导出需要重新渲染的组件的最少数量,并应用最少的 DOM操作)

    • Vue2 基于 Object.defineProperty,通过 data 选项定义响应式数据
    • Vue3 使用 Proxy,提供更全面的响应式能力和更好的性能,通过 setup 函数和 Composition

            (setup 是 Vue3中 Composition API(组合式API) 的入口,它是组件内的一个特殊函数,在组件实例创建时,在初始 prop 解析后立即执行)

            (Composition API 是 Vue3 引入的新的组织组件逻辑的方式,主要概念如下:

  1. 响应式系统:        

    • ref:创建一个响应式的基本类型值,通过.value访问和修改
    • reactive:创建一个响应式的对象或数组
  2. 生命周期钩子

    • onMountedonUpdatedonUnmounted等,用于在相应的生命周期阶段执行代码
  3. 计算属性和监听器

    • computed:创建一个计算属性
    • watch/watchEffect:监听响应式数据的变化)
  • 性能优化:

    • Vue3 打包体积更小(减少约40%)
    • 更优的内存占用和渲染速度
    • 改进的静态树提升和事件缓存

Vue2只能有一个应用实例,而Vue3可以有多个应用实例

API 设计(Application Programming Interface) 

  • 组合式 API:

    • Vue3 引入了组合式 API (Composition API),解决了选项式 API 在大型应用中的代码组织问题( Vue2 的话得在2.7版本以后才能用 组合式API )
    • 更好的逻辑复用和代码组织能力
  • 全局 API 改变:

    • Vue2: 直接修改全局 Vue 对象
    • Vue3: 使用 createApp() 创建应用实例,避免全局污染

语法与功能增强


        Vue实例创建方式

   - Vue 2: `const app = new Vue({ el: '#app', ... })`
   - Vue 3 用 .mount( ) 方式: `const app = Vue.createApp({ ... }).mount('#app')`

  • 生命周期钩子

    • 与传统Vue2钩子不同,setup内不能使用 this 访问组件实例

    • Vue2 中用 created() 作为选项,Vue3 中 onMounted() 在 setup() 里面使用

    • Vue3 重命名了部分钩子(如 beforeDestroy → beforeUnmount

    • 组合式 API 中使用新的生命周期函数

        方法定义

                Vue2 在 methods 选项中定义方法;而 Vue3 在 setup() 中定义常规函数

        HTML 模版更改

                插槽语法从 slot 属性改为 # 前缀语法

  • 多根节点组件

    • Vue2 组件必须有一个单一根元素
    • Vue3 支持多根节点组件(Fragment)
  • Teleport 组件

    • Vue3 新增,可以将内容渲染到 DOM 树的任意位置
  • 多 v-model 支持

    • Vue2 一个组件只能有一个 v-model
    • Vue3 支持多个 v-model 绑定

Element UI 升级为 Element Plus

        更新了组件的使用方法

        图标系统改为独立的 @element-plus/icons-vue 包 

开发体验

  • TypeScript 支持:

    • Vue3 使用 TypeScript 重写,提供更好的类型推断和支持
  • Suspense:

    • Vue3 新增,用于处理异步组件和异步数据加载状态
  • 更好的 Tree-shaking:

    • Vue3 大多数 API 都支持 tree-shaking,可以减少打包体积
  • 自定义渲染器 API:

    • Vue3 提供更简洁的渲染器 API,便于创建自定义渲染器

Vue3 在保留 Vue2 核心优势的同时,在架构、性能和开发体验等方面有了显著提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值