Vue3详细教程

news2025/2/27 17:09:26

一.Vue3的介绍

相信大家都已经学习过Vue2了,对Vue有了一定的了解。那么今天我们就一起来学习有关Vue3的知识点。那为什么要学习Vue3呢,主要是他有以下的特点。
(1)新增组合式api
(2)更加接近原生
(3)更加解耦(react启发)

二.Vue3的安装

  1. 全局安装脚手架(如果安装过脚手架请忽略这步)
    npm i @vue/cli -g
  2. 创建一个vue3 的项目
    vue create 项目名称
    在这里插入图片描述
  3. 选择手动
    在这里插入图片描述
  4. 选择babel ES6转ES5 Router路由 Vuex css预处理器 Linter语法格式检查
    在这里插入图片描述
  5. 选择版本3x(这个一定要注意,与vue2的区别)
    在这里插入图片描述
  6. 选择scss
    在这里插入图片描述
  7. 其他按照如下选择,基本都是默认在这里插入图片描述
  8. 进入项目,运行到服务器,复制网址可以出现,就说明成功
    安装并创建了Vue3的项目在这里插入图片描述

三.Vue3的使用

一. 推荐插件

在练习项目之前建议大家安装Vscode的两个插件,方便Vue3的学习。分别是
(1)Vue Volar extension Pack
在这里插入图片描述
(2)Vetur
在这里插入图片描述

二.Vue2与VUe3的异同

1. Vue2与Vue3基本相同

01 生命周期基本一致

02 与vue2的模板语法基本一致

03 与选项基本一致 data methods,computed watch 一致

2. Vue2与Vue3的不同点(重点)

01 启动方式
(1)vue3的启动方式

import {createApp} from 'vue'
createApp(App).use(router).use(store).mount("#app")

(2)vue2的启动方式

import Vue from 'vue'
new Vue({
   store,
   router,
  render:h=>h(App)
}).$mount("#app")

02 全局方法挂载
(1)vue2的全局方法挂载

app.config.globalProperties.$say = function(msg){alert(msg)}

(2)vue3的全局方法挂载

Vue.prototype.$say = function(msg){alert(msg)}

03 根节点
(1)vue3 可以有多个根节点
(2)vue2 只能有一个根节点(容易出错的点)
04 生命周期,卸载
(1)Vue3

beforeUnmount()组件将要卸载
unmounted组件已经卸载

(2)Vue2

beforeDestroy()销毁前
destroyed()销毁后

下面是生命周期图示官方图,可供参考
在这里插入图片描述

三. 组合式 API:setup()

setup() 钩子是在组件中使用组合式 API 的入口,通常只在以下情况下使用:

  1. 需要在非单文件组件中使用组合式 API 时。
  2. 需要在基于选项式 API 的组件中集成基于组合式 API 的代码时。
    其他情况下,都应优先使用 < script setup> 语法。

(1)ref

创建值类型响应式数据方法
在seup内部需要 .value 来访问设置值

(2) reactive

创建引用类型响应式数据方法

(3)defineProps

定义 组传的传参props

(4)defineEmits

定义组件发送的事件

(5)watch

监听一个数据的变化

(6)watchEffect

监听多个数据

(7)生命周期

setup中的生命周期,没有beforeCreate与created
setup的生命周期需要加on前缀

四.Vue3的简单练习案例

1.案例1

<template>
  <div>
      <h1>你好Vue3</h1>
      <!-- 02 与2的模板语法基本一致 -->
      <button @click="num++">{{num}}</button><br/>
      <input type="text" v-model.number="num" />
      <p>{{rmsg}}</p>
      <button @click="$say('你好老曾')">  全局</button>
  </div>
  <div>
      <h1>第二个根节点</h1>
  </div>
</template>
<script>
export default {
  // 01 生命周期基本一致
  created(){
    console.log("你好vue3,from clog")
  },
  data(){
    return {
      num:1,
      msg:"你好前端开发"
    }
  },
  // 03 与选项基本一致 data methods,computed watch 一致
  computed:{
    "rmsg":function(){
      return  this.msg.split('').reverse().join("");
    }
  }
}
</script>
  1. 案例2
<template>
  <div>
    <h1>setup</h1>
    <button @click="num++">{{num}}</button> <br>
    <stepper-com :value="num" @input="num=$event" ref="stepper"></stepper-com>
  </div>
</template>
<script setup>
// 使用setup 可以简写(不用导出,组件不用注册了)
  import StepperCom from '@/components/StepperCom.vue'
  import {ref,onMounted} from 'vue';
  const num = ref(5);
  
  const stepper = ref();
  onMounted(() => {
    console.log("组件已经挂载完毕")
    // 组件挂载完毕引用steper组件
    // stepper.value就是对stepper-com 组件的引用
    console.log(stepper.value.count)
  })
 
</script>
  1. 案例3
<template>
  <div>
    <h1>生命周期</h1>
    <button @click="num++">{{num}}</button>
    <button @click="setNum(num+5)">加5</button>
    <p v-for="item in list" :key="item">{{item}}</p>
    <input type="text" v-model="temp" @keyup.enter="addList()">
  </div>
</template>
<script>
  // ref 导入一个创建响应式 值类型数据的方法
  // reactive 响应式 引用类型方法
   import {ref,reactive} from 'vue'
  export default {
    setup(){
      // 创造一个响应式对象 num 默认值是5
      const num = ref(5);
     
      // 定义更新num的方法
      function setNum(n){
        // 在setup 中num的值访问与赋值要加value 在template不需要
        num.value = n;
      }
       // 返回num
      // 定义一个响应式列表数据
      var list = reactive(["Vue","react","Angular","小程序"])
      // 定义temp 临时数据
      var temp = ref("");
      // 定义添加list 的方法
      function addList(){
        // 注意值类型访问要加value
        list.push(temp.value);
        temp.value = "";
      }
      // 返回 定义的方法与数据
      return {num,setNum,list,temp,addList};
    },
    beforeUnmount(){
      console.log("组件将要卸载")
    },
    unmounted(){
      console.log("组件已经卸载")
    }
  }
</script>

以上就是全部内容啦,敬请期待下一篇博客在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb web.xml配置详解

参考&#xff1a; XML 教程Java web之web.xml配置详解 Javaweb三大组件是&#xff1a;Servlet&#xff0c;Filter&#xff0c;Listener。 1、Servlet Servlet作为中转处理的容器&#xff0c;连接了客户端和服务器端的信息交互和处理。2、Filter 拦截用户请求&#xff0c;在服…

tomcat下载安装及配置教程

之前选择的版本是tomcat 10.0按照下面流程走了一遍&#xff0c;发现一直是未发现&#xff08;Not Found&#xff09;的状态。 后来&#xff0c;我换成了tomcat 9版本就OK了 下面以tomcat 9.0版本为例讲述其过程 一、下载Tomcat及解压 官网&#xff1a; http://tomcat.apach…

Vue基础知识总结 9:vue webpack打包原理

&#x1f345; 作者简介&#xff1a;哪吒&#xff0c;CSDN2021博客之星亚军&#x1f3c6;、新星计划导师✌、博客专家&#x1f4aa; &#x1f345; 哪吒多年工作总结&#xff1a;Java学习路线总结&#xff0c;搬砖工逆袭Java架构师 &#x1f345; 关注公众号【哪吒编程】&#…

解决npm warn config global `--global`, `--local` are deprecated. use `--location=global` instead.

在安装配置node时&#xff0c;cmd检查node没问题 但是检查npm就出现npm warn config global --global, --local are deprecated. use --locationglobal instead.的报警 问题出现在&#xff0c;以前版本npm的命令一般时XXX -g 但是随着版本更替&#xff0c;这个老方法被弃用了&a…

详细vite创建vue3项目(vue3+vue-router+ts+vite+element-plus+pinia)

vite创建vue3ts项目 为何选择vite&#xff1a; vite 是一个基于 Vue3 单文件组件的非打包开发服务器&#xff0c;它做到了本地快速开发启动&#xff1a; 快速的冷启动&#xff0c;不需要等待打包操作&#xff1b; 即时的热模块更新&#xff0c;替换性能和模块数量的解耦让更新…

uniapp中自定义导航栏

相信很多小伙伴在使用uniapp进行多端开发的时候呢&#xff0c;在面对一些奇葩的业务需求的时候&#xff0c;uniapp给我们提供的默认导航栏已经不能满足我们的业务需求了&#xff0c;这个时候就需要我们自己自定义导航栏使用啦。 当然uniapp也给我们提供了很多的自定义导航栏的…

开箱即用,这些 Vue3 后台管理系统模板绝对让你爽歪歪!

原文链接&#xff1a;Vue3 后台管理系统模板推荐。 之前写了一篇关于 Vue2 的后台管理系统模板的推荐&#xff0c;详情请见 Vue后台管理系统模板推荐。 Vue3 在今年2月份已成为新的默认版本&#xff0c;本文收集了一些 Vue3 的后台管理系统模板&#xff0c;分享给在座的仌 &am…

web前端面试题(必背面试题)

必背面试题-手写题 前端面试&#xff08;手写题&#xff09;_Z_Xshan的博客-CSDN博客 css系列 面试官&#xff1a;说说你对盒子模型的理解 一、是什么 所有元素都可以有像盒子一样的平面空间和外形 一个盒子由四部分组成&#xff1a;context ,padding,margin,border con…

Django web开发(一) - 前端

文章目录前端开发1.快速开发网站2.标签2.1 编码2.2 title2.3 标题2.4 div和span2.5 超链接2.6 图片小结标签的嵌套2.7 列表2.8 表格2.9 input系列2.10 下拉框2.11 多行文本用户注册案例: 用户注册GET 方式POST 方式表单数据提交优化3.CSS样式3.1 快速上手3.2 CSS应用方式1. 在标…

小程序生命周期

小程序的生命周期说白了就是指程序从创建、到开始、暂停、唤起、停止、卸载的过程。 我们大概从三个角度看一下小程序的生命周期。 &#xff08;1&#xff09;&#xff1a;应用生命周期 &#xff08;2&#xff09;&#xff1a;页面生命周期 &#xff08;3&#xff09;&…

Threejs入门教程

一、本地搭建Threejs官方文档网站 1.官网地址&#xff1a;https://github.com/mrdoob/three.js 下载压缩包并解压或使用git clone 若github过慢&#xff0c;则使用gitee对应网址&#xff1a;three.js: mrdoob/three.js 同步库 2.目录解析 3.启动方式 在three.js项目根目录下…

Vue中created和mounted详解

目录 一、生命周期概念 二、浏览器渲染过程 三、生命周期中的浏览器渲染 beforeCreate阶段 created阶段 beforeMount阶段 mounted阶段 四、使用场景 五、常见相关问题 一些页面跳转后, 一些基础数据接口没有重新请求 一、生命周期概念 通俗地讲&#xff0c;生命周期即Vue实例或…

vite.config.js详细配置。

Vue3vite vite和webpack区别&#xff1f; 1.vite服务器启动速度比webpack快&#xff0c;由于vite启动的时候不需要打包&#xff0c;也就无需分析模块依赖、编译&#xff0c;所以启动速度非常快。当浏览器请求需要的模块时&#xff0c;再对模块进行编译&#xff0c;这种按需动态…

Vue-cli(vue脚手架)上万字总结,超详细教程

1、创建Vue脚手架 1.1、首先系统需要全局安装Vue脚手架 npm install -g vue/cli 1.2、创建Vue脚手架工程 进入你想创建vue脚手架的目录&#xff0c;然后输入命令 vue create xxx项目名 需要注意的是工程名字不能大写&#xff0c;这里我们选择选择Vue2&#xff0c;敲下回车&am…

Java实现Token登录验证(基于JWT的token认证实现)

文章目录 一、JWT是什么&#xff1f;二、使用步骤 1.项目结构2.相关依赖3.数据库4.相关代码 三、测试结果 一、JWT是什么&#xff1f; 在介绍JWT之前&#xff0c;我们先来回顾一下利用token进行用户身份验证的流程&#xff1a; 1、客户端使用用户名和密码请求登录 2、服务端…

【微信小程序】view和scroll-view组件的基本使用

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;微信小程序 &#x1f4ac;个人格言&#xff1a;但行好事&#xff0c;莫问前程 view和scroll-vie…

移动端适配详解 , 给你解决适配烦恼

试想一下&#xff0c;如果我们只能开发web端&#xff0c;那么移动端的网友由谁来做&#xff01;那也太悲惨了 所以&#xff0c;这里说的就是如何开发页面到移动端&#xff0c;适配各个手机型号&#xff0c;让页面在手机上跑起来&#xff5e; 目录 理解些许概念 1. 开发的种…

Vue3新特性——Composition API详解

文章目录一、 Vue3快速入门1. Vue3 带来了什么2. Vue3工程的创建2.1 使用vue-cli创建2.2 使用vite创建2.2.1 是什么2.2.2 vite的优势2.2.3 使用步骤3. vue3项目结构的分析3.1 vue-cli 项目结构4. vue3中的开发者工具4.1 在线安装4.2 离线安装二、常用Composition API1. setup2.…

Vue3获取DOM、操作组件

文章目录&#x1f31f; 写在前面&#x1f31f; Vue2 ref 的使用&#x1f31f; Vue3获取DOM&#x1f31f; Vue3操作组件&#x1f31f; 写在最后&#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章&#xff0c;应粉丝要求开始更新 Vue…

若依框架前端Vue项目分析实战

说明 前面讲解了vue2的单点知识&#xff0c;下面用若依提供的vue项目&#xff0c;实战分析一下&#xff0c;拿到一个vue项目&#xff0c;如何进行分析并进行二次开发。 一、public/index.html与main.js和App.vue三者的关系 vue项目是单界面应用&#xff0c;所有的界面将在pu…