当前位置: 首页 > news >正文

vue前置知识-end

Vue3前置知识

1.常量与变量

  • let 声明变量

  • const 声明常量

const声明的对象和数组可以添加或删除元素,在JS中对象和数组属于引用类型,对其增加删除并不会改变其内存地址,而是改变内存地址当中具体的值

2.模板字符串

模板字符串使用反引号声明

``

特点:

  • 可以任意换行

  • 可嵌入变量或表达式;嵌入的语法为 ${}

3.对象

3.1 对象的取值方式

const obj = {name: 'vue3',age: 9
}
console.log(obj.name)
console.log(obj.age)
// 等同于
console.log(obj['name'])
console.log(obj['age'])

在使用变量来访问对象中的属性时,只能使用[]方式

3.2 对象属性的简写

let min = 1
let max = 99const obj = {min,        // min: minmax,        // max: maxfn() {}     // fn: function() {}
}

3.3 解构赋值

数组的解构

const arr = [11, 22, 33]
// eg1: 把 arr 中的3个值分别赋值给变量 a, b, c
// 以前的写法
let a = arr[0]
let b = arr[1]
let c = arr[2]
// 现在的写法
let [a, b, c] = arr
// eg2: 把 arr 中的后两个值赋值给变量 b,c
let [,b,c] = arr
// eg3: 把 arr 中的第1个值赋值给变量 a, 剩余的全部给到变量 rest
let [a, ...rest] = arr

对象的解构

const obj = {name: '孙悟空',age: 9,address: '花果山'
} 
// eg1: 把 obj 中的3个属性值分别赋值给变量 name, age, address
// 以前的写法
const name = obj.name
const age = obj.age
const address = obj.address
// 现在的写法
const { name, age, address } = obj
// eg2: 把 obj 的 age, address 属性值赋值给 age, address
const { age, address } = obj
// eg3: 把 obj 的 name 属性值赋值给变量 name, 剩余的全部给到变量 rest
const { name, ...rest } = obj
// eg4: 把 obj 的 name 属性值赋值给变量 uname
const { name: uname } = obj

4.箭头函数

() => {}

特性:

  • 参数只有一个时,小括号可以省略;函数体只有一句话时,可以省略大括号(并且自带return

  • 当函数体简写时返回一个对象,为了避免歧义需要加上一对小括号

5.数组的重要方法

methodfunctionparameterreturn
push(element0 , element1 , …)尾插0 - n个元素新的长度
pop()尾删null删除元素的值
unshift(element0 , element1 , …)头插0 - n个元素新的长度
shift()头删null删除元素的值
splice(startPos , deleteCount , item1 , item2, …)任意位置插入删除startPos:开始下标
deleteCount(可选):删除元素的数量
item1…(可选):加入到数组中的元素
删除的元素数组
includes(searchElement , fromIndex)包含searchElement:需要查找的值
fromIndex(可选):开始搜索的索引,默认从0开始
布尔值
forEach(callback)遍历callback:为数组中每个元素执行的函数,这个函数包括三个参数(item,index, array)undefined
filter(callback)过滤callback:为数组中每个元素执行的函数,这个函数包括三个参数(item,index, array)回调函数中为true结果的元素会保留到新数组中
map(callback)映射callback:为数组中每个元素执行的函数,这个函数包括三个参数(item,index, array)一个新数组,每个元素都是回调函数的返回值
every(callback)检测每一个是否都满足条件callback:这个函数包括三个参数(item,index, array),当前回调函数返回值为false则该函数不在继续执行布尔值
reduce(callback , initialValue)汇总callback:为数组中每个元素执行的函数,这个函数包括四个参数(prev, item,index,array),prev为上一次函数返回值
initialValue:在第一次调用时,如果指定了 initialValue 则为指定的值,否则为 array[0] 的值。
遍历整个数组后的值

forEach和map的区别:forEach会修改原始数组,map则会返回一个新的数组。

6.对象的重要方法

Object.keys(): 将对象中的所有属性装到数组中返回,因为操作数组的方法有很多,这样更加灵活

const obj = {id: 10001,name: '孙悟空',age: 9,address: '花果山'
}
// 遍历对象
Object.keys(obj).forEach(key => { console.log(obj[key]) })

7.扩展运算符

7.1 可以复制数组或者对象

const arr1 = [1, 2, 3]
// 赋值
const arr2 = arr1
arr2.push(44)
console.log(arr1)// 受影响了
// 正确的做法, 把 arr1 复制⼀份给到 arr2
const arr2 = [...arr1]

7.2 合并数组或对象

const arr1 = [1,2,3]
const arr2 = [4,5,6]
// 把 arr1 和 arr2 合并起来给到 arr
const arr = [...arr1, ...arr2]

8.序列化和反序列化

序列化JSON.stringify(对象)

反序列化JSON.parse(json格式的字符串)

9.Web存储

  • sessionStorage该存储区域在⻚⾯会话期间可⽤(即只要浏览器处于打开状态,包括⻚⾯重新加载和恢复)

  • localStorage即使浏览器关闭并重新打开也仍然存在;存储的数据没有过期⽇期,只能通过 JavaScript、清除浏览器缓存或本地存储的数据来清除。

// 存
localStorage.setItem(key:string, value:string)
// eg:
localStorage.setItem('uname', 'Jack')// 取
localStorage.getItem(key:string)
// eg:
const uname = localStorage.getItem('uname')// 删
localStorage.removeItem(key:string)
localStorage.removeItem('uname')

存对象和数组,需要序列化;取对象和数组,需要反序列化。

10.Promise + Aysnc/Await

  1. 在执行异步任务时,有时候有些需求是执行完一个异步任务后执行下一个异步任务,这样会产生大量的回调函数,使代码很不优雅,而Promise是为了消除回调地狱而诞生的。

  2. Promise是一个类,用来包装异步操作,根据异步操作的结果,是成功还是失败,进而决定Promise是成功还是失败;Promise支持链式调用。

  3. Promise的3种状态:PendingFulfilledRejected,分别是进行中、成功、失败。

  4. Promise的状态只能由 Pending -> FulfilledPending -> Rejected,状态一旦确定就不可改变。

10.1 基本使用

/*1.Promise需要传递一个函数,函数有两个参数,都是函数2.当异步代码成功时调用resolve,异步代码失败时调用reject3.Promise的实例拥有then方法,也有两个回调函数为参数,第一个回调是成功的回调函数,第二个回调是失败的回调函数
*/
const p = new Promose((resolve, reject) => {// 这⾥编写异步代码:⽐如定时器、ajax请求等setTimeout(() => {// 2秒后, Promise标记为成功resolve('ok')}, 2000)
})p.then((msg) => {// 成功回调console.log(msg)// ok
}, (err) => {// 失败回调console.log(err)// error
})

10.2 使用Async和Await优化Promise

// 封装延迟函数
function delay(duration, n) {return new Promise((resolve , reject) => {setTimeout(() => {resolve(n)} , duration)})
}
// 语法
async function log() {// 1.在Promise实例前添加 await 关键字, 那么await的返回值就是当前Promise的resolve参数// 2.await所在的函数必须被async修饰// 3.async函数内, 当前await执⾏结束了,代码才会继续往后执⾏(同步的⽅式执⾏)const n1 = await delay(2000, 1)console.log(n1)
}log()

11.模块化

模块化是指将一个复杂程序划分为一些列独立,和互操作的模块的过程。每个模块负责特定的功能或任务,通过定义好的接口与其他模块进行通信。一个模块本质就是一个js文件。

11.1 默认导入导出

// 文件路径:utils/min.js
// 定义并默认导出求最⼩值函数
export default function min(m, n) {return m > n ? n : m
}// 文件路径:src/index.js
// 默认导入
import min from './utils/min.js'
console.log(min(12,11)

默认导出 export default 在一个模块种最多出现1次。

11.2 按需导入导出

// 文件路径:utils/math.js
// 定义求和函数并按需导出
export function add(x, y) {return x + y
} 
// 定义作差函数并按需导出
export function sub(x, y) {return x - y
}//  文件路径:src/index.js
import { add , sub } from './utils/math.js'
console.log(add(33 , 18))
console.log(sub(33 , 18))

按需导入 export 可以出现多次。

http://www.dtcms.com/a/270174.html

相关文章:

  • 呼叫系统对接智能体能解决哪些问题?
  • exFAT文件系统mp4素材文件变0字节的恢复方法
  • Spring中过滤器和拦截器的区别及具体实现
  • ROS平台上使用C++实现A*算法
  • 3423. 循环数组中相邻元素的最大差值 — day97
  • MySQL 8.0 OCP 1Z0-908 题目解析(23)
  • 服务端渲染
  • VMware克隆虚拟机,模板机已提前设置了固定IP,克隆机需要修改的事项
  • Java项目:基于SSM框架实现的旅游协会管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • Web前端开发: :where(伪类函数选择器)
  • 软件设计与重构
  • docker部署单机gitlab
  • Pytorch实战——完整的模型训练套路2
  • GitOps实践指南:GitLab CI/CD + ArgoCD 实现 Kubernetes 自动化部署
  • 【AI大模型】深度学习正则化技术:Batch Normalization (BatchNorm) 详解
  • 【GPT深度研究】科研SaaS项目可行性分析报告
  • 【学习笔记】网络设备(华为交换机)基础知识 24 —— 以太网子接口基础知识
  • 【入门级-C++程序设计:3、程序基本语句-多层循环语句】
  • 数据推荐|标贝科技大规模高质量数据集
  • 25.安卓逆向2-frida hook技术-拦截弹框事件(拦截强制更新弹框和解决jadx加载dex文件不全问题)
  • 从0到1搭建ELK日志收集平台
  • 扣子Coze飞书多维表插件参数获取流程
  • 如何利用机器学习(ML)检测异常登录行为
  • 深深浅浅地理解 Python 中的 `Barrier` 对象
  • emscripten编译cocos2dx项目输入框支持中文
  • MySQL 全库表记录统计与空间估算教程
  • 猿人学js逆向比赛第一届第十五题
  • SpringAI学习笔记-MCP服务器简单示例
  • 软考(软件设计师)数据库原理-SQL
  • HTML+JS+CSS制作一个数独游戏