自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 【Vue】响应式原理以及数据代理

目录数据劫持(代理)Vue监测数据变化原理及步骤:一、监测对象中的数据data对象加工成_data对象,并存入Vue实例添加reactive getter和reactive setter:数据变化监测效果注意:二、监测数组中的数据在Vue修改数组中的某个元素需要用到以下方法:数据劫持(代理)数据劫持是实现数据代理的一种技术。Vue2.x中使用的是Object.defineProperty() ,因此我们有必要学习下这个函数的作用。在MDN中有如下描述:

2022-03-22 15:33:34 1626

原创 【Vue】组件化编程

组件的基本认识(非单文件组件):使用组件的三大步骤:一、定义组件(创建组件)二、注册组件1.局部注册:2.全局注册:三、使用组件(写组件标签)关于组件名:组件的嵌套:VueComponent构造函数关于this指向:Vue与VueComponent的内置关系​单文件组件:基本结构:

2022-03-21 17:29:04 1150

原创 【JS】数组基本操作

创建增删查遍历排序颠倒顺序合并数组转字符串类数组转换为数组的方法数组拷贝filter()方法map()方法ES6的set数组去重方法

2022-03-21 09:58:49 1395

原创 【React】路由(详解)

单页应用程序 SPA:路由:前端路由:后端路由:路由的基本使用使用步骤常用组件说明BrowserRouter和HashRouter的区别路由的执行过程默认路由精确匹配Switch的使用重定向路由嵌套路由向路由组件传递参数1.params参数2.search参数3.state参数编程式路由导航withRouter

2022-03-18 12:36:18 6033

原创 【React】生命周期(最新)

目录各个阶段生命周期函数constructor()static getDerivedStateFromProps(nextProps, state)render()componentDidMount()shouldComponentUpdate(nextProps, nextState)getSnapshotBeforeUpdate(prevProps, prevState)componentDidUpdate(prevProps, prevState, snapshot..

2022-03-17 15:23:59 1814

原创 【React】组件间四种通信方式

在 React 中,父子组件的通信是常见的问题,除了使用状态管理工具(redux)以外,也可以实现父子组件的相互通信。在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况:父组件向子组件通信:使用 props子组件向父组件通信:使用 props 回调跨级组件间通信:使用 context 对象非嵌套组件间通信:使用事件订阅

2022-03-11 17:37:28 1010 1

原创 【React】三大属性之state、props、ref

目录1.state1、状态类型为不可变类型2、状态类型为数组3、状态的类型是普通对象2.propsprops属性特点父组件给子组件传递数据:3.RefsReact.createRef()1.stateReact把每一个有状态的组件都看成是一个状态机,组件内部通过state来维护组件状态的变化。在事件中触发setState()来修改state数据,state改变后会重新进行render()在需要对用户输入、服务器请求或者时间变化等做出响应时,使用stat

2022-03-11 16:43:51 2202

原创 【React】之受控组件和非受控组件

React中的组件根据是否受React控制可分为受控的和非受控的。一、受控组件表单元素依赖于状态,表单元素需要默认值实时映射到状态的时候,就是受控组件,这个和双向绑定相似. 受控组件,表单元素的修改会实时映射到状态值上,此时就可以对输入的内容进行校验. 受控组件只有继承React.Component才会有状态. 受控组件必须要在表单上使用onChange事件来绑定对应的事件.import React, { Component } from 'react'export default cl

2022-03-11 15:28:44 5053

原创 【React】中渲染列表、添加点击事件

渲染列表例如有如下数组:['11','22','33']在react中可以用数组的map方法:import React, { Component } from 'react'export default class App extends Component { constructor(props){ super(props) this.state = { list: ['11','22','33'], }

2022-03-10 23:49:58 2217

原创 mvc和mvvm的区别以及耦合度分类

一、MVCModel:模型层,是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View:视图层,用户界面渲染逻辑,通常视图是依据模型数据创建的。Controller:控制器,数据模型和视图之间通信的桥梁,通常控制器负责从事图读取数据,控制用户输入,并向模型发送数据。MVC的思想:Controller负责将Model的数据用View显示出来,换句话说就是在Controller里面把Model的数据赋值给View。MVC的特点:实现关注点分离,即应用程

2022-03-02 21:20:23 509 1

原创 【Node.js】之Express五种类型中间件

Express是一个自身功能极简,完全是路由和中间件构成一个web开发框架:从本质上来说,一个Express应用就是在调用各种中间件。应用程序级中间件路由器级中间件错误处理中间件内置中间件第三方中间件

2022-02-28 22:15:02 634

原创 【Node.js】中的Buffer

Node.js Buffer(缓冲区)语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区。...

2022-02-25 23:59:50 1277

原创 【Node.js】中req.params,req.query,req.body

GET请求的参数在URL中,在原生Node中,需要使用url模块来识别参数字符串。在Express中,不需要使用url模块了。可以直接使用req.query对象。POST请求的参数解析必须使用body-parser模块(此中间件已经被express集成,无需调用安装body-parser,可以直接采用express.json() express.urlencoded()实现相同功能。)使用后,将可以用req.body得到参数。req.params,req.query是用在get请求当中1.

2022-02-24 21:02:33 2092

原创 【Node.js】中的 util.promisify() 方法

Node.js 内置的util模块有一个promisify(),该方法将基于回调的函数转换为基于 Promise 的函数。这使您可以将 Promise 链和async/await与基于回调的 API 结合使用。例如,Node.js 的 fs 模块在读取文件时,需要使用回调:const fs = require('fs')fs.readFile('./package.json', function callback(err, buf) { const obj = JSON.par...

2022-02-23 20:43:46 910

原创 【Node.js】中的fs模块

fs模块的引用fs模块必须在node.js安装之后才能使用,所以首先必须安装node.js。在js文件中导入文件系统模块const fs = require('fs');对文件的操作1.fs.read()读取文件数据fs.read(fd, buffer, offset, length, position, callback)从文件描述符fd中读取文件数据。 buffer是一个缓冲区,读取的数据将会写入到这里。 offset是开始向缓冲区buffer写入...

2022-02-23 20:23:18 1102

原创 【JS】自执行函数

目录立即调用的函数表达式一、函数的声明与执行二、 ()的问题三、自执行函数表达式四、自执行函数的应用立即调用的函数表达式在JavaScript中,会有自执行匿名函数:(function () {/*code*/} ) (),Self-executing anonymous function。一、函数的声明与执行函数声明与执行: // 声明函数fun0 function fun0(){ console.log("fun0"); .

2022-01-19 14:01:53 10982 1

原创 【JS】执行机制解析,设置定时器、取消定时器

JavaScript 执行机制浏览器( JavaScript 引擎)执行 JavaScript 的机制是基于事件循环的。由于 JavaScript 是单线程,同一时间只能执行一个任务。为了避免某些长时间任务造成无意义等待,JavaScript 引入了异步概念。同步任务直接在主线程队列中顺序执行,而异步任务会进入另一个任务队列,不会阻塞主线程。等到主线程队列空了(执行完了)的时候,就会去异步队列查询是否有可执行的异步任务了(异步任务通常进入异步队列之后还要等一些条件才能执行,如 ajax 请求、文件读

2022-01-16 21:42:49 4065

原创 【JS】事件流、事件冒泡、事件捕获、阻止冒泡、事件委托

目录事件:什么是事件流事件冒泡事件捕获DOM事件处理DOM0DOM2一个DOM元素同时绑定冒泡捕获,执行顺序:阻止冒泡阻止冒泡方法封装Event事件对象的使用事件委托什么是事件委托实现事件委托事件委托的优点:事件:JavaScript和HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口发生的一些特定的交互瞬间。可以使用监听器(或事件处理程序)来预定事件,以便事件发生时执行相应的代码。通俗的说,这种模型其实就是一个观察者模式。..

2022-01-15 20:46:00 948

原创 【JS】Dom节点操作常用方法

目录1.访问/获取节点1.1 通过顶层document节点获取:1.2 通过父节点获取:1.3 通过子节点获取:1.4 通过兄弟节点获取:2.创建节点/属性3.添加节点4.复制节点5.删除节点6.添加文本1.访问/获取节点1.1 通过顶层document节点获取:document.getElementById(id);      //返回对拥有指定id的第一个对象 document.getEle...

2022-01-14 22:16:15 1610

原创 【JS】设置、获取、删除标签属性以及H5自定义属性

使用setAttribute()('属性名', '属性值')方法可以添加、修改、删除属性。使用getAttribute(‘属性名')方法获取标签的属性使用removeAttribute('属性名')方法删除标签的属性自定义属性的目的:是为了保存和使用数据,有些数据可以保存到页面中而不用保存到数据库中自定义属性获取是通过 getAttribute(‘属性’) 方法获取但是有些自定义属性很容易引起歧义,不容易判断到底是元素内部的属性还是自定义属性H5中新增了标准

2022-01-14 20:41:52 11057

原创 作用域、作用域链

作用域:简单来说,在一定的空间里可以对数据进行读写操作,这个空间就是数据的作用域。JS中最常见的就是变量的作用域。变量的作用域分为两种:全局变量和局部变量。全局作用域: 最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的;局部作用域: 局部作用域一般只在固定的代码片段内可访问到,而对于函数外部是无法访问的,最常见的例如函数内部。块级作用域:ES6新增作用域链:当代码在一个环境中执行时,会创建变量对象的一个作用域链。由子级作用域返回父级作用域中寻找变量,就叫做作用域链

2022-01-13 22:06:11 115

原创 【JS】预处理以及执行

JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行事实上,JS的解析过程分为两个阶段:预编译期(预处理)与执行期。预编译期JS会对本代码块中的所有声明的变量和函数进行处理(类似与C语言的编译),但需要注意的是此时处理函数的只是声明式函数,而且变量也只是进行了声明但未进行初始化以及赋值。

2022-01-13 20:54:15 427

原创 内存泄漏以及内存溢出

内存泄漏(memory leak) 内存溢出 (out of memory)内存泄露 :是指程序在申请内存后,无法释放已申请的内存空间就造成了内存泄漏,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存溢出: 指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出,简单来说就是自己所需要使用的空间比我们拥有的内存大内存不够使用所造成的内存溢出。.

2022-01-13 11:46:21 119

原创 渲染引擎、js引擎

一个完整的浏览器包含浏览器内核和浏览器的外壳(shell)。浏览器核心——内核分成两部分:渲染引擎和js引擎。由于js引擎越来越独立,内核就倾向于只指渲染引擎。浏览器一般由七个模块组成,User Interface(用户界面)、Browser engine(浏览器引擎)、Rendering engine(渲染引擎)、Networking(网络)、JavaScriptInterpreter(js解释器)、UI Backend(UI 后端)、Date Persistence(数据持久化存储)用户界.

2022-01-13 11:19:05 676

原创 【JS】之ES7

ES71.Array.prototype.includes()includes()作用,是查找一个值在不在数组里,若是存在则返回true,不存在返回false.1.基本用法:['a', 'b', 'c'].includes('a') // true['a', 'b', 'c'].includes('d') // false2.接收俩个参数:要搜索的值和搜索的开始索引['a', 'b', 'c', 'd'].includes('b') // t

2022-01-12 19:30:52 763

原创 【Es6】关键字之 super、static、new.target

ES6引入了Class(类)这个概念,作为对象的模板,通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法1.super关键字super用在调用的时候有两种情况:第一种情况,super作为函数调用时,代表父类的构造函数。 第二种情况,super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。class Person {

2022-01-12 17:07:50 686

原创 【JS】中的继承(包括ES6)

一、原型链继承1. 基本思想原型链继承的基本思想是通过原型来继承多个引用类型的属性和方法实现的基本思路是利用构造函数实例化对象,通过 new 关键字,将构造函数的实例对象作为子类函数的原型对象。2. 实现方法// 定义父类函数function Father() { // 定义父类属性 this.name = 'father'}// 给父类的原型添加方法Father.prototype.say = function () { console.log(.

2022-01-11 19:06:28 353

原创 原型与原型链

1.__proto__和constructor每一个对象数据类型(普通的对象、实例、prototype...)也天生自带一个属性__proto__,属性值是当前实例所属类的原型(prototype)。原型对象中有一个属性constructor, 它指向函数对象。2.何为原型链在JavaScript中万物都是对象,对象和对象之间也有关系,并不是孤立存在的。对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,

2022-01-10 19:30:47 84

原创 【JS】arguments

什么是arguments它是JS的一个内置对象,常被人们所忽略,但实际上确很重要,JS不像JAVA是显示传递参数,JS传的是形参,可以传也可以不传,若方法里没有写参数却传入了参数,该如何拿到参数呢,答案就是arguments了,在一些插件里通常这样使用。了解arguments这个对象之前先来认识一下javascript的一些功能:其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数都会有一个Arguments对象实例argument..

2022-01-10 18:49:49 161

原创 【JS】中的Symbol

symbol 的值是通过 Symbol() 函数生成,每一个 symbol 的值都是唯一的,并且 symbol 类型的值可以作为对象的属性标识符使用,这也是 symbol 类型设计的目的。所以现在对象属性名可以为两种类型:一种就是原本的字符串类型,一种即为新增的 symbol 类型。凡是使用 symbol 命名的属性都是独一无二的,保证不与其他属性名产生冲突。Symbol 本质上是一种唯一标识符,可用作对象的唯一属性名,这样其他人就不会改写或覆盖你设置的属性值。

2022-01-09 16:49:07 819

原创 【JS】中遍历数组的几种方法

1.index索引为字符串型数字,不能直接进行几何运算2.遍历顺序有可能不是按照实际数组的内部顺序3.使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性所以for in更适合遍历对象,不要使用for in遍历数组。那么除了使用for循环,如何更简单的正确的遍历数组达到我们的期望呢(即不遍历method和name),ES6中的for of更胜一筹.for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。for of遍历的只是

2022-01-08 11:50:39 1481

原创 【JS】this 指向介绍(箭头函数)

由于箭头函数不绑定this, 它会捕获其所在(即定义的位置)上下文的this值, 作为自己的this值,所以 call() / apply() / bind() 方法对于箭头函数来说只是传入参数,对它的 this 毫无影响。考虑到 this 是词法层面上的,严格模式中与 this 相关的规则都将被忽略。(可以忽略是否在严格模式下的影响)

2022-01-07 20:36:05 821

原创 【ES6】-箭头函数的使用

目录一、 箭头函数的使用1. 普通函数到箭头函数2. 省略大括号和 return3. 省略小括号二、箭头函数与普通函数的区别:1. 箭头函数的 this 是其所在(即定义的位置)上下文的this值2. call、apply、bind无法改变箭头函数的 this注意 :一、 箭头函数的使用ES6 中新增了使用箭头=>来定义函数表达式的方法。很多情况下,箭头函数和函数表达式创建的函数并无区别,只有写法上的不同。1. 普通函数到箭头函数如下所示,定义一个函..

2022-01-07 19:14:54 1220

原创 【ES6】-模板字符串

模板字面量:模板字面量是允许嵌入表达式的字符串字面量。你可以使用多行字符串和字符串插值功能。它们在ES2015规范的先前版本中被称为“模板字符串”。

2022-01-07 18:30:49 415

原创 有关闭包的概述及优缺点

一、闭包是什么:一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域。function init() { var name = "Mozilla"; // name 是一个被 init 创建的局部变量 function displayName() { // displayName() 是内部函数,一个闭包

2021-12-16 08:47:19 3351

原创 【JS】判断数据类型常用方法

js基础变量类型在 JS 中,有 5 种基本数据类型和 1 种复杂数据类型,基本数据类型有:Undefined, Null, Boolean, Number和String;复杂数据类型是Object,Object中还细分了很多具体的类型,比如:Array, Function, Date等等。js判断数据类型常用方法1.最常见的判断方法:typeof2.已知对象类型: instanceof3.对象原型链判断方法: prototype 通用但很繁琐4.根据对象的构造器constru..

2021-12-15 21:52:31 842

原创 DOM的基本操作

目录一、节点创建型API1.1 createElement1.2 createTextNode1.3 cloneNode二、页面修改形API2.1 appendChild2.2 insertBefore2.3 removeChild2.4 replaceChild三、元素属性型操作3.1 getAttribute()(获取属性)3.2 createAttribute()(创建属性)3.3 setAttribute()(设置属性)3.4 romov...

2021-12-15 21:16:07 1706

原创 原生js实现Ajax

Ajax的原理:简单来说就是 通过XmlHttpRequest对象向服务器发异步请求,从服务器获得数据,然后用 javascript 来操作DOM更新页面的技术。JQuery提供的Ajax方法:$.ajax({ url: , type: '', dataType: '', data: { }, success: function(){ }, error: function(){

2021-12-14 11:35:52 2961

原创 jQuery-Ajax 详解

一、什么是AjaxAjax的全称是Asynchronous JavaScript And XML(异步JavaScript和XML)我们可以理解为:在网页中利用XMLHttpRequest对象和服务器进行数据交互的方式就是Ajax,它可以帮助我们轻松实现网页与服务器之间的数据交互。二,jQuery中的Ajax在jQuery中,$.Ajax()方法属于最底层的方法,第2层是load(),$.get(),和$.post(),第3层是$.getScript()和$.getJSON()方法。...

2021-12-14 11:07:36 15668

原创 Webpack 介绍

webpack是一种前端资源构建工具。一个模块打包器,它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(less,TypeScript等),并将其打包为合适的格式以供浏览器使用),3,webpack 工作方式把项目当做一个整体,通过一个给定的入口文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个浏览器可识别的JavaScript文件。...

2021-12-08 16:25:38 544

空空如也

空空如也

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

TA关注的人

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