- 博客(50)
- 收藏
- 关注

原创 什么是Git?
一、Git是一款分布式源代码管理工具(版本控制工具)1.1、我们写的代码需要使用Git进行管理。源代码有必要管理起吗?1.02.0 //svn,vss,vcs… git有必要,因为人工的去处理不同的版本,做相应备份会很麻烦。Git是linux之父当年为了维护linux—linus之前也是手动维护合并把文件发给Linuslinus自己写了一个版本管理的工具(Git)特点:Git易于学习, 占用空间小,性能快如闪电。它优于 Subversion、CVS、Perforce 和 ClearCas
2022-05-19 15:51:20
7878

原创 vue的生命周期
vue的生命周期也就是vue从创建到销毁的一整个过程 被称为vue的生命周期,主要用途是在不同的时段执行不同的事情。vue常用的生命周期一共有8个,分别为:beforeCreate( 创建前 )在实例初始化之后,数据观测和事件配置之前被调用,此时组件的选项对象还未创建,el 和 data 并未初始化,因此无法访问methods, data, computed等上的方法和数据。created ( 创建后 )实例已经创建完成之后被调用,在这一步,实例已完成以下配置:数据观测、属性和方法的运算,watc
2022-03-24 20:52:54
392
原创 vuecli2创建脚手架写happymmall项目总结
1: 第一步:搭建node运行环境,根据操作系统选择相应安装包下载地址:https://nodejs.org/en/download/ 检验是否安装成功,命令行中直接输入node -v,返回版本号即可。2:第二步:安装webpack npm install webpack -g3:第三步:安装脚手架 npm install -g @vue/cli-init4: 第四步:创建项目 使用vue init webpack my-project命令创建项目,其中my-project为项目
2022-06-01 20:20:07
545
原创 什么是 axios?
1、Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。2、特性从浏览器中创建 XMLHttpRequests从 node.js 创建 http 请求支持 Promise API拦截请求和响应转换请求数据和响应数据取消请求自动转换 JSON 数据客户端支持防御 XSRF3、安装步骤npm install axios 或者 yarn 或者 cnpm4、axios的原理:// 封装Ajax,实现axios进行回调 var axios =
2022-05-23 11:13:24
1328
原创 This 的指向
在 js 中 this 不是固定不变的,它会随着执行环境的改变而改变。要注意的是 this 取什么值,是在执行时确认的,定义时无法确认。this 的调用大概分为五种场景: 1.浏览器里,在全局范围内的 this 指向 window 对象; 2.在函数中,this 永远指向最后调用他的那个对象; 3.构造函数中,this 指向 new 出来的那个新的对象; 4.箭头函数中 this 比较特殊,箭头函数 this 为父作用域的 this,不是调用时的 this.要知道前四种方式,都是调用时确定,也就是动态的,
2022-05-06 10:57:34
171
原创 初识 ts的使用
1.什么是 ts?ts 全称是 TypeScriptTypeScript 可以理解为是 JavaScript 的扩展,扩展了 js 的语法,因此我们可以在 ts 中继续写 js 的代码而不回报错TypeScript 又叫做静态的 JavaScript,不能直接引入到 html 中,不能直接被浏览器识别,需要经过 ts 转换器或者是 babel 转化后才能使用2.如何理解静态语言和动态语言?类型系统按照类型检查的时机来分类,分为动态类型和静态类型,动态是在运行时候才检查数据类型,静态是在编译时候检查
2022-05-06 10:53:08
1123
原创 深拷贝 浅拷贝
深拷贝拷贝的是值 浅拷贝拷贝的是地址深拷贝和浅拷贝的区别1.浅拷贝: 将原对象的引用直接赋给新对象,新对象只是原对象的一个引用,而不复制对象本身,新旧对象还是共享同一块内存2.深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”,新对象跟原对象不共享内存,修改新对象不会改到原对象2.1数组 深拷贝的方法1.可以用JSON.parse(JSON.stringify())2.concat3.扩展运算符 let arr = [1, 2, 3
2022-05-06 10:52:31
122
原创 什么是闭包以及优缺点
闭包:简单的理解就是函数中套了一个函数,内层函数可以访问外层函数中的变量有时候需要用到函数内的局部变量,在正常情况下是不能读取到的,这个时候就需要用到闭包。闭包可以封装对象的私有属性和方法,vue 中的 data 就是一种闭包的形式。闭包作为回调函数,可以实现函数的复用优点:闭包因为长期驻扎在内存中。可以重复使用变量,不会造成变量污染缺点:闭包会使函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,可能会导致内存泄露。解决方法是在退出函数之前,将不使用的变量全
2022-05-06 10:46:32
7593
原创 什么是作用域
1.作用域:作用域就是一个变量可以使用的范围,主要分为全局作用域和函数作用域全局作用域就是 Js 中最外层的作用域函数作用域是 js 通过函数创建的一个独立作用域,函数可以嵌套,所以作用域也可以嵌套Es6 中新增了块级作用域(由大括号包裹,比如:if(){},for(){}等)2.自由变量:当前作用域外的变量都是自由变量,作用域链就是 自己没有这个变量就从上一级作用域查找,直到找到为止,直到找到顶层 window,没有的话就报错 3.变量提升:每个 var 声明的变量,function 声明的
2022-05-06 10:45:50
199
原创 数据类型简介:
1.JavaScript(以下简称 js)的数据类型分为两种:原始类型(即基本数据类型)和对象类型(即引用数据类型);两种类型的区别是:存储位置不同:基本数据类型存储在栈中引⽤类型的对象存储于堆中2.js 常用的基本数据类型包括 undefined - - (未定义)、null- - (空的)、number - - (数字)、boolean- - (布尔值)、string- - (字符串)、Symbol - - (符号);3.js 的引用数据类型也就是对象类型 Object- - (对象),比如:
2022-05-06 10:45:18
110
原创 map 和 set 还有 symbol
是 es6 新增加的两种数据结构 数据结构不是数据类型set 这种数据结构的特点是值是唯一的 所以可以用来数组去重let arr = [1, 2, 3, 4, 4, 3, 5];let data = […new Set(arr)];map 这种数据结构 跟对象相似放的是一个键值对形式的数据 跟对象的区别是他的 key 值可以是任何的数据类型新增加的 symbol 才是数据类型// symbol 是一种新的数据类型// symbol 的值永远都是唯一的let a = Symbol(“aa”);
2022-05-06 10:44:45
502
原创 class 与 class 继承 **\***
传统的 javascript 中只有对象,没有类的概念。它是基于原型的面向对象语言。Es5 的时候通过构造函数来创建类 到了 es6 我们就可以通过 class 关键字来创建类,跟传统的面向对象的语言更加接近。ES5 中如果要生成一个对象实例,需要先定义一个构造函数,然后通过 new 操作符来创建实例。ES6 中的类ES6 引入了 class(类)这个概念,通过 class 关键字可以定义类。该关键字的出现使得 javascript 在对象写法上更加清晰,更像是一种面向对象的语言。注意项: 1.在类
2022-05-06 10:44:08
157
原创 Javascript 如何实现继承?
:JS 继承实现⽅式也很多,主要分 ES5 和 ES6 继承的实现先说⼀下 ES5 是如何实现继承的ES5 实现继承主要是基于 prototype 来实现的,具体有三种⽅法⼀是实例继承:即 B.prototype=new A() 让 b 的原型等于 a 的实例⼆是借⽤构造函数继承(call 或者 apply 的⽅式继承)function B(name,age) {A.call(ths,name,age)}三是组合继承组合继承是结合第⼀种和第⼆种⽅式再说⼀下 ES6 是如何实现继承
2022-05-06 10:43:08
101
原创 说⼀下 JavaScript 原型,原型链的理解?
prototype 显式原型每个函数都有一个 prototype 属性,被称为显式原型,里面包含了这个构造函数公共的方法_ proto 隐式原型每个实例对象都会有_ proto 属性,其被称为隐式原型每一个实例对象的隐式原型 proto _属性指向自身构造函数的显式原型 prototypeconstructor每个 prototype 原型都有一个 constructor 属性,指向它关联的构造函数。原型链获取对象属性或者方法的时候,如果对象本身没有这个属性,那就会去他的原型_ proto.
2022-05-06 10:42:27
250
原创 说说 new 操作符具体⼲了什么?
在 JavaScript 中, new 操作符⽤于创建⼀个给定构造函数的实例对象new 的实例可以访问构造函数函数里的属性也能访问 原型上的方法创建⼀个新的对象 obj将对象与构建函数通过原型链连接起来将构建函数中的 this 绑定到新建的对象 obj 上根据构建函数返回类型作判断,如果是原始值则被忽略,如果是返回对象,需要正常处理...
2022-05-03 10:39:39
305
1
原创 es5 的面向对象和 es6 的面向对象
es5 的面向对象是通过 new 一个构造函数实现的es6 的面向对象是通过 class 实现的 es6 的 class 就是面向对象的语法糖(实现同样的功能 但是代码更少 更加简洁)面向对象是一个概念或者编程思想,面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式(在 js 中一切皆对象比如说数组 object number string 等等 这些都是内置对象那么怎么自定义对象es5 的时候没有像后台语言
2022-05-03 10:39:08
533
原创 for in 与 for of 的区别?
For in 可以遍历对象 ⽽ for of 遍历对象会报错for in 遍历数组得到的数组的下表 ⽽ for of 遍历得到的时候数组⾥⾯的每⼀个元素
2022-05-03 10:38:37
225
原创 常用的字符串方法大全
常用的字符串方法大全⼀、拼接或截取字符串1.str.concat()⽤于将⼀个或多个字符串拼接起来,返回拼接后的新字符串参数:可以有多个,⽤来拼接到str上的字符串let str ='hello';console.log(str.concat(' ','world'))//'hello wor2.str.slice()此⽅法⽤来提取⼀个字符串,并返回⼀个新的字符串参数:1)beginIndex,表⽰从该索引处开始提取字符串的字符(包括),如果为负数则从后开始计算2)endIndex,表
2022-05-01 19:12:02
2378
原创 数组的常用方法总结
1. join()join(’参数‘)把数组的元素以传入的参数为分割符,转换成字符串。let arr = [1,2,3,4,5];let str = arr.join(',');console.log(str) // -> '1,2,3,4,5';2.push()和pop()push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。作者:微笑的弧度_c50f链接:htt
2022-05-01 18:56:17
102
原创 说⼀下 var 、let、const 之间的区别
let var 是声明变量的 const 是声明常量的var 声明的变量会声明提升 但是 const 和 let 不会 (声明提升就是声明的变量会把声明语句提到作用域的顶端 但是赋值语句留在原地)var 在全局作⽤域下声明变量会导致变量挂载在 window 上,其他两者不会let 和 const 声明的是块级作用域 var 声明的是函数作用域块级作用域:只要是大括号就能区分作用域函数作用域: 只有函数才能区分作用域代码演示如下: // console.log(num); v.
2022-04-28 15:47:17
89
原创 说⼀下 async 和 await、以及他们和 promise 的区别?(必问)
⾸先 async 和 await 是解决异步的终极⽅案,async 和 await ⼀般配和使⽤,当我们给函数前⾯加上关键字 async,这个时候,这个函数的返回值就是⼀个 promise. ⽽ await 是⼀个同步的操作,await 只能配合 async 只能,不然会报错,await 后⾯可以是表达式,也可以是⼀个 promise,在await 下⾯的代码必须得等待 await 执⾏完之后才能在执⾏他们和 promise 的区别就是在写法上更加的简洁.// es7的时候出了一个async和aw
2022-04-28 15:43:18
98
原创 promise的理解、解决方法、状态、怎么用、还有promise 的 all 和 race 方法
promise 是 es6 提供的一种异步解决方案,在我的理解中 promise 就是把异步操作换了一种写法从之前的嵌套回调函数 变成了链式的写法promise 本身其实就是一个容器 里面放异步的代码 这样就可以让这个异步的代码执行.then .catch 的操作1.1 说⼀下你对 promise 的理解?(必问)promise 是 es6 提供的一种异步解决方案,在我的理解中 promise 就是把异步操作换了一种写法从之前的嵌套回调函数 变成了链式的写法1.2 什么是 promise?通过
2022-04-28 10:38:43
355
原创 什么是 es6
是 ECMAScript 的第六个版本 在 es5 的基础上新增加了一些语法js 分成三部分 dom(文档对象模型) bom(浏览器对象模型) ECMAScript(js 语法)
2022-04-28 10:37:36
64
原创 vue组件传值的八种方式
1. 父传子首先在使用子组件的标签上 通过自定义属性传递变量 在子组件中 通过 props 接受在接收的时候有两种接收方式 数组形式 和 对象形式 对象形式可以规定传来的变量的数据类型(type)默认值(default)以及是否必填(required)2. 子传父首先在使用子组件的标签上定义一个自定义事件 在子组件里通过 this.$emit 去调用这个 自定义事件 $emit 方法的第一个参数是自定义事件的名字 第二个参数是就是子组件要传递给父组件的变量 最后在父组件接收使用就可以了3
2022-04-27 10:55:41
10482
原创 Vue.extend
使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象。可以理解为创建子组件的 可以用 mount 或者 el 指定这个子组件挂载到哪里
2022-04-26 16:02:41
181
原创 mixin 混入
混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”,出现冲突的时候以组件优先比如,生命周期函数就会合并 但是如果组件和混入有相同的变量的时候 会以组件的优先全局混入混入也可以进行全局注册。使用时格外小心!一旦使用全局混入,所有的实例都会触发...
2022-04-26 16:01:21
61
原创 Vue.use 是⼲什么的?
vue.use 是用来安装 Vue.js 插件。这个插件可以是一个组件也可以是一个函数,插件里要有一个 install 方法,install 方法调用时,他的第一个参数就是 Vue 在调用 vue.use 方法的时候就会执行 Vue.install 方法该方法需要在调用 new Vue() 之前被调用。...
2022-04-26 10:36:28
1178
原创 组件写 name 有啥好处?
增加 name 属性,可以实现组件递归调⽤自身,调用的时候用的就是 name 名字可以表示组件的具体名称,⽅便调试和查找对应的组件 比如说 keep-alive 的 include 和 exclude 就是通过组件的 name 属性区分谁缓存谁不缓存的...
2022-04-26 10:35:58
142
原创 diff 算法
diff 算法就是对虚拟 dom 进行对比,并返回一个 patch 对象,这个对象的作用是存储两个节点不同的地方,最后用 patch 里记录的信息去局部更新真实的 domdiff 算法的步骤1.js 对象表示真实的 dom 结构,就是我们说的生成一个虚拟 dom,再用虚拟 dom 构建一个真的 dom 树,放到页面中。 2.状态改变的时候生成一个新的虚拟 dom 跟旧的进行对比,这个对比的过程就是 diff 算法,通过 patch 对象记录差异 3.把记录的差异用在第一个虚拟 dom 构建的真实的 do
2022-04-26 10:35:24
1801
原创 虚拟 dom
虚拟 dom 是利用 js 描述元素与元素的关系,用 js 对象来表示真实的 DOM 树结构,创建一个虚拟 DOM 对象由于在浏览器中操作 DOM 是很昂贵的。频繁的操作 DOM,会产⽣⼀定的性能问题.在组件渲染的时候会调用 render 函数,这个函数会生成一个虚拟 dom,再根据这个虚拟 dom 生成真实的 dom,然后这个真实的 dom 会挂载到我们的页面中。如果只是渲染一个页面后期不改动的话 那么虚拟 dom 其实成本更高 因为 都要渲染成真实的 dom如果组件内有响应的数据,数据发生改变的
2022-04-26 10:34:44
332
原创 vue 和 jquery 的区别以及vue 中 data 发⽣变化
说⼀下 vue 和 jquery 的区别⾸先呢 jquery 他是⽤ js 封装的⼀个类库,主要是为了⽅便操作 dom 元素,⽽ vue 他是⼀个框架,并且呢,他会从真实 dom 构建出⼀个虚拟的 dom 树,通过 di!算法渲染只发⽣改变的 dom 元素,其他的相同的 dom 元素不⽤在重新渲染. ⽽使⽤ jquery 去改变 dom 元素的时候,即使有相同的 dom 元素也会重新渲染, jq 重点操作 dom,而 vue 重点操作数据。以上就是我对 vue 和 jquery 区别的理解.vue
2022-04-25 15:48:25
829
原创 axios 封装以及拦截器
axios 封装先创建 utils 文件夹创建 request.js引入 axios配置 基本路径和超时时间配置请求拦截和响应拦截在请求拦截里可以放 loading 和 token在响应拦截中 可以 清除 loading 还有处理错误编码字典最后把我们封装的 axios 实例 导出axios 拦截器拦截器有两种 一个是请求拦截一个是响应拦截拦截器不需要手动调用而是每次发送 http 请求的时候都会自动触发我们一般在请求拦截中 放全局的 loading 和 token在响应拦截中
2022-04-25 15:47:23
810
原创 什么是跨域
跨域是浏览器的跨域 不符合 域名 协议 端口号一样(同源策略) 的请求都会出现跨域的问题跨域的解决方法最多的情况是后端处理跨域前端的跨域服务器代理jsonpvue 中是 proxy 代理实现跨域vue 的跨域用 proxy 实现...
2022-04-25 15:45:27
574
原创 什么是插槽
⾸先呢,所谓的插槽就是⼀个占位符,将⾃定义组件的内容展示出来.我们知道⾃定义的组件⾥⾯如果写内容的话,⻚⾯是不会显示出来的,如果我们想让⾃定义组件⾥⾯的内容显示出来,我们就需要使⽤ slot 的插槽.⽽插槽分别具名插槽和匿名插槽、以及作⽤域插槽. 我们⽤的⽐较多的具名插槽和匿名插槽,具名插槽需要所有 slot 标签上指定name 属性,⽽在对应标签上添加# 属性指定名字.在项⽬中我们⼀般在进⾏组件封装的时候会使⽤插槽,以上就是我对插槽的理解.作用域插槽是把子组件里的数据传到父组件的插槽里使用
2022-04-25 15:44:33
844
原创 过滤器 filter
所谓的 vue 过滤器就是将数据进⾏⼆次处理,得到我们想要的结果数据vue 的过滤器分为两种,第⼀种是全局过滤器,通过 vue.filter 来进⾏定义,第⼆种是局部过滤器,需要定义在组件内部,用 filters 过滤项⽬中我们通过过滤器将后台返回的状态 0 和 1 转化为⽀付或者未⽀付 还有对时间格式进行过滤vue3 中没有过滤器了...
2022-04-24 15:51:11
208
原创 keep-alive
keep-alive 是 vue 内置的⼀个组件,⽽这个组件的作⽤就是能够缓存不活动的组件,我们能够知道,⼀般情况下,组件进⾏切换的时候,默认会进⾏销毁,如果有需求,某个组件切换后不进⾏销毁,⽽是保存之前的状态,⽐如说刚刚填好的表单数据。那么就可以利⽤ keep-alive 来实现被缓存的组件 切换的时候不会触发创建和销毁的钩子函数 而是会触发跟 keep-alive 相关的 activated(激活) deactivated(停用)这两个钩子函数keep-alive 标签 有 include 属性
2022-04-24 15:50:37
218
原创 Vue中常见的指令及其含义?
v-text 只解析文本信息v-html 可以解析超文本标签v-if/v-else-if/v-else 与javaScript中的一样,用于判断DOM的显示与隐藏。v-show 通过控制元素的display css属性来控制元素的显示与隐藏v-for 循环v-on 绑定事件,可以用@符号来代替v-bind 绑定元素的一个或者多个属性,用于动态更新html上元素的标签内容v-slot 插槽v-pre 跳过自己以及子元素的编译过程v- model 数据的双向绑定v-clock 解决页面闪烁问
2022-04-24 10:59:25
450
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人