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 |
| 新的内置组件 |
| Fragment |
| Teleport |
| Suspense |
| 其他改变 |
| |
| 新的生命周期钩子 |
| data 选项应始终被声明为一个函数 |
| 移除keyCode支持作为 v-on 的修饰符 |
| |
| |
| |
| |
| vue2 :配置项API |
| new Vue({ |
| el:'#app', |
| data:{} |
| }) |
| |
| vue3: 组合式API |
| let name='lqz' |
| let add=()=>{ |
| } |
2 vue3 创建项目
2.1 使用vue-cli
2.2 vite
| |
| https://cn.vuejs.org/guide/scaling-up/tooling.html |
| |
| |
| |
| - 安装 :npm init vue@latest |
| -按需选择,vueRouter |
| - cd到项目中执行cnpm install 把依赖装好 |
| -运行:npm run dev |
| |
| |
| |
| |
| -vueRouter:跟之前一样 |
| -Pinia:用来替换Vuex的,新一代的状态管理器 |
| -链式调用(抽时间) |
| |
| |
| |
| |
| -创建项目快----》不安装第三方依赖 |
| -执行项目,热更新----》按需编译 |
3 setup函数
| |
| |
| |
| |
| -new Vew()---->是Vue的实例,里面有$store,$refs... |
| -createApp(App)--->是个对象,对象里有东西,没有$store,$refs...,以后有用,都是导入使用 |
| |
| |
| |
| |
| |
| |
| |
4 ref和reactive
| |
| -以后定义变量,如果想有响应式就用 ref包裹起来,再修改变量,需要用 变量名.value 修改 |
| |
| |
| -在前在data中定义的变量 |
| -在setup中定义的变量 |
| |
| -总结: |
| 在setup中定义的变量和函数,在之前配置项api中可以直接使用this.变量,函数调用即可 |
| 但是在原来配置项中定义的变量,函数,在setup中无法使用 |
| |
| |
| |
| |
| ref通常用来包裹,数字,字符串类型,以后使用 xx.value |
| reactive用来包裹数组和对象类型 以后使用 直接用即可 |
| |
| |
| ref定义的数据:操作数据需要.value,读取数据时模板中直接读取不需要.value。 |
| reactive定义的数据:操作数据与读取数据:均不需要.value |
5 计算属性和监听属性
5.1 计算属性
| |
| computed:{ |
| fullName(){ |
| return this.firstName+this.lastName |
| } |
| }, |
| |
| |
| |
| let person = reactive({ |
| firstName: '', |
| lastName: '', |
| }) |
| let fullName = computed(() => { |
| return person.firstName + person.lastName |
| }) |
| |
| |
| |
| let fullName = computed({ |
| get() { |
| return person.firstName + person.lastName |
| }, |
| set(value) { |
| person.firstName = value.slice(0, 1) |
| person.lastName = value.slice(1) |
| }, |
| }) |
| |
5.2 监听属性
| |
| let name = ref('lqz') |
| watch(name, (newName, oldName) => { |
| console.log('name变了') |
| console.log('老的', oldName) |
| console.log('新的', newName) |
| }) |
| |
| |
| watchEffect(() => { |
| console.log(age.value) |
| }) |
6 生命周期
| |
| -vue2 和 vue3比较 |
| beforeCreate===>beforeCreate |
| created=======>created |
| beforeMount ===>beforeMount |
| mounted=======>mounted |
| beforeUpdate===>beforeUpdate |
| updated =======>updated |
| beforeDestroy ==>beforeUnmount |
| destroyed =====>unmounted |
| |
| |
| |
| |
| beforeCreate===>setup() |
| created=======>setup() |
| beforeMount ===>onBeforeMount |
| mounted=======>onMounted |
| beforeUpdate===>onBeforeUpdate |
| updated =======>onUpdated |
| beforeUnmount ==>onBeforeUnmount |
| unmounted =====>onUnmounted |
| |
| |
| |
| |
| let show = ref(false) |
| axios.get().then(res=>{ |
| show.value=res.data.show |
| }) |
7 toRefs
| |
| setup() { |
| let data = reactive({ |
| name: 'lqz', |
| age: 19, |
| gender: '男' |
| }) |
| return {...toRefs(data)} |
| } |
| |
8 script setup的作用和lang=ts
| <script setup> |
| import {ref} from 'vue' |
| let name = ref('lqz') |
| let handleClick = () => { |
| alert('美女') |
| } |
| </script> |
| |
| |
| |
| |
| 里面代码使用ts写,而ts完全兼容js,继续写js代码没问题 |
8 vue后台管理模板
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现