大学生涯
未读6. 组件通信Vue3组件通信和 Vue2的区别: 移出事件总线,使用 mitt代替。 vuex换成了 pinia。 把 .sync优化到了 v-model里面了。 把 $listeners所有的东西,合并到 $attrs中了。 $children被砍掉了。 常见搭配形式: 6.1. 【props】概述:props是使用频率最高的一种通信方式,常用与 :父 ↔ 子。 若 父传子:属性值是非函数。 若 子传父:属性值是函数。 父组件: 1234567891011121314151617181920<template> <div class="father"> <h3>父组件,</h3> <h4>我的车:{{ car }}</h4> <h4>儿子给的玩具:{{ toy }}</h4> <Child :car="car" :getTo ...
大学生涯
未读5. pinia5.1【准备一个效果】 5.2【搭建 pinia 环境】第一步:npm install pinia 第二步:操作 src/main.ts 1234567891011121314import { createApp } from "vue";import App from "./App.vue";/* 引入createPinia,用于创建pinia */import { createPinia } from "pinia";/* 创建pinia */const pinia = createPinia();const app = createApp(App);/* 使用插件 */ {}app.use(pinia);app.mount("#app"); 此时开发者工具中已经有了 pinia选项 5.3【存储+读取数据】 Store是一个保存:状态、业务逻辑 的实体,每个组件都可以读取、写入它。 它有三个概念:state、getter ...
大学生涯
未读4. 路由4.1. 【对路由的理解】 4.2. 【基本切换效果】 Vue3中要使用 vue-router的最新版本,目前是 4版本。 路由配置文件代码如下: 12345678910111213141516171819import { createRouter, createWebHistory } from "vue-router";import Home from "@/pages/Home.vue";import News from "@/pages/News.vue";import About from "@/pages/About.vue";const router = createRouter({ history: createWebHistory(), routes: [ { path: "/home", component: Home, }, { path: & ...
大学生涯
未读Vue3 + TS + 组合式 API + setup 语法糖 核心: ref、reactive、cumputed、watch、生命周期 常用: hooks、自定义 ref、路由、pinia、mitt 面试: 组件通信、响应式相关 API 1. Vue3 简介 2020 年 9 月 18 日,Vue.js发布版 3.0版本,代号:One Piece(n 经历了:4800+次提交、40+个 RFC、600+次 PR、300+贡献者 官方发版地址:Release v3.0.0 One Piece · vuejs/core 截止 2023 年 10 月,最新的公开版本为:3.3.4 1.1. 【性能的提升】 打包大小减少 41%。 初次渲染快 55%, 更新渲染快 133%。 内存减少 54%。 1.2.【 源码的升级】 使用 Proxy代替 defineProperty实现响应式。 重写虚拟 DOM的实现和 Tree-Shaking。 1.3. 【拥抱 TypeScript】 Vue3可以更好的支持 TypeScript。 1.4. 【新的特性】 Composition ...
大学生涯
未读async 与 await1. async async 作为一个关键字放到声明函数前面,表示该函数为一个异步任务,不会阻塞后面函数的执行 async 函数里如果有异步过程会等待,但async 函数本身会马上返回,不会阻塞当前线程。可以简单认为 async 函数工作在主线程,同步执行,不会阻塞界面渲染;async 函数内部由 await 修饰的异步过程,工作在相应的协程上,会阻塞等待异步任务的完成再返回 async 函数返回类型为 Promise 对象async 函数会返回一个 promise,并且 Promise 对象的状态值是 resolved(成功的)如果没有在 async 函数中写 return,那么 Promise 对象 resolve 的值就是是 undefined如果写了 return,那么 return 的值就会作为成功的时候传入的值 这是和普通函数本质上不同的地方,也是使用时重点注意的地方: 1. return new Promise(),这个符合 async 函数本意 2. return data 这是同步函数的写法,特别注意这其实就相当于 Promise.reso ...
大学生涯
未读一. Promise1. 异步异步:则是将耗时很长的 A 交付的工作交给系统之后,就去继续做 B 交付的工作,等到系统完成了前面的工作之后,再通过回调或者事件,继续做 A 剩下的工作。AB 工作的完成顺序,和交付他们的时间顺序无关,所以叫“异步”。 2. 回调函数当一个函数作为参数传入另一个函数中,并且它不会立即执行,只有当满足一定条件后该函数才可以执行,这种函数就称为回调函数。我们熟悉的定时器和 Ajax 中就存在有回调函数. 12345<script> setTimeout(() => { console.log(`执行了回调函数`); }, 3000);</script> 这里的回调函数是() => {console.log( 执行了回调函数 )},在满足时间 3 秒后执行。 3. 异步函数123456<script> setTimeout(() => { console.log(`执行了回调函数`); }, 3000); console.log(`11 ...
大学生涯
未读1 let 与 const、块级作用域在 ES6 之前 JS 是没有块级作用域的,const 与 let 填补了这方面的空白,分别使用 let、const 声明变量和常量,const 与 let 都是块级作用域。使用 var 定义的变量为函数级作用域:使用 let 与 const 定义的变量为块级作用域 123456789{ var i = 0; var i = 1; let j = 0; const k = 1;}console.log("i:" + i); // 正常输出 i = 1;//console.log("j:" + j); // 报错,Uncaught ReferenceError: j is not defined//console.log("k:" + k); // 报错,Uncaught ReferenceError: K is not defined 2 函数参数默认值ES6 支持在定义函数的时候为其设置默认值:传值覆盖,空值默认格式:function 函数名称(参数名称 1 ...
大学生涯
未读透传 attribute“透传 attribute”指的是传递给一个组件,却没有被改组件声明为 props 或 emits 的 attribute 或者 v-on事件监听器。最常见的例子就是 class、style和 id。 当一个组件以单个元素为根作渲染时,透传的 attribute 会自动被添加到根元素上。 注意:: 必须是唯一根元素 禁用属性继承123export default { inheritAttrs: false,}; 举例123456789101112131415<script> export default { inheritAttrs: false }</script><template> <h3>透传属性</h3></template><style scoped>.attr-container { color: red;}</style> 生命周期每个组件在被创建时 ...
大学生涯
未读组件传递数据_props组件与组件之间不是完全独立的,而是有交集的,那就是组件与组件之间可以传递数据的。传递数据的解决方案就是 props。 App.vue1234567891011121314151617181920<script> import parent from './components/parent.vue'; export default { name: 'App', components: { parent, } }</script><template> <div id="app"> <parent /> </div></template><style></style> parent.vue12345678910111213141516171819<script>import child from ...
大学生涯
未读模板引用(获取 DOM 操作)虽然 Vue 的声明性渲染模型为你抽象了大部分对 DOM 的直接操作,但在某些情况下,我们仍然需要直接访问底层 DOM 元素。要实现这一点,我们可以使用特殊的 refattribute。 挂载结束后引用都会被暴露在 this.$refs之上。 1234567891011121314151617181920212223242526<script> /** * 内容改变:{{模板语法}} * 属性改变:v-bind * 事件改变:v-on */ export default { data() { return { content: "内容" } }, methods: { getElementHandle() { con ...