Vue3全网最细介绍使用

这篇具有很好参考价值的文章主要介绍了Vue3全网最细介绍使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Vue3介绍

1.性能的提升

  • 打包大小减少41%
  • 初次渲染快55%, 更新渲染快133%
  • 内存减少54%

2.源码的升级

  • 使用Proxy代替defineProperty实现响应式
  • 重写虚拟DOM的实现和Tree-Shaking

3.拥有TypeScript

  • Vue3可以更好的支持TypeScript

4.新的特新

  • Composition API(组合API)
    – Setup配置
    – ref与reactive
    – watch与watchEffect
    – provide与inject

  • 新的内置组件
    – Fragment
    – Teleport
    – Suspense

  • 其他改变
    – 新的生命周期钩子
    – data 选项应始终被声明为一个函数
    – 移除keyCode支持作为 v-on 的修饰符

5.组合式API和配置项API

  • Options API 存在的问题
    – 使用传统OptionsAPI中,新增或者修改一个需求,就需要分别在data,methods,computed里修改 。

  • Composition API的优势
    –我们可以更加优雅的组织我们的代码,函数。让相关功能的代码更加有序的组织在一起。

二、Vue3项目创建

  1. Vue-cli安装Vue3
vue create 名称		// 选择需要的配置 到版本选择3.X即可	
npm run server		// 运行服务器

vue3,Vue,javascript,vue.js,前端,vue3,setup

  1. Vite创建Vue3
npm init vue@latest		// 根据自己的需求选择功能
npm install				// 注意这个方式创建是没有node_modules的
npm run dev				// 运行服务器

vue3,Vue,javascript,vue.js,前端,vue3,setup

  1. Vite创建Vue(方式二)
npm init vite-app 项目名称 	// 默认功能是全不选的
npm install 				// 安装 依赖
npm run dev					// 运行服务

vue3,Vue,javascript,vue.js,前端,vue3,setup

三、Setup

Vue3中新增Setup配置项函数 在里面定义函数变量 必须return 才能在模版中使用

<template>
  <div>
    <h1> APP Setup</h1>
    <h3>我是{{name}}</h3>
    <h3>今年{{age}}</h3>
    <button @click="leftClick">点我看帅哥</button>
    <button @click="addAge">点我年龄+1</button>
  </div>
  <router-view/>
</template>

<script>
export default{                   // Vue3中所有的变量 函数编写 都写在Setup函数中
  setup(){
    // console.log(this.name)       // Vue3中没有This 
    let name = 'Like'
    let age = 20

    function leftClick() {
      alert('帅哥!!')
    }

    let addAge = () => {
      console.log('开始加啦!')
      age++                       // 发现问题 渲染没有问题 但是没有响应式 页面底层变了 变量没变
      console.log(age)
    }

    return {                    // 函数 变量 都需要返回 
      age, name, leftClick, addAge
    }
  }
}
</script>

四、ref与reactive


使用Ref 和 Reactive需要导入

import {ref, reactive} from "vue";

基本数据类型(数组 字符串 布尔)如果想要添加响应式 可以直接使用Ref包裹 通过变量名.Value来修改
对象 数组如果想要添加响应式需要使用Reactive包裹 通过变量.属性来修改

<template>
  <div>
    <h1> APP Setup</h1>
    <h3>我是{{name.name}}</h3>    <!-- reactive的用法 -->
    <h3>今年{{age}}</h3>      	  <!-- ref 的用法 -->
    <button @click="leftClick">点我看帅哥</button>
    <button @click="addAge">点我年龄+1</button>
  </div>
  <router-view/>
</template>

<script>

import {ref, reactive} from "vue";

export default{                  
  setup(){
    // console.log(this.name)       // Vue3中没有This
    let name = reactive({name:'like', height:180})      // 需要放在一个对象里面
    let age = ref(20)

    function leftClick() {
      name.name = name.name + '?'
      console.log(name)           // 这个时候我们可以看到name是一个Proxy对象 可以通过名称直接拿值
    }

    let addAge = () => {
      console.log('开始加啦!', age)   // 这个时候我们打印age发现是一个RefImpl对象 中有一个Value就是我们的数据值
      age.value = age.value+1                      // 发现问题 渲染没有问题 但是没有响应式 页面底层变了 变量没变
      console.log(age.value)
    }

    return {                    // 函数 变量 都需要返回
      age, name, leftClick, addAge,
    }
  }
}
</script>

vue3,Vue,javascript,vue.js,前端,vue3,setup

五、setup-context

上下文的作用就是可以接收参数 context 内部函数props接受的自定义属性

组件 
	<template>
	<div>
	  <h1>我是home组件{{name}}</h1>
	</div>
	</template>
	
	<script>
	export default {
	  name: 'HomeView',
	  props:['name'],
	  setup(context){
	    console.log(context)
	  }
	}
	</script>


App.vue
	<template>
  <div>
    <h1> Context</h1>
    <HomeView name="like"></HomeView>
  </div>
</template>

<script lang="js" setup>    // 语言可以切换成 Ts


import HomeView from './views/HomeView.vue'

export default{
  components:{HomeView},
}
</script>

vue3,Vue,javascript,vue.js,前端,vue3,setup

六、计算属性

与Vue2中的computed配置功能一致(案例:当姓名都发生变化的时候 其他也跟着变换)

<template>
  <p>姓:<input type="text" v-model="person.firstName"></p>
  <p>名:<input type="text" v-model="person.lastName"></p>
  <p>全名:{{ person.fullName }}</p>
  <p>全名修改:<input type="text" v-model="person.fullName"></p>

</template>

<script>

import {ref, reactive} from 'vue'
import {computed} from 'vue'

export default {
  name: 'App',
  setup() {
    const person = reactive({
      firstName: '梅',
      lastName: '星星'
    })

    // let fullName = computed(() => {
      // return person.firstName + '-' + person.lastName
    })
    // 或者,传入箭头函数
    // person.fullName=computed(() => {
      // return person.firstName + '-' + person.lastName
    })
    // 修改,传入配置项目
    person.fullName = computed({
      get() {
        return person.firstName + '-' + person.lastName
      },
      set(value) {
        const nameArr = value.split('-')
        person.firstName = nameArr[0]
        person.lastName = nameArr[1]
      }
    })
    return {person}
  },
}
</script>

vue3,Vue,javascript,vue.js,前端,vue3,setup

七、监听属性

<template>
  <h2>年龄是:{{ age }}</h2>
  <button @click="age++">点我年龄增加</button>
  <hr>
  <h2>姓名是:{{ person.name }}</h2>
  <button @click="person.name+='?'">点我姓名变化</button>
  <hr>
  <h2>sum是:{{ sum }},msg是:{{ msg }}</h2>
  <button @click="sum++">点我sum变化</button>
  |
  <button @click="msg+='?'">点我msg变化</button>

</template>

<script>

import {ref, reactive} from 'vue'
import {watch} from 'vue'

export default {
  name: 'App',
  setup() {
    const age = ref(19)
    const person = reactive({
      name: 'Like',
      age: 20
    })
    //1 监听普通
    watch(age, (newValue, oldValue) => {
      console.log('sum变化了', newValue, oldValue)
    })
    // 2 监听对象
    watch(() => person.name, (newValue, oldValue) => {
      console.log('person.name变化了', newValue, oldValue)
    })
    // 3 监听多个
    const sum = ref(100)
    const msg = ref('很好')

    watch([sum, msg], (newValue, oldValue) => {
      console.log('sum或msg变化了', newValue, oldValue)
    })
    return {person, age, sum, msg}
  },
}
</script>

vue3,Vue,javascript,vue.js,前端,vue3,setup

八、Vue3生命周期


Vue3.0中可以继续使用Vue2.x中的生命周期钩子,但有有两个被更名:

  • beforeDestroy改名为 beforeUnmount
  • destroyed改名为 unmounted

Vue3.0也提供了 Composition API 形式的生命周期钩子,与Vue2.x中钩子对应关系如下:

  • beforeCreate====>setup()
  • created========>setup()
  • beforeMount ====>onBeforeMount
  • mounted========>onMounted
  • beforeUpdate====>onBeforeUpdate
  • updated ========>onUpdated
  • beforeUnmount ==>onBeforeUnmount
  • unmounted =====>onUnmounted
    vue3,Vue,javascript,vue.js,前端,vue3,setup

九、自定义hook函数

什么是hook?

本质是一个函数,把setup函数中使用的Composition API进行了封装,类似于vue2.x中的mixin,自定义hook的优势: 复用代码, 让setup中的逻辑更清楚易懂。

打点功能示例

<template>
  <h2>点击的x坐标:{{ point.x }},y坐标:{{ point.y }}</h2>
</template>

<script>
import {reactive} from 'vue'
import {onMounted, onBeforeUnmount} from 'vue'

export default {
  name: 'Point',
  setup() {
    const point = reactive({
      x: 0,
      y: 0
    })

    function getPoint(event) {
      console.log('X轴是:', event.pageX)
      console.log('Y轴是:', event.pageY)
      point.x = event.pageX
      point.y = event.pageY
    }

    // 挂在完成开始执行
    onMounted(() => {
      window.addEventListener('click', getPoint)
    })
    // 接除挂载时执行
    onBeforeUnmount(() => {
      console.log('sss')
      window.removeEventListener('click', getPoint)
    })
    return {point}
  },
}
</script>
<template>
  <div>
    <button @click="isShow=!isShow">点我显示隐藏</button>
    <Point v-if="isShow"></Point>
  </div>
</template>

<script>
import {ref, reactive} from 'vue'
import Point from "./components/Point.vue";
import Demo from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {Demo, Point},
  setup() {
    const isShow = ref(true)
    return {isShow}
  },
}
</script>

vue3,Vue,javascript,vue.js,前端,vue3,setup

十、toRef

  • toRef的作用:创建一个 ref 对象,其value值指向另一个对象中的某个属性。
  • 语法:const name =toRef(person,'name')
  • 应用: 要将响应式对象中的某个属性单独提供给外部使用时。
  • 扩展:toRefstoRef功能一致,但可以批量创建多个ref 对象,语法:toRefs(person)
<template>
  <div>
    <h2>姓名:{{ name }}</h2>
    <h2>年龄:{{ age }}</h2>
    <button @click="age++">改年龄</button>| <button @click="name+='~'">改姓名</button>
  </div>
</template>

<script>

import {ref, reactive,toRefs} from 'vue'

export default {
  name: 'App',
  setup() {
    const person = reactive({
      name: 'like',
      age: 19
    })
    return {
      ...toRefs(person)   // ... 解压赋值
    }
  },
}
</script>

vue3,Vue,javascript,vue.js,前端,vue3,setup

技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点点赞收藏+关注谢谢支持 !!!文章来源地址https://www.toymoban.com/news/detail-649619.html

到了这里,关于Vue3全网最细介绍使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2和vue3中双向数据绑定的原理,ES6的Proxy对象代理和JavaScript的Object.defineProperty,使用详细

    简介: Object.defineProperty大家都知道,是vue2中双向数据绑定的原理,它 是 JavaScript 中一个强大且常用的方法,用于定义对象属性,允许我们精确地控制属性的行为,包括读取、写入和删除等操作; 而Proxy是vue3中双向数据绑定的原理,是ES6中一种用于创建代理对象的特殊对象,

    2024年02月15日
    浏览(47)
  • 【vue3】组合式API之setup()介绍与reactive()函数的使用

    ==😉博主:初映CY的前说(前端领域) ,📒本文核心:setup()概念、 reactive()的使用 【前言】vue3作为vue2的升级版,有着很多的新特性,其中就包括了组合式API,也就是是 Composition API。学习组合式API有什么优点呢?之前的vue2中结构不是挺不错的吗?那么接下来的事件,我将带着你

    2023年04月09日
    浏览(46)
  • 前端技术Html,Css,JavaScript,Vue3

    1.基本标签 2.文本格式化 3.链接 4.图片 5.无序列表 6.有序列表 7.表格 8.表单 1.选择器 2.文本和字体 3.链接 4.隐藏 5.定位position 6.浮动 7.对齐 8.图像 1.输出 2.函数 3.常用事件 4.DOM 5.改变Html 6.DOM 元素 (节点) 尾部创建新的 HTML 元素 (节点) - appendChild() 头部创建新的 HTML 元素 (节点)

    2024年02月13日
    浏览(53)
  • 服务端使用ASP.NET Core SignalR与Vue3(TypeScript与JavaScript)前端建立通信(以进度条为例)

    1. ASP.NET Core           ASP.NET Core 是一个跨平台、高性能及开源的框架,用于生成基于云且连接互联网的新式应用程式。 官方文档:ASP.NET documentation | Microsoft Learn  2.  ASP.NET Core SignalR         ASP.NET Core SignalR 是开源库,用于服务端与客户端建立实时通信,可以自动管理连接

    2024年02月06日
    浏览(48)
  • 【Vue3】3-1 : 章节介绍 - Vue3组件应用及单文件组件

    本书目录:点击进入 一、本章学习目标 二、课程安排 Vue3组件相关概念 掌握组件之间的通信 封装一个可复用的组件 单文件组件SFC: 即.vue文件 = 样式 + 结构 + 逻辑 脚手架的使用和底层实现机制 工程化的认知 组件的概念及组件的 基本使用方式 组件之间 是如何进行互相 通信

    2024年01月19日
    浏览(34)
  • vue3中状态管理库pinia的安装和使用方法介绍及和vuex的区别

    Pinia 与 Vuex 一样,是作为 Vue 的“状态存储库”,用来实现 跨页面/组件 形式的数据状态共享。它允许你跨组件或页面共享状态。如果你熟悉组合式 API 的话,你可能会认为可以通过一行简单的 export const state = reactive({}) 来共享一个全局状态。 当该数据、方法在很多地方都需要

    2024年01月20日
    浏览(44)
  • Vue3/ Vue3 计算属性computed函数 语法 与 介绍 、Vue3 Vue2computed计算属性 能不能传参 怎么传参

    语法: // 第一种语法get方法 (没有set) const 函数名 = computed(() = {   return  }) // 第二种语法 get set 方法 带有set参数 可以设置 const 函数名 = computed(() = { get() { return 结果 }, set( val ){  } }) 触发场景:  如果要访问计算属性 会自动执行 get 如果要修改计算属性 会自动执行 set 简介

    2024年02月02日
    浏览(51)
  • Vue3之setup参数介绍

    使用setup函数时,它将接受两个参数: props context 让我们更深入地研究如何使用每个参数 setup函数中的第一个参数是props。正如在一个标准组件中所期望的那样,setup函数中的props是响应式的,当传入新的prop时,它将被更新。 Warning :因为 props 是响应式的,你不能使用ES6解构,

    2024年02月16日
    浏览(34)
  • vue3组合式API介绍

    根据官方的说法,vue3.0的变化包括性能上的改进、更小的 bundle 体积、对 TypeScript 更好的支持、用于处理大规模用例的全新 API,全新的api指的就是本文主要要说的组合式api。 在 vue3 版本之前,我们复用组件(或者提取和重用多个组件之间的逻辑),通常有以下几种方式: M

    2023年04月22日
    浏览(63)
  • vue3 ts element plus form表单二次封装详细步骤 (附参数、类型详细介绍及简单使用示例)

    上篇table 表格封装 讲到项目中经常会用到 table 表格,所以做了封装。当然,form 表单使用的频率依然很高,所以和封装 table 表格的思路相似,对 form 表单也做了一个二次封装的组件。 查看国内预览站 查看国外预览站 1. EasyForm 表单组件封装 src/components/EasyForm/index.vue Form 表单

    2024年02月07日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包