自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wujianrenn的博客

前端小白的进阶

  • 博客(126)
  • 资源 (3)
  • 收藏
  • 关注

原创 前端--性能优化【下篇】--框架优化与webpack优化

1. v-for添加key2. 路由懒加载3. 第三方插件按需引入4. 合理使用computed和watch5. v-for的同时避免使用v-if6. destory时销毁事件:比如addEventListener添加的事件、setTimeout、setInterval、bus.$on绑定的监听事件等7. 使用tree-shaking,只引入我们实际需要的代码,不是整个库8. 组件优化,可以使用`v-if`和`v-else`来减少不必要的DOM渲染9. CND优化

2023-10-24 16:28:47 495 3

原创 前端--性能优化【中篇】--html+css优化与图片优化

浏览器读取选择器,遵循的原则是从选择器的右边到左边读取。也就是说,假如css选择器很复杂的话,渲染在浏览器里的CSSOM树,会呈现很高的层级,不是扁平化的,导致在查找具体选择器的时候难度增加,树的深度很高,难以快速精准定位。

2023-10-21 18:08:26 442 5

原创 前端--性能优化【上篇】--网络优化与页面渲染优化

link标签的rel属性设置dns-prefetch,提前获取域名对应的IP地址。用户与服务器的物理距离对响应时间也有影响。内容分发网络(CDN)是一组分散在不同地理位置的 web 服务器,用来给用户更高效地发送内容。典型地,选择用来发送内容的服务器是基于网络距离的衡量标准的。用于页面渲染和任务处理的技术,旨在提高应用程序的响应性和用户体验。它将长时间运行的任务分解成小的时间片段,这些任务在多个帧之间分散执行,以确保主线程不会长时间被阻塞,从而保持页面的流畅性

2023-10-18 17:53:13 1091 5

原创 React的基础概念JSX

此处一定要写babel ,表示这里写的不是JS,而是jsx,并且需要babel进行转义*///1.创建虚拟DOMconstVDOM/* 此处一定不要写引号,因为不是字符串 *///2.渲染虚拟DOM到页面renderVDOM'test'

2023-06-25 20:14:13 676

原创 React-错误边界与组件通信方式概述

错误边界目前只在 Class Component 中实现了,没有在 hooks 中实现(因为Error Boundaries的实现借助了this.setState可以传递callback的特性,useState无法传入回调,所以无法完全对标);错误边界(Error boundary):用来捕获后代组件错误,渲染出备用页面。注意:只在生产环境(项目上线)起效。

2023-06-15 17:13:25 1572 1

原创 【JavaScript】45_间接修改css样式

除了直接修改样式外,也可以通过修改class属性来间接的修改样式。

2023-04-01 20:31:59 648 2

原创 【JavaScript】44_DOM编程:节点的复制,直接修改+读取css样式

使用 cloneNode() 方法对节点进行复制时,它会复制节点的所有特点包括各种属性这个方法默认只会复制当前节点,而不会复制节点的子节点可以传递一个true作为参数,这样该方法也会将元素的子节点一起复制在本案例中,像li是一个节点,里面的“孙悟空”是一个子节点,需要使用true来一块复制上

2023-03-30 13:15:04 524 1

原创 【JavaScript】43_DOM编程:DOM修改与demo

用于给一个节点添加子节点list.appendChild(li)可以向元素的任意位置添加元素1.要添加的位置 2.要添加的元素beforeend 标签的最后 afterbegin 标签的开始beforebegin 在元素的前边插入元素(兄弟元素) afterend 在元素的后边插入元素(兄弟元素)list.insertAdjacentElement(“afterend”, li)通过点击按钮,往页面中添加内容,修改内容,删除内容11、练习可以在表格中插入数据,删除数据容易被插入攻击的写法:区别于al

2023-03-28 14:42:29 286 1

原创 Vue3中其他的Composition API

/ let keyword = ref('hello') //使用Vue准备好的内置ref。shallowRef:只处理基本数据类型的响应式, 不进行对象的响应式处理。shallowReactive:只处理对象最外层属性的响应式(浅响应式)。作用:创建一个自定义的 ref,并对其依赖项跟踪和更新触发进行显式控制。//告诉Vue这个value值是需要被“追踪”的。//通过customRef去实现自定义。//使用程序员自定义的ref。//自定义一个myRef。//告诉Vue去更新界面。

2023-03-23 12:24:18 403 9

原创 Vue3中的响应式原理与setup

在使用vue2时,我们需要注意,在赋值后再访问 this.someObject,此值已经是原来的 newObject 的一个响应式代理。通过Proxy(代理): 拦截对象中任意属性的变化, 包括:属性值的读写、属性的添加、属性的删除等。数组类型:通过重写更新数组的一系列方法来实现拦截。(对数组的变更方法进行了包裹)。通过Reflect(反射): 对源对象的属性进行操作。对属性的读取、修改进行拦截(数据劫持)。setup执行的时机。

2023-03-21 16:02:05 462

原创 vue3常用 Composition API

是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。当同时使用 SFC 与组合式 API 时该语法是默认推荐。更好的运行时性能 (其模板会被编译成同一作用域内的渲染函数,避免了渲染上下文代理对象)。更好的 IDE 类型推导性能 (减少了语言服务器从代码中抽取类型的工作)。能够使用纯 TypeScript 声明 props 和自定义事件。setuo,使用了更少的样板内容,更简洁的代码。

2023-03-19 11:18:27 396

原创 【JavaScript】42_DOM:事件与文档的加载

事件(event)事件就是用户和页面之间发生的交互行为比如:点击按钮、鼠标移动、双击按钮、敲击键盘、松开按键…可以通过为事件绑定响应函数(回调函数),来完成和用户之间的交互。

2023-03-18 10:12:05 359

原创 【JavaScript】41_DOM编程:属性节点

属性节点(Attr)在DOM也是一个对象,通常不需要获取对象而是直接通过元素即可完成对其的各种操作如何操作属性节点?

2023-03-17 10:32:26 300

原创 【JavaScript】40_DOM编程:文本节点

在DOM中,网页中所有的文本内容都是文本节点对象, 可以通过元素来获取其中的文本节点对象,但是我们通常不会这么做我们可以直接通过元素去修改其中的文本 修改文本的三个属性。

2023-03-16 12:07:26 255

原创 Vue + Vite 项目搭建介绍

官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create不过目前的话,官方建议使用vite去创建工程,cli处于维护状态。

2023-03-15 19:01:16 430

原创 【JavaScript】39_DOM编程:div的原型链

element.previousElementSibling 获取当前元素的前一个兄弟元素。element.nextElementSibling 获取当前元素的下一个兄弟元素。element.childNodes 获取当前元素的子节点(会包含空白的子节点)element.firstElementChild 获取当前元素的第一个子元素。element.lastElementChild 获取当前元素的最后一个子元素。element.children 获取当前元素的子元素。通过元素节点对象获取其他节点的方法。

2023-03-15 17:42:10 239

原创 【JavaScript】38_DOM编程初步

要使用DOM来操作网页,我们需要浏览器至少得先给我一个对象才能去完成各种操作所以浏览器已经为我们提供了一个document对象,它是一个全局变量可以直接使用document代表的是整个的网页。

2023-03-14 10:19:00 73

原创 【JavaScript】37_字符串

## split()- 可以根据正则表达式来对一个字符串进行拆分## search()- 可以去搜索符合正则表达式的内容第一次在字符串中出现的位置## replace()- 根据正则表达式替换字符串中的指定内容## match()- 根据正则表达式去匹配字符串中符合要求的内容## matchAll()- 根据正则表达式去匹配字符串中符合要求的内容(必须设置g 全局匹配)- 它返回的是一个迭代器

2023-03-13 17:09:53 56

原创 【JavaScript】36_正则表达式

或者将字符串中符合规则的内容提取出来所以要使用正则表达式,需要先创建正则表达式的对象new RegExp() 可以接收两个参数(字符串) 1.正则表达式 2.匹配模式letnewRegExp'a''i'//通过一个构造函数来创建一个正则表达式的对象//使用字面量来创建正则表达式:/正则/匹配模式ai\wnewRegExp'\w'lognewRegExp'a'// /a/表示,检查一个字符串中是否有a// 通过正则表达式检查一个字符串是否符合规则let"a"lettest。

2023-03-11 10:48:28 274

原创 【JavaScript】35_包装类与垃圾回收机制

在JS中,除了直接创建原始值外,也可以创建原始值的对象通过 new String() 可以创建String类型的对象通过 new Number() 可以创建Number类型的对象通过 new Boolean() 可以创建Boolean类型的对象。

2023-02-12 09:48:31 415

原创 【JavaScript】34_Date对象 ,日期的格式化

Date在JS中所有的和时间相关的数据都由Date对象来表示对象的方法:getFullYear() 获取4位年份getMonth() 返当前日期的月份(0-11)getDate() 返回当前是几日getDay() 返回当前日期是周几(0-6) 0表示周日。

2023-02-11 12:01:01 630

原创 【JavaScript】33_对象的序列化----JSON

对象的序列化。- JS中的对象使用时都是存在于计算机的内存中的 - 序列化指将对象转换为一个可以存储的格式 **在JS中对象的序列化通常是一个对象转换为字符串(JSON字符串)** - 序列化的用途(对象转换为字符串有什么用): - 对象转换为字符串后,可以将字符串在不同的语言之间进行传递 甚至人可以直接对字符串进行读写操作,使得JS对象可以不同的语言之间传递 - 用途: 1. 作为数据交换的格式 2. 用来编写配置文字

2023-01-22 10:09:23 1741 1

原创 【JavaScript】32_解构对象与对象的解构

数组中可以存储任意类型的数据,也可以存数组,如果一个数组中的元素还是数组,则这个数组我们就称为是二维数组解构对象,方便两数交换数值;可以反向赋值对象,数组可以在解构的同时,进行声明const"孙悟空""猪八戒""沙和尚"let;;//解构赋值let'唐僧''白骨精''蜘蛛精''玉兔精'//声明同时解构//;//;;43123//直接这样的话,会显得g未定义loglet...4567// 解构数组时,可以使用...来设置多余的元素functionfnreturn。

2023-01-11 20:41:23 479

原创 【JavaScript】31_bind函数

也无法通过call apply 和 bind修改它的this。箭头函数没有自身的this,它的this由外层作用域决定,bind() 是函数的方法,可以用来创建一个新的函数。//此处的this代指下面的obj。箭头函数中没有arguments。"fn执行了~~~~"

2023-01-01 18:52:01 592 2

原创 【JavaScript】30_可变参数

arguments是函数中又一个隐含参数arguments是一个类数组对象(伪数组)和数组相似,,也可以通过for循环变量,但是它不是一个数组对象,不能调用数组的方法arguments用来存储函数的实参,无论用户是否定义形参,实参都会存储到arguments对象中可以通过该对象直接访问实参

2022-12-31 10:12:26 906 1

原创 【JavaScript】29_数组的方法

sort用来对数组进行排序(会对改变原数组)sort默认会将数组升序排列注意:sort默认会按照Unicode编码进行排序,所以如果直接通过sort对数字进行排序可能会得到一个不正确的结果参数:可以传递一个回调函数作为参数,通过回调函数来指定排序规则(a, b) => a - b 升序排列(a, b) => b - a 降序排列。

2022-12-30 21:04:31 713

原创 【JavaScript】28_递归

递归调用自身的函数称为递归函数递归的作用和循环是基本一直递归的核心思想就是将一个大的问题拆分为一个一个小的问题,小的问题解决了,大的问题也就解决了编写递归函数,

2022-12-30 09:49:37 474

原创 【JavaScript】27_函数闭包

创建一个函数,第一次调用时打印1,第二次调用打印2,以此类推可以利用函数,来隐藏不希望被外部访问到的变量。

2022-12-29 19:04:26 520

原创 【JavaScript】26_高阶函数(回调函数)

目前我们的函数只能过滤出数组中age属性小于18的对象,我们希望过滤更加灵活:比如:过滤数组中age大于18的对象age大于60的对象age大于n的对象过滤数组中name为xxx的对象过滤数组中的偶数…如果将函数作为参数传递,那么我们就称这个函数为(callback)

2022-12-29 10:12:22 328 1

原创 【JavaScript】25_冒泡排序及优化 与 选择排序

/使用优化后的冒泡排序-----内层循环条件变为length-1-j;第一次排序:1, 3, 2, 8, 0, 5, 7, 6, 4, 9。第二次排序:1, 2, 3, 0, 5, 7, 6, 4, 8, 9。第三次排序:1, 2, 0, 3, 5, 6, 4, 7, 8, 9。倒数第二次 0, 1, 2, 3, 4, 5, 6, 7, 8, 9。// arr[i] 前边的元素 arr[i+1] 后边元素。// 大数在前,小数在后,需要交换两个元素的位置。// 将arr[i+1]的值赋给arr[i]

2022-12-28 21:49:57 332

原创 【JavaScript】24_数组去重

改变原数组

2022-12-28 10:03:31 370

原创 【JavaScript】23_浅拷贝和深拷贝 + 对象的复制 + 数组的常用方法

/ result = arr.splice(1,1,'牛魔王'`,'铁扇公主','红孩儿')// result = arr.splice(1,0,'牛魔王','铁扇公主','红孩儿')// const arr3 = ['唐僧',...arr,'白骨精']Object.assign(目标对象, 被复制的对象)将被复制对象中的属性复制到目标对象里,并将目标对象返回。也可以使用展开运算符对对象进行复制。可以删除、插入、替换数组中的元素。//专门用来深拷贝的方法。//返回被删除的元素名字。

2022-12-27 22:10:18 535

原创 【JavaScript】22_数组的方法,对象的复制与数组的复制

​ 当调用slice时,会产生一个新的数组对象,从而完成对数组的复制。//4,起始位置从位置3开始的(下标为2),所以最后找到的是下标为4的。//相当于是合并了arr和arr2两个数组,顺便添加了两个值。// const arr2 = arr // 不是复制。//2,倒着找的,最后一次出现的位置为下标为2的地方。//到倒数第一个为止,所以只能取到倒数第二个沙和尚那。//负数是从-1开始的,就是倒数第二个。//完全连接在一起了,没有逗号啥的。// arr2[0] = "唐僧"找到了则返回元素的索引,

2022-12-27 10:03:17 691

原创 【JavaScript】21_数组初步

数组(Array)数组也是一种复合数据类型,在数组可以存储多个不同类型的数据数组中存储的是有序的数据,数组中的每个数据都有一个唯一的索引可以通过索引来操作获取数据数组中存储的数据叫做元素索引(index)是一组大于0的整数创建数组通过Array()来创建数组,也可以通过[]来创建数组向数组中添加元素语法:数组[索引] = 元素读取数组中的元素语法:数组[索引]- 如果读取了一个不存在的元素,不好报错而是返回undefinedlength

2022-12-26 22:16:16 749

原创 【JavaScript】20_旧类与new运算符

面向对象本质就是,编写代码时所有的操作都是通过对象来进行的。面向对象的编程的步骤:1. 找对象2. 搞对象学习对象:1. 明确这个对象代表什么,有什么用2. 如何获取到这个对象3. 如何使用这个对象(对象中的属性和方法)对象的分类:内建对象- 由ES标准所定义的对象- 比如 Object Function String Number …​ 宿主对象​ - 由浏览器提供的对象​ 自定义对象。

2022-12-26 13:02:21 711

原创 【JavaScript】19_对象的结构,原型对象与修改原型

对象中存储属性的区域实际有两个:对象自身原型对象(prototype)

2022-12-25 17:54:54 836

原创 【JavaScript】18_面向对象的三大特性

面向对象的特点:封装、继承和多态1.封装对象就是一个用来存储不同属性的容器对象不仅存储属性,还要负责数据的安全直接添加到对象中的属性,并不安全,因为它们可以被任意的修改如何确保数据的安全:1.私有化数据封装主要用来保证数据的安全实现封装的方式:1.2.通过getter和setter方法来操作属性get 属性名(){return this.#属性}​ set 属性名(参数){​ this.#属性 = 参数​ }

2022-12-25 10:26:51 1256

原创 【JavaScript】17_面向对象中的方法和构造函数

classPerson{="孙悟空"// } // 添加方法的一种方式sayHello(){.log('大家好,我是'+this.)}// 添加方法(实例方法) 实例方法中this就是当前实例statictest(){.log("我是静态方法",this)}// 静态方法(类方法) 通过类来调用 静态方法中this指向的是当前类}const=newPerson().test().sayHello()

2022-12-24 18:51:38 920

原创 【JavaScript】16_面向对象,类与属性

面向对象编程(OOP)一个事物通常由两部分组成:数据和功能一个对象由两部分组成:属性和方法事物的数据到了对象中,体现为属性事物的功能到了对象中,体现为方法

2022-12-24 09:37:19 1004

原创 【JavaScript】15_debug,立即执行函数 与 严格模式

//debugger // 在代码中打了一个断点.log()// 2var=1.log()// 1functiona(){alert(2)}.log()// 1var=3.log()// 3vara=function(){alert(4)}.log()// 4var.log()// 4

2022-12-23 12:00:07 906

第四章 Matlab函数.ppt

适合初学者,入门必看

2021-12-11

第三章 Matlab流程控制.ppt

MATLAB初学者入门

2021-12-11

matlab基础知识,初学者教程 .docx

MATLAB基础入门,初学者必看,入门知识

2021-12-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除