自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(166)
  • 资源 (2)
  • 收藏
  • 关注

原创 快排啦啦啦啦

2022-11-01 19:25:41 250

原创 大转盘流程

大转盘

2022-06-29 15:03:28 281

原创 手写简单promise

11

2022-06-23 15:00:51 263

原创 赋值和浅拷贝和深拷贝得区别

这三者的区别如下,不过比较的前提都是针对引用类型:当我们把一个对象赋值给一个新的变量时,赋的其实是该对象的在栈中的地址,而不是堆中的数据。也就是两个对象指向的是同一个存储空间,无论哪个对象发生改变,其实都是改变的存储空间的内容,因此,两个对象是联动的。浅拷贝:重新在堆中创建内存,拷贝前后对象的基本数据类型互不影响,但拷贝前后对象的引用类型因共享同一块内存,会相互影响。深拷贝:从堆内存中开辟一个新的区域存放新对象,对对象中的子对象进行递归拷贝,拷贝前后的两个对象互不影响。......

2022-06-23 13:43:15 307

原创 简单模拟vue2 vue3双向绑定

vue2vue3

2022-06-23 13:42:04 125

原创 判断一个值不等于undefind,null,空字符串的es6写法

属实是

2022-06-13 18:13:56 1904

原创 前端文件流下载

需要注意和后端发起请求的时候 responseType 需要是 ‘blob’const blob = resconst reader = new FileReader()reader.readAsDataURL(blob)reader.onload = function (ev) { if (window.navigator.msSaveOrOpenBlob) { // 兼容ie11 const blobObject = new Blob([blob]) window.n

2022-05-30 14:27:26 139

原创 为什么tcp 三次握手 四次挥手

我想握手好的可以握手好,那我们握手,tcp连接成功我想分手好,我准备一下分手我准备好分手了行,那我们分手,tcp断开连接

2022-05-25 17:26:53 93

原创 html2canvas 来 生成 canvas 元素,然后 利用 canvas 的 toDataURL(‘image/jpeg’) 方法,将 canvas 元素 生成 图片base64格式的 url

<template> <div> <!-- 卡片部分 --> <button @click="generateImages">点击生成图片并将图片保存在本地</button> <div class="card"> <div class="card_head"> <p>姓名:</p> <p>张三丰</p>

2022-05-05 16:02:03 1315

原创 flex 布局下 子元素图片变形问题

flex-shrink: 0;指定了 flex 元素的收缩规则默认值为1 不想缩放设置为0就可以了当宽度超出时会更具flex-shrink的属性值进行计算

2022-04-18 19:57:12 593

原创 CSS实现中间粗两头细的线条

CSS实现中间粗两头细的线条通过给一个盒子添加渐变背景的方式来实现画一条中间粗两头细的线条的效果<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-

2022-04-12 16:07:57 1191

原创 已知树形结构 和其中一项id 变为id数组方法

export function idList (data, val, id = 'id', children = 'children') { let res = [] idListFromTree(data, val, res, id) return res}/** * @param {*} data * @param {*} id * @param {*} pid */function idListFromTree (data, val, res = [], id = 'id'

2022-03-30 14:09:30 294 1

原创 vue+element上传excel文件类型

<template> <div> <el-upload drag :limit=limitNum :auto-upload="false" accept=".xlsx" :action="UploadUrl()" :before-upload="beforeUploadFile" :on-change="fileChange" :on-exceed="exc

2022-03-24 14:29:54 470

原创 vue(前端)字符串导出.txt文件

首先安装 FileSaver包,npm install file-saver --save引入 import {saveAs} from 'file-saver';将字符串转为Blob对象let str = new Blob(['要导出的字符串'], {type: 'text/plain;charset=utf-8'});saveAs(str, `导出文件时的名字.txt`);注意这里要手动写上文件的后缀名...

2022-03-23 15:37:35 1322 1

原创 用es6的Array.reduce()方法计算一个字符串中每个字符出现的次数和字符串翻转

用es6的Array.reduce()方法计算一个字符串中每个字符出现的次数有一道经典的字符串处理的问题,统计一个字符串中每个字符出现的次数。用es6的Array.reduce()函数配合“…”扩展符号可以更方便的处理该问题。结果:{ a: 5, b: 2, n: 5, c: 2 }字符串翻转.split(’’).reverse().join(’’);...

2022-03-22 15:30:32 794

原创 for循环里面写settimeout bug怎么解决

1.闭包for (var i=1; i<=5; i++) {(function(j) {setTimeout( function timer() {console.log( j );}, j1000 );})(i);}2.拆分结构function timer(i) {setTimeout( console.log( i ), i1000 );}for (var i=1; i<=5;i++) {timer(i);}3.let 块级作用域for (let i=1; i

2022-03-22 15:27:36 224

原创 moment 秒级时间戳转格式

let time = 秒级时间戳 //十位moment.unix(time).format('YYYY-MM-DD HH:mm:ss')

2022-03-17 15:46:33 1771

原创 base64下载图片到浏览器

<el-button size="small" @click="exportDatas(scope.row.img)" type="info" plain>下载</el-button> //下载 exportDatas: function (img) { var xhr = new XMLHttpRequest(); xhr.open('get', img); xhr.responseType = 'blob';

2022-03-17 11:39:26 300

原创 面试题前端

https://juejin.cn/post/7073869980411887652

2022-03-15 17:59:22 123

原创 uniapp获取dom到顶部的距离

var that=this;const query = uni.createSelectorQuery().in(that);query.select(‘元素’).boundingClientRect(data => {console.log(data)}).exec();

2022-03-07 14:11:18 710

原创 宏任务微任务

https://www.zhihu.com/zvideo/1398641333070794752

2022-03-07 10:58:29 49

原创 关于小程序和h5兼容性问题

今天发版小程序和h5,因为用的uniapp可以一套代码两个环境,一共有三个兼容性问题。1.window 在小程序无法使用2.v-show 在小程序无法使用3.不知道为啥我在h5的很多请求为undefind和null的时候在请求的时候为空字符串,在小程序为undefind和null,导致报错,第一次遇到这种兼容性问题,有大佬知道嘛...

2022-03-03 18:22:46 873

原创 正则表达验证邮箱

2022-03-03 09:42:52 79

原创 uniapp tabbar 被 软键盘顶起

data() { return { documentHeight: document.documentElement.clientHeight, //默认屏幕高度 }; }, mounted() { // window.onresize监听页面高度的变化 window.onresize = () => { return (() => { if (this.documentHeight > document.do.

2022-03-01 16:24:19 637

原创 git 误提交怎么办

1、找到你误提交之前的版本号2、git revert -n 版本号3、git commit -m xxxx 提交4、git push 推送到远程OK,版本还原了

2022-03-01 12:24:22 475

原创 es6 html5 css3 常用

let const 箭头函数 await aynsc 模板字符串 模块化 map set …

2022-02-28 11:06:16 57

原创 element表单校验优雅写法

2022-02-24 17:15:31 253

原创 vue2 computed 和 watch区别

computed 一般用于简化模板中变量的调用watch 一般用于监听数据的变化,做一些逻辑处理或者异步处理,可以深度监听、立即执行computed 和 watch 在源码里都是通过 Watcher 类创建出来的初始化时,先创建 computed 再创建 watch 。数据改变时,先执行 computed 再执行 watch...

2022-02-23 10:17:04 636

原创 vue 加控制阀

@click="handle && move()" 可以在data 中定义 handle 通过控制它的true或者false 来控制是否执行move()事件

2022-02-18 16:10:41 384

原创 js 节流

var text = document.getElementById('write');function trol(fn,delay){ var pre = new Date(); return function () { var now = new Date(); if(now-pre >= delay){ fn(); pre = new Date(); } }}functi

2022-02-18 14:52:49 298

原创 ElementUI中el-radio再次点击取消选中

<el-radio-group v-model="radio"> <el-radio :label="1" @click.native.prevent="radioClick(1)">备选项</el-radio> </el-radio-group>//prevent阻止默认事件data(){ return{ radio: '', }}radioClick (e) { e === this

2022-02-17 18:08:04 2466

原创 判断数组对象 中 对象中是否为空 是否继续执行代码

今天碰到了这个问题,举个例子let peopleArr = [{name:'张三',info:'爱打篮球'},{name:'李四',info:''}]现在我们要判断peopleArr中是否有人的info是空的,如果有进行提示,没有的话继续执行接下来的代码,我们应该如何判断呢,我按照正常思路来想就是如果要判断一个数组对象中的所有对象那么肯定需要循环,但是如果在循环里面判断,会出现问题,所以应该怎么办呢let a = falsepeopleArr.forEach(item=>{ if(

2022-02-11 17:47:34 502

原创 js 防抖

// 手写防抖---简单实现 document.querySelectorAll('button')[0].addEventListener('click', debounce(handle, 1000)) function handle() {//要防抖的函数 console.log("东泽好帅啊") } function debounce(fn, delay) { // 只产生一个闭包 let timeId = null.

2022-02-10 15:12:24 498

原创 登陆实现流程(前端角度)

1、第一次登录的时候,前端调后端的登陆接口,发送用户名和密码2、后端收到请求,验证用户名和密码,验证成功,就给前端返回一个token3、前端拿到token,将token存储到localStorage和vuex中,并跳转路由页面4、前端每次跳转路由,就判断 localStroage 中有无 token ,没有就跳转到登录页面,有则跳转到对应路由页面5、每次调后端接口,都要在请求头中加token6、后端判断请求头中有无token,有token,就拿到token并验证token,验证成功就返回数据,验证

2022-02-08 15:57:50 4077

原创 eventloop

https://www.bilibili.com/video/BV1bE411B7ez?spm_id_from=333.1007.top_right_bar_window_default_collection.content.click

2022-01-21 09:29:19 501

原创 pormise

文章推荐:V8 Promise源码全面解读,其实你对Promise一无所知 https://juejin.cn/post/7055202073511460895?share_token=78fda953-8497-46b1-9e5b-0b797db52b21

2022-01-20 17:18:44 272

原创 uniapp 跳转到外部链接

window.location.href = 'https://' + link一定要加 https://

2022-01-19 13:32:00 2482 1

原创 js 对象拼接

var target = {a : 1}; //目标对象var source1 = {b : 2}; //源对象1var source2 = {c : 3}; //源对象2var source3 = {c : 4}; //源对象3,和source2中的对象有同名属性cObject.assign(target,source1,source2,source3);//结果如下://{a:1,b:2,c:4}...

2022-01-19 10:06:22 2340

原创 js 根据对象数组中一个属性大小排序

var sdts = [ {name:"小明",age:30}, {name:"小红",age:20}, {name:"小花",age:40} ] function compare(property,desc) { return function (a, b) { var value1 = a[property]; var value2 = b[property];

2022-01-18 17:46:04 892

原创 html css 保留多行+。。。

text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;

2022-01-18 15:23:35 164

大转盘抽奖来回转vue文件

大转盘抽奖来回转vue文件

2022-03-22

大转盘抽奖css文件风光转

大转盘抽奖css文件风光转

2022-03-22

空空如也

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

TA关注的人

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