自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 为什么svn能保存这么多版本

SVN使用一种名为"差异存储"(delta storage)的技术来存储版本间的差异。当你提交新版本时,SVN会计算当前版本与前一个版本之间的差异,并仅存储这些差异数据。这样,SVN可以高效地存储每个版本的变更,而不需要保存完整的文件副本。

2023-06-20 09:13:41 220

原创 编译型语言与解释型语言的区别

1.简化开发和调试过程:解释型语言的一个主要目标是提一种更快速、更灵活的开发和调试环境。与编译型语言相比,解释型语言无需预先编译,可以直接执行代码,节省了编译时间。这使得开发者能够快速进行代码修改和测试,加快了开发周期。2.跨平台性:从解释型语言到机器语言,解释型语言有解释器这一步,这让解释型语言可以在不同的操作系统上运行,而无需对源代码进行修改或重新编译,提高了代码的可移植性。3.动态特性和灵活性:解释型语言通常具有动态类型、动态内存管理和灵活的语法。解释型语言的动态特性使得代码的编写更加直观和灵活,

2023-06-10 14:03:35 166

原创 常用对象数组操作记录

常用的对象数组操作合集

2023-02-07 17:16:37 162 1

原创 小程序轮询

小程序轮询代码

2023-01-31 12:01:20 732

原创 JavaScript数组方法大全(分为会不会改变原数组)

js 改变原数组和不改变原数组的方法整理

2022-12-12 12:30:03 579

原创 vite配置@快捷根路径

vite配置@快捷根路径

2022-12-10 14:44:48 494

原创 CSRF如何防范

CSRF 是一种Web 上的攻击手法,全称是Cross Site Request Forgery,跨站请求伪造。攻击者透过盗用使用者的身份,悄悄发送一个请求或是执行一些恶意行为

2022-11-03 21:47:10 1290

原创 什么是__proto__和prototype

从原型链的引用介绍__proto__与prototype的关系

2022-10-16 16:07:32 1424

原创 JS去除两个数组对象的相同元素

filter():filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。some(): some() 方法用于检测数组中的元素是否满足指定条件。

2022-09-13 11:19:25 1657

原创 js中.sort()函数的用法

本文介绍sort的用法解析以及高级用法

2022-09-11 11:14:38 3902

原创 数组中元素为对象,如何通过对象里的值来找到目标元素

使用数组的find方法寻找目标元素:(前提:find方法传入一个函数时此函数可以接受两个参数,第一个是数组中当前遍历的对象,第二个是当前的index)

2022-06-11 11:06:49 710

原创 什么是Vue?它做了什么?从Vue生命周期来了解Vue

注意:阅读本文可能需要一点点JavaScript以及Vue的使用基础或许你早已听过Vue的大名,Vue的响应式的绑定、抽象语法树、虚拟DOM、diff算法等等,但实际上这些东西到底是什么,可能还抱有一点疑惑,此文是我在阅读书籍、学习Vue源码时根据自己的理解对Vue的一个大体脉络的一个概括,以及对以上提及的知识点的一些解释。属一家之言,起一个抛砖引玉的作用,如果有不对的地方,各位可以在评论区留言,我会尽快订正(先贴一张Vue生命周期的图片,我们将结合一个Vue实例的生命周期来理解Vue都干了些什么.

2022-05-05 16:00:50 1556

原创 什么是服务器渲染什么是前端渲染

就是说页面上很多东西都是动态的嘛,需要结合数据渲染。而在服务器渲染好再传到浏览器呢就说服务端渲染,比如以前的jsp。将写好的html模板等都传到浏览器来让浏览器渲染呢就是前端渲染服务端渲染:服务器直接生产渲染好对应的HTML页面, 返回给客户端进行展示。比如:jsp页面好处:前端耗时少,即减少了首屏时间,模板统一在后端。前端(相对)省事,不占用客户端运算资源(解析模板)坏处:占用服务器资源。前端渲染:浏览器中显示的网页中的大部分内容,都是由前端写的 js 代码在浏览器中执行,最终渲染出来的网页。

2022-03-10 19:33:40 1994

原创 HashRouter和HistoryRouter的区别

HashRouter和 HistoryRouter的区别:history和hash都是利用浏览器的两种特性实现前端路由,history是利用浏览历史记录栈的API实现,hash是监听location对象hash值变化事件来实现history的url没有’#'号,hash反之相同的url,history会触发添加到浏览器历史记录栈中,hash不会触发,history需要后端配合,如果后端不配合刷新新页面会出现404,hash不需要。HashRouter的原理:通过window.onhashchang

2022-03-10 19:16:43 2396

原创 ES6语法 数组的三点(. . .)拓展运算符

在阮一峰的《ECMAScript 6 入门》中是这么介绍三点(. . .)拓展运算符的:该运算符将一个数组,变为参数序列一开始没看懂,看完代码后回头看这句话就恍然大悟let arr1 = [1,2];let arr2 = [5,6];let newArr = [20];// 使用扩展运算符newArr = [20,...arr1,...arr2]; console.log(newArr); //[20,1,2,5,6]也就是说,该运算符将数组arr1里[1,2]转化为了1和2两个数字,

2022-03-05 10:22:11 354

原创 微信小程序动态拼接变量名

众所周知,微信小程序因为安全问题不能使用eval()函数,所以不能使用eval()来动态的拼接变量名。但可以使用ES6的字符串模板来直接拼接,直接看代码 let obj = { obj1 :{ say:'hi1' }, obj2 :{ say:'hi2' } } let one = obj1 let two = say // 等于 obj.obj1.say // `` 是ESC下 TAB上的哪

2022-02-19 20:29:45 3097 1

原创 微信小程序页面跳转后Page里的data数据消失的问题

一般出现这样的问题都是不正确的路由跳转导致的:微信小程序有多种路由跳转的接口如wx.switchTab,wx.reLaunch,wx.redirectTo,wx.navigateTo,wx.navigateBack在学习这些路由跳转接口的时候需要知道一个前提,那就是微信小程序页面的生命周期:函数功能onLoad监听页面加载onReady监听页面初次渲染完成onShow监听页面显示onHide监听页面隐藏onUnload监听页面关闭然后我们其中

2022-01-15 19:23:09 3905

原创 Linux下Operation `users.findOne()` buffering timed out after 10000ms和admin user not authorized错误总结

首先建议找到mongodb的配置文件mongod.conf把authorization的值改为disabled(如果是第一次配置那security一开始是被屏蔽的,开启它),关闭权限认证,如果关闭权限认证后能连接和使用数据库那便能肯定是权限认证的问题了改前:security: authorization: enabled改后:security: authorization: disabled记得重启mongodb如果确定是权限认证问题便把disabled再次改为enabled。接下

2021-12-12 16:05:01 1822 2

原创 centos8重启mongodb

停止mongodb服务sudo systemctl stop mongod --now正常的话是没有任何提示的再次输入mongo是无法进入mongo控制台了开启mongodb服务sudo systemctl enable mongod --now正常也是没有任何提示的再次输入mongo可以进入mongo控制台...

2021-12-09 11:39:28 801

原创 vue + element-ui 实现分页功能

第一步:引入element-ui的分页器 <el-pagination background //此事件监听的是分页器被点击事件 @current-change="handleCurrentChange" layout="prev, pager, next" //page-size的意思是你打算一页显示多少行数据,我这里就是一页显示10行 :page-size="10

2021-11-22 10:47:01 6196

原创 express+multer实现上传图片

其实很简单,就跟写平时的路由一样一样的第一步npm install multer第二步在路由文件夹里创建一个multer文件夹,里面再创建一个index.js文件(也可以不创,直接写在其他子路由里,我这里是为了项目结构更清晰)index.js里的内容:1.先引入const express = require('express')const router = express.Router()const multer = require('multer');2.指定文件储存的路径v

2021-11-12 20:16:49 1266

原创 Promise怎么用?

一、一般什么情况下会用到promise?1.封装异步的操作如:网络请求2.解决回调地狱二、怎么用1.new一个实例化对象 => 实例化时传入一个函数 => 传入的函数的参数又需要传入两个函数(resolve,reject) => 实例化的对象可以调用.then和.carch方法 =>...

2021-10-20 09:21:02 162

原创 什么是闭包

一、首先心态要放松,闭包不难理解,真的二、直接上代码function foo() {var a = 2;function bar() {console.log( a );}return bar;}foo(); // 2 —— 朋友,这就是闭包的效果。我们都知道,一个函数执行完毕之后里面的变量会被内存回收掉,而foo函数似乎已经没有被继续使用了,为什么执行foo函数时还是能够从bar函数里打印出2呢?是什么阻止了foo函数的回收,使得foo函数里的变量依然存在。如果对闭包云里雾里则很容

2021-10-14 12:30:26 87

原创 什么是三目运算符

(表达式 ? "" : "")上面就是常见的三目运算符表达式为true时,跑冒号前的字符表达式为false时,跑冒号后的字符

2021-09-28 09:42:13 125

原创 什么是回调函数(JS)

要知道回调函数是啥,首先要知道,回调函数是用来干嘛的:回调函数是用来取一个异步操作的函数里的值的,也就是说:如果一个函数是异步的,这个函数不知道什么时候才能完成,也就拿不到这个函数里的值。其中一个解决方法就是在这个异步函数中再放一个函数,当这个异步函数完成后执行,这个安插在异步函数里的函数也就能打印出异步操作的结果了。其他解决方法有如promise,await等操作,这里不讨论那么具体怎么取呢,看代码: 1 function pre(callback){ 2 var a="a"

2021-09-22 16:57:34 590

原创 express 什么是中间件(浅显易懂)

如图,在前端发送来一个请求后,可以马上处理:返回,储存数据,但如果有别的需求,比如验证用户是否登录,那么就可以安排一个中间件在中间拦截,中间件判断用户登录了才能处理。当然了,肯定可以放不止一个中间件在实际开发中,会有很多的中间件进行各种处理。中间件处理请求的先后顺序取决于代码声明的先后顺序。当一个中间件处理完毕后,调用next()方法就会交予下一个中间件进行处理。...

2021-09-13 19:22:58 160

原创 前后端分离项目 前端如何请求数据?原理是什么?

要理解前端如何请求数据,不妨先想一个问题,就是数据到底是如何传输的?其实不考虑加密等技术的加持下,其实浏览器的数据传输特别的清新单纯:一.首先是老生常谈的http协议,超文本传输协议嘛,通过http,在浏览器输入一个域名我们就可以将一个文件包含的数据从一台电脑传输到另一台电脑。二.把各种文件(如.html .js .css)传输过去后,浏览器解析这些字符,从而渲染出一个页面。就是这么简单!那么,如果在一个网页渲染完毕后,又需要额外的数据呢?很简单,就像上面说的一样,请求数据还是靠输入另外一个域

2021-09-10 15:15:00 2224

原创 Vue使用swiper包指南及踩坑

swiper使用指南:安装swiper指定版本(最新版本使用方法与旧版本不同,目前网上的例子都是旧版本的,安装最新版本会报错):npm install [email protected] --save安装vue-awesome-swiper指定版本:npm install [email protected] --save引入包和声明组件:import { Swiper, SwiperSlide } from 'vue-awesome-swiper';import 'swiper/css/

2021-09-03 13:41:29 1176 1

原创 vue-watch的用法

watch用法像methods或compute一样:watch:{ //content }目的就是观察一些值的变化,比如在data中的一个值:data(){ a = 1},watch:{ a:{ //在这执行一些操作 }}用handler函数进行操作:data(){ a = 1},watch:{ a:{ //handler函数在观察的值变化后自动执行 //handler函数可以有两个参数,第一个是a如果改动后的值,第二个 handler(newVa

2021-09-01 11:14:52 70

原创 Mustache的底层原理

mustache的第一种实现方法:正则表达式使用正则表达式实现mustache原理很简单:1.先声明将模板用字符串声明出来2.随后使用正则表达式匹配出需要被替换的结果3.再使用replace()方法替换接下来看看代码:<body> <div id="content"></div> <script> var templateStr = '<h1>我的名字是{{name}},年龄{{age}}</h1>'

2021-08-15 17:00:12 278

原创 vue点击视频预览图实现视频播放或暂停

以popmart官网的视频为例,这个视频在点击播放按钮时才会播放,再次点击时会将视频暂停简述逻辑:1.首先知道<video>标签里有.paused节点,当视频播放时返回true,反之返回false。也就是说:html:<video id="videoPlay1" src=""></video>js:var video1=document.getElementById("videoPlay1"); console.log(video1.paused)

2021-07-23 14:50:04 3233

原创 vue transition注意事项

使用vue transition时的注意事项

2021-07-19 13:21:03 350

原创 const _this = this是如何解决匿名函数的指向问题的

感觉网上其他资源说得虽然正确但不好理解尝试下梳理下自己的理解用自己的话将道理解释一遍是一个非常有效的学习方法1.this的指向用一句话概括就是从哪个对象调用this,this就指向哪个对象推荐文献:https://zhuanlan.zhihu.com/p/253497902.但有一个问题就是,匿名函数实际上是通过windos对象调用的(原理大概是匿名函数会在全局建立一个变量(比如a),然后将函数存入这个变量a,再执行windos.a调用函数)所以匿名函数的this总是指向于windos对象(非

2021-07-09 13:13:52 1406

原创 微信小程序setData()方法渲染过程

微信小程序并不能像vue一样做到所有的数据都是响应式。如果需要某个数据在事件后改变,则需要我们通过setData()方法来实现。那么微信小程序又是如何通过setData()方法刷新页面的呢1.首先要知道,微信小程序在微信客户端这个寄主环境中由渲染层和逻辑层组成。通过渲染层和逻辑层的合作形成一个包含dom信息的js对象,随后再将js对象转成一个真正的dom渲染出来。而如果经过了setData()方法识别到数据发生改变,那么微信小程序就会执行diff(different) 操作,对比两个对象直接的差异

2021-07-07 22:39:12 956 1

原创 JavaScript类实现原理

1.首先知道,JavaScript中是没有类的,js中的class,new关键字,都只是在模仿类的行为罢了2.随后,js的类是通过一个叫[[Prototype]]链的东西实现的。3.具体来说是这么一回事:创建一个myobj的对象,里面有a这个元素,每次myobj.a访问对象里的元素时,都会触发一次js里的[[Get]] 操作。如果无法在myobj对象本身找到需要的属性,就会继续访问对象的 [[Prototype]] 链。通过Object.create(…) 可以将一个对象添加到另外一个对象的[[Prot

2021-07-05 18:19:42 412

原创 javascript关于变量提升的问题

js在声明一个变量时(var foo= 1)会分两步走。第一步是var foo,(这一步是在为这个变量开辟一处内存空间并命名)第二步是foo= 1,(这一步则是为开辟好并命了名的内存空间赋值)但这两步并不是同时进行的,var foo这一步是在编译阶段进行,而foo= 1则是在执行阶段进行。简单来说,就是var foo这步是在浏览器一行行读js代码前执行的,而foo= 1则是留在你写的位置等待被执行的。所以如果代码里有不少变量,那么代码的一开始其实是这样的var foo;var a;let b;

2021-07-04 22:24:59 179 1

原创 v-model的原理与各功能时返回的值

众所周知,v-model可以在input表单中实现与data中数据的双向绑定功能。但其实其原理十分简单,相当于v-bind和两个指令的结合1.首先实现data中数据在框中值的单项绑定,使用v-bind绑定input中的value属性即可。2.实现input中的value值实时绑定到message(首先要知道一个知识点,那就是input有一个内部事件叫input事件:用于监听用户现在有没有在输入东西,可以验证一下)看,这里将常写的click点击事件改为了input事件,然后将此事件指定到val

2021-06-28 21:58:32 1380

原创 JavaScript中.splice()的用法

.splice()难记就难在它有集三种功能于一体分别是删、替、插.splice()可以有三个参数,第一个参数永远都是开始的位置,而第二个参数最重要,这个函数是什么功能就取决与第二个参数,第三个参数是替换(插入)用的值,是可变参数,即随便多少个都行。1.删除元素:第二个参数传入你要删除几个元素(如果没有传,就删除后面所有的元素)2.替换元素:第二个参数表示要替换几个元素3插入元素:第二个参数传入0...

2021-06-28 21:08:55 2695

原创 为什么Vue推荐在使用v-for时给对应元素或组件加上key

从代码开始1.用li展示数组letters:2.需求:从BC中插入显示字母F3.思考:还记得,vue是有虚拟dom这一层的,那么li元素和字母的配对方式是怎样变化的呢按照常理和性能来说,应该是像下图这样,新建一个li然后将F插入。实际上vue在这方面非常笨,他是这样的vue在最后面新建了一个li,然后从B开始全部重新开始指定。。。4.到这,是不是对为什么在v-for时对元素和组件加key开始有点了解了简单来说,就是在每个li下加个标识,确保每个li都与每个字母绑定。从而使得新加入的字

2021-06-28 20:28:22 131

原创 v-if和v-show的区别

v-if和v-show都用于元素的隐藏与展现。但他们的区别在哪呢(同时展现二者,使用v-if的id取值为aaa,使用v-show的id取值为bbb)(将isShow改为false,二者毫无疑问都消失了)我们可以看见,id为aaa的h2元素直接消失在了整个dom里,这行代码都没了,所以aaa消失了。而bbb则是在样式里加入了display:none使得bbb消失那么该如何选择v-if还是v-show呢?1.如果切换频率较高时使用v-show,因为我们知道,v-show只是改变样式,这样性能肯

2021-06-28 17:50:16 63

空空如也

空空如也

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

TA关注的人

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