课外开发
未读一. Axios 是什么?Axios 是一个基于 promise 网络请求库,作用于 node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和 node.js 中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 文档:https://github.com/axios/axios 二. 特性 从浏览器创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 超时处理 查询参数序列化支持嵌套项处理 自动将请求体序列化为: JSON (application/json) Multipart / FormData (multipart/form-data) URL encoded form (application/x-www-form-urlencoded) 将 HTML Form 转换成 JSON 进行请求 自动转换 JSON 数据 获取浏览 ...
大学生涯
未读7. 其它 API7.1.【shallowRef 与 shallowReactive 】shallowRef 作用:创建一个响应式数据,但只对顶层属性进行响应式处理。 用法: 1let myVar = shallowRef(initialValue); 特点:只跟踪引用值的变化,不关心值内部的属性变化。 shallowReactive 作用:创建一个浅层响应式对象,只会使对象的最顶层属性变成响应式的,对象内部的嵌套属性则不会变成响应式的 用法: 1const myObj = shallowReactive({ ... }); 特点:对象的顶层属性是响应式的,但嵌套对象的属性不是。 总结 通过使用 shallowRef() 和 shallowReactive() 来绕开深度响应。浅层式 API 创建的状态只在其顶层是响应式的,对所有深层的对象不会做任何处理,避免了对每一个内部属性做响应式所带来的性能成本,这使得属性的访问变得更快,可提升性能。 7.2.【readonly 与 shallowReadonly】readonly 作用:用于创建一个对象的深只读 ...
大学生涯
未读8. Vue3 新组件8.1. 【Teleport】 什么是 Teleport?—— Teleport 是一种能够将我们的组件 html 结构移动到指定位置的技术。 1234567<teleport to="body"> <div class="modal" v-show="isShow"> <h2>我是一个弹窗</h2> <p>我是弹窗中的一些内容</p> <button @click="isShow = false">关闭弹窗</button> </div></teleport> 8.2. 【Suspense】 等待异步组件时渲染一些额外内容,让应用有更好的用户体验 使用步骤: 异步引入组件 使用 Suspense包裹组件,并配置好 default 与 fallback 12import { defineAsyncComponent, Susp ...
大学生涯
未读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 ...