一、Vue3介绍

1. 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
  5. 新的内置组件:Fragment、Teleport、Suspense
  6. 新的声明周期钩子
  7. data选项应始终被声明为一个函数移除keyCode支持作为v-on的修饰符

2. Vue2和Vue3的不同之处

  • Vue2:配置项API

用Vue2写代码

new vue ({
el:'#app',
data:{},
methods:{}
})

  • Vue3:组合式API

用Vue3写代码

let name = 'mire'
let add = ()=>{ }

二、Vue3创建项目

1.用vue-lci创建步骤

更多详细讲解请戳这里:官方文档

跟创建Vue2的步骤一模一样!

更多详细讲解请戳这里:Vue-cli创建Vue项目

2.用vite创建步骤

vite是一个轻量级的、速度极快的构建工具,对 Vue SFC 提供第一优先级支持。作者是尤雨溪,同时也是 Vue 的作者!要使用 Vite 来创建一个 Vue 项目,非常简单,更多细节请戳>>>:新的构建前端项目工具vite官网构建项目最大优势就是快、极快,快的原因是:构建项目时没有下node-modules包,所以创建完之后还是要窒息cnpm install

具体步骤如下

# win+R输入cmd,进入终端,切换盘符到D盘
D:
cnpm init vue@latest

# 切换到项目目录(pycharm终端)执行以下代码下载依赖
cnpm install

# 运行项目需要在terminal执行以下代码
npm run dev

到此咱的项目创建完成

或者新建运行项目窗口也可以的



运行之后的页面展示

cli和vite创建Vue项目的对比

三、setup函数

基础代码写法如下

点击查看代码
<template>
<div class="home">
<h1>setup的使用</h1>
<p>姓名:{{ name }}</p>
<p>年龄:{{ age }}</p>
<br>
<button @click="handleClick">点我看美女</button>
<button @click="handleAdd">点击年龄+1</button>
</div>
</template> <script> export default {
name: 'HomeView', let name = '米热'
let age = 18
let handleClick = () => {
alert('美女')
}
let handleAdd = () => {
age++
console.log(age)
} return {name, age, handleClick, handleAdd}
}
}
</script>

tips:

  • 以后配置项api不建议用了,使用组合式api,最核心就是setup函数
  • 在setup里面写组合式api,setup 没有this了,使用 变量直接用就行了
  • 以后定义变量 使用let,定义常量使用const,尽量不使用var
  • 最后定义的变量和方法都要return
  • 但是失去了响应式,不过我们的ref、reactive、toRers可以解决此问题

四、ref、reactive、toRefs

ref、reactive使用方法如下

点击查看代码
<template>
<div class="home">
<h1>ref和reactive的使用</h1>
<p>姓名:{{ name }}</p>
<p>年龄:{{ age }}</p>
<br>
<button @click="handleClick">点我看美女</button>
<button @click="handleAdd">点击年龄+1</button>
<button @click="handleName">点击名字后+?</button>
<button @click="handleName2">点击名字2后+?</button>
<hr>
{{ userInfo.name }}------ {{ userInfo.gender }}
<button @click="handleChange">点击修改性别</button>
</div>
</template> <script>
import {ref, reactive} from 'vue' export default {
name: 'HomeView',
methods: {
handleName2() {
this.name = this.name + '?'
}
},
setup() {
let name = ref('米热')
let age = ref(18)
let userInfo = reactive({
name: '米热',
gender: '女'
})
let handleClick = () => {
alert('美女')
}
let handleAdd = () => {
age.value = age.value + 1 // 以后再改,必须用 xx.value改值
console.log(age)
}
let handleChange = () => {
console.log(userInfo)
userInfo.gender = '未知'
} let handleName = () => {
name.value = name.value + '?'
console.log(name)
} return {name, age, handleClick, handleAdd, handleName, userInfo, handleChange} }
}
</script>

tips:

  • ref定义的数据:操作数据需要.value,读取数据时模板中直接读取不需要.value
  • reactive定义的数据:操作数据与读取数据:均不需要.value

toRefs使用方法如下

点击查看代码
  setup() {
let data = reactive({
name: 'mire',
age: 18,
gender: '女'
})
return {...toRefs(data)}
}

tips:

  • 以后setup的返回值可以直接使用
  • 以后在模板中直接用 {{name}}

五、计算属性和监听属性

1.计算属性

点击查看代码
let person = reactive({
firstName: '',
lastName: '',
})
let fullName = computed(() => {
return person.firstName + person.lastName
})

2.监听属性

点击查看代码
# 组合式api写法,只要name发生变化,就会触发匿名函数执行
let name = ref('lqz')
watch(name, (newName, oldName) => {
console.log('name变了')
console.log('老的', oldName)
console.log('新的', newName)
}) # watchEffect 用法,只要age变化,就会执行,age不变化,就不会执行
watchEffect(() => {
console.log(age.value)
})

六、生命周期钩子

首先咱来看看图解吧



几乎变化不大,

在Vue2的beforedestroydestroyed

到了Vue3之后变成beforeMountmounted

Vue3从基础到精通的更多相关文章

  1. js基础到精通全面教程--JS教程

    适合阅读范围:对JavaScript一无所知-离精通只差一步之遥的人 基础知识:HTML JavaScript就这么回事1:基础知识 1 创建脚本块 1: <script language=”J ...

  2. xp-win7-win8的基础到精通教程-系统优化减肥教程-windos装mac

    是否还在使用别人封装的系统?是否还在担心下载后的系统是有病毒的?还在为 安装好新系统后,里面安装的软件全是自己不需要的?担心流氓软件绑定浏览器主页?担心 系统重装后,自己所有的编程软件都需要重新安装? ...

  3. 如何从Python负零基础到精通数据分析

    一.为什么学习数据分析 1.运营的尴尬:运营人需要一个硬技能每个初入行的新人都会察觉到,运营是一个似乎并没有自己的核心竞争力和安全感的工作.因为每天的工作好像都被各种琐事所围绕,而只有一个主题是永恒不 ...

  4. 零基础到精通Web渗透测试的学习路线

    小编相信很多新手都会遇到以下几个问题 1.零基础想学渗透怎么入手? 2.学习web渗透需要从哪里开始? 这让很多同学都处于迷茫状态而迟迟不下手,小编就在此贴给大家说一下web渗透的学习路线,希望对大家 ...

  5. 零基础到精通Linux,从这篇文章开始

    2018年想做Linux运维的人应该如何学习才能快速精通Linux? Linux入门这么简单,为什么很多人学不会? 想要成为一个合格的运维工程师,到底怎么才能从零开始精通Linux? 作为一个运维小白 ...

  6. Vue3 框架基础随笔 (一)

    VUE框架基础部分随笔 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架. Vue可以使用简单的代码实现一个单页面应用. 基本格式 Vue通过模板语法来声明式的将数 ...

  7. [资料分享]ACCESS2013 零基础到精通

    Microsoft Office Access是由微软发布的关系数据库管理系统.它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft O ...

  8. HTML+CSS纯干货就业前基础到精通系统学习2016/9/3

    1:HTML纯干货学习后的达到的效果 (1):会使用HTML的基本结构,创建网页 (2):会使用文本字体相关标签,实现文字修饰和布局 (3):会使用图像.超链接相关标签,实现图文并茂的页面 (4):会 ...

  9. 程序员必备英语.net版(.net菜鸟的成长之路-零基础到精通)

    通过一段时间的.NET学习,我发现英文不好是我的软肋~我觉得好好补习一下英文单词水平.可是要背哪些单词呢? 经过一段时间的整理,终于整理出来了一套比较完整的.NET程序员必备单词文档.单词加详细说明. ...

  10. C#基础学习第三天(.net菜鸟的成长之路-零基础到精通)

    1.复合赋值运算符 += -= *= /= %= 2.关系运算符  > < >= <= == !=  由关系运算符连接的表达式我们称之为关系表达式.  每一个表达式都可以求解出 ...

随机推荐

  1. 一文讲透CabloyJS全栈框架的来龙去脉

    本文受众 咱们做软件开发,就好比是建造一幢幢房屋,一座座桥梁,既可以是北方宫殿的巍峨,也可以有南方庭院的雅致,更可以是横跨群山的峻险与孤悬.那么,不同的语言.不同的框架也都由其内在的秉质吸引着一批粉丝 ...

  2. 启动homestead虚拟机 vagrant up执行后,提示Timed out while waiting for the machine to boot

    最近在启动homestead虚拟机时,总会卡在ssh验证这,几分钟后,就报timed out-- 以往都是重启电脑后,再次执行vagrant up后就能正常启动. 今日重启电脑很多次也无用. 查询解决 ...

  3. cv2.imread opencv读取不到图片问题

    解决办法 cv2.imread 路径中包含中文,改为英文 其他 这个问题解决了很久,都属于库的问题

  4. 所元素设为border-box

    /*全局设为CSS3盒模型 border-box*/ html { box-sizing: border-box; } *, *:before, *:after { box-sizing: inher ...

  5. JS基本数据类型——BigInt

    一.JS基本数据类型--BigInt BigInt是ES11引入的新的基本数据类型.BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值,以任意精度表示整数.使用 BigInt解决 ...

  6. RSA_zd网校登录

    网站 aHR0cHM6Ly91c2VyLndhbmd4aWFvLmNuL2xvZ2lu 点到密码登录,会返回验证码 输入错误的账号密码点登录抓包,可以看到密码是被加密的  initator点进去  简 ...

  7. Google分布式文件系统GFS论文学习

    GFS作为最著名的分布式文件系统,首先具备了大规模.可扩展.适配大文件.自动运维等高级特性.虽然是比较早期的分布式文件系统,但是它里面的设计思想还是值得现代分布式系统设计参考的,并且还有很多后期著名的 ...

  8. HBase详解(02) - HBase-2.0.5安装

    HBase详解(02) - HBase-2.0.5安装 HBase安装环境准备 Zookeeper安装 Zookeeper安装参考<Zookeeper详解(02) - zookeeper安装部署 ...

  9. 高并发解决方案orleans实践

    开具一张图,展开来聊天.有从单个服务.consul集群和orleans来展开高并发测试一个小小数据库并发实例. 首先介绍下场景,创建一个order,同时去product表里面减掉一个库存.很简单的业务 ...

  10. Java基础篇——集合框架

    集合--对象的容器 集合与数组相似,不同的是,集合的长度可变并且只能组合引用类型数据,如果要组合基本类型,则需要装箱成包装类 Collection体系集合 Collection父接口 Collecti ...