自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mac [zsh-mongodb] command not found: mongo

mongodb在zsh中的坑

2022-10-11 04:53:13 2289 1

原创 【git回退】master分支如何回退到某次merge提交

这个是一个CSDN都没有好的解决方式的一个情况,最后在外网加上摸索直接解锁啦1、背景我和另外的一个同学维护同一个仓库,我维护commit为A,对方维护的commit为B提交,我的项目已经到master分支上,但是还需要优化一个问题,B同时也提交到master分支上(某种情况,他不知道我提交了),问题来了,两个代码就在一起了,他向把我的代码去掉,然后他上,我的还需要修复处理。2、思考我需要把A的内容干掉,让B和线上版本的内容上线,那怎么干呢,由于A的代码开发了3个月,时间跨度比较长那我们是不是.

2022-04-27 19:37:41 1665

原创 【CSS】两行超出部分...展示,&一行超出...展示,亲测有效

美丽的UI小姐姐总是让你…展示,不知道有什么是见不得人的,那我今天帮你做个遮羞布一行超出…展示overflow: hidden;white-space: nowrap;text-overflow: ellipsis;差不多就是这样的效果,我这里展示的是车牌一行超出…展示width:300px // 这个宽度要确定才可以给你隐藏text-overflow ellipsisdisplay -webkit-box-webkit-line-clamp 2-webkit-box-orie.

2022-04-11 16:33:13 423

原创 【zsh】command not found: node

背景:最新不是换了个新点脑吗,我就喜欢用oh-my-zsh, 但是什么弄好了之后,发现来个node -v,就来了command not found: node ,我就无语了直接把下面代码放进去就好,现在对mac的系统相对要熟悉点export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm[ -s "$NVM_DIR/bash_completion" ] &.

2022-04-11 15:23:33 7508 1

原创 【mac电脑更新就这样了】Can‘t update: not a git repository. mac安装git 和 homebrew

mac电脑系统更新会导致git被删除,然后我这样就可以啦

2022-03-16 23:24:37 1737

转载 【element-ui】组件库里面的`el-collapse-transition`居然不生效

最近在做一个属于我内部的组件库,开发到了 collapse-transition的时候,发现直接搬过来的动画实现不了,那可着急死我了,我因为我写错了,然后在代码里面去打断点,发现根本没有进入beforeEnter里面,意思就是这个组件就没有生效,那么看看如何解决的1、原因问题出现在 el-collapse-transition 组件上,但是移植时代码已饿了么的源码一致,实现方式是通过vue的函数式组件的方式来实现的,对于函数式组件也不是很了解。多方查找原因,发现出在这个原来是ES6中class类的.

2022-01-26 17:31:36 3067

原创 【如何分享Facebook和Whatsapp可以展示到图片和title】

首先给大家上两张图片,就可以进入今天的主题,先把这两张图放在下面吧,主要是图太大。如大家所见,我们可以可以看到文章的title和图片,是不是很神奇,我们第一时间可以回猜测这些信息是主动暴露给url上,但是错了,url上没有放任何的关于文章的信息,那么究竟放在哪里呢?当然是meta标签里面,因为meta是html文件和外界交流的桥梁,当我们分享给WhatsApp或者Facebook的连接时,可以首先是去解析文章中的一些主动暴露的资源,然后展示出来。 <meta property="og:url".

2021-12-26 13:00:45 1935

原创 【ejs落地方案】官网用ejs做其实也很简单---ejs 静态页面

最近在做官网,首先想到用这个EJS,有句话怎么说的,万物都可以ejs,是吧!1、ejs特点:快速编译和渲染简单的模板标签自定义标记分隔符支持文本包含支持浏览器端和服务器端模板静态缓存支持express视图系统2、ejs常用标签:写ejs基本上都要用 <% %>包起来,这是语言规则<% %> 流程控制标签 ,for循环,if else等<%= %> 输出内容标签 text文本内容,像v-text的能力<%- %>输出.

2021-11-17 18:29:33 910

原创 【多个文件引入】手写一个require.context的方法

这个方法并不是require,js上面的一个方法,而是v也在node的环境自己封装了一层,那么我们也可以自己实现一下,常常用来多文件引入directory:要搜索的文件夹目录useSubdirectories:是否还应该搜索它的子目录regExp:一个匹配文件的正则表达式if (typeof require.context === 'undefined') { const fs = require('fs'); const path = require('path'); req.

2021-11-08 15:16:51 373

原创 【移动端组件】tab栏切换---组件1/30个组件····疯狂造轮子给自己用

switchTab切换<template> <div class="tab-cut"> <div class="common-title" v-for="(item, index) in list" :key="item.title" :style="{color: index === activeIndex ? (item.activeColor || '#0067FF') : (item.color || '#000000'),fontWeight: inde

2021-10-29 17:42:26 271

原创 【两端同码】判断移动端还是PC端超级好用的方法

const mqlMedia = window.matchMedia('(orientation: portrait)')function onMatchMediaChange(mql = window.matchMedia('(orientation: portrait)')) { if (mql.matches) { //竖屏 return 'portrait' } else { //横屏 return 'horizontal' } } // 输出当前屏幕模式const

2021-10-29 17:38:14 209

原创 node安装canvas安卓不了

用这个命令试试,亲测有效yarn add canvas --canvas_binary_host_mirror=https://npm.taobao.org/mirrors/node-canvas-prebuilt/

2021-10-19 10:10:57 151

原创 【CSS】一行超出...隐藏,两行超出...隐藏

美丽的UI小姐姐总是让你…展示,不知道有什么是见不得人的,那我今天帮你做个遮羞布一行超出…展示overflow: hidden;white-space: nowrap;text-overflow: ellipsis;差不多就是这样的效果,我这里展示的是车牌一行超出…展示width:300px // 这个宽度要确定才可以给你隐藏text-overflow ellipsisdisplay -webkit-box-webkit-line-clamp 2-webkit-box-orie.

2021-09-26 20:56:44 912

原创 H5移动端实现pad弹窗手上滑上移动,手下滑下移动(和高德地图上的展示框类似)

一、背景最近承接了一个需求,需要在H5页面移动端实现手滑动上移动,下滑下移动,我一看就用到了滑动的三个事件touchstart、touchmove、touchend,顾名思义,touchstart就是滑动起始的触发事件,touchmove就是滑动时的触发事件,touchend就是脱离滑动的触发事件我录制的一个效果图,网上很少见的哟二、心路只要在移动起始位置记录下触击位置,在移动中计算偏移的量,不断的给偏移位置改值,就可以达到滚动的效果,只要在结束的位置做边界的限制和初始化操作就可以满足到我的一

2021-09-12 14:57:30 2307

原创 【前端-经验】如果没有background-size,怎么实现评星效果,我同事我都不教TA

一上来我们就放一张图,最近在做端上页面的开发,框架是我们公司自己写的,所以很多的css和标准的W3C并没有对其,那就上面一张图的框框区域,你会怎么实现// html:<view class="star-image"> <view class="star_light_content" :style="{width: `${starListData.fast_serve_average_score*1/5.0*100}%`}"></view> <!..

2021-08-03 15:49:21 161

原创 【git指令】git删除本地分支和远程分支,*学会了这个你就是git大牛*

分支多了,我们就要删除了,对吧,如果大家需要创建,那我给你一个传送门吧,写的特别好快速新建分支删除本地、远程分支1、切换一个非删除的分支git checkout otherBranch2、删除本地分支git branch -d deleteBranch3、删除远程分支git push --delete origin deleteBranch4、查看有没有删除git brnach -a这个可以了解下,不要求背下来,下课...

2021-07-22 11:12:06 147

原创 【git指令】git快速创建本地分支和远程分支并关联,*学会了这个你就是git大牛*

最近我一直探索怎么样两行命令创建新分支,并且同步到远程分支一、创建本地、远程分支并关联1、本地切一个新分支git checkout -b newBranch2、创建 远程分支并关联git push --set-upstream origin newBranch:newBranch之前我们需要执行两行命令git branch --set-upstream-to=origin/newBranch newBranchgit push --set-upstream origin newBra.

2021-07-22 11:05:42 190

原创 【前端JS】promise多任务高并发处理

代码class PromisePool { constructor(max, fn) { this.max = max; //最大并发量 this.fn = fn; //自定义的请求函数 this.pool = []; //并发池 this.urls = []; //剩余的请求地址 this.callback = callback; } start(urls) { this.urls.

2021-07-14 20:21:49 1653 3

原创 【前端JS】生成 PDF并写入到文件夹,最后压缩下载

背景: 因为后端的同学比较忙,没时间接这个需求,但是这个又急的用,哎呀,还是想到我们前端,所以我们前端还是牛plus。这个实现呢,我之前也只是听过,没有自己去做,今天我们一起探讨下这个一长串的需求拆封任务需要生成的PDF页面编写 --> 生成多个PDF 并写入到文件夹 -->压缩并下载实现步骤1、需要生成的PDF页面编写上图页面左侧是操作区域 ,右侧是展示区域。在展示区域的跟标签加一个id标识(便于后期生成PDF)2、生成多个PDF ,并写入到文件夹在promise多..

2021-07-14 20:03:16 1305 6

原创 【前端js】xlsx插件时间转换‘xxxx-xx-xx’给我转成了五位数,咋整,我来帮你转回来吧~

背景: 最近做xlsx文件读取的时候,时间给我转成了五位数,我懵懂了,最后还是解决了,下面分享下我的方法根据度娘得知Excel存储的日期是从1900年1月1日开始按天数来计算的,也就是说1900年1月1日在Excel中是1。所以我们用new Date(xxx)的时候一直是1970年什么的。如果我们算出这边的一个差值就可以把这个问题处理了export function formatePDFData(date) { let d = new Date(); d.setTime(Math.round.

2021-07-14 18:08:53 676

原创 把canvas导出为图像

<!DOCTYPE html><html><head> <meta http-equiv="X-UA-Compatible" content="chrome=IE8"> <meta http-equiv="Content-type" content="text/html;charset=UTF-8"> <title>Canvas Clip Demo</title></head>&l

2021-03-21 19:32:52 552

原创 js算法 找到字符串中的最长连续字符串长度

这样的算法不陌生吧,但是有没有更好的方式呢,可以一起交流下,这个好像是滴滴的一个简单算法题题目:给出一个字符串,找出最长不连续字符串的长度是多少解体思路:上来就是遍历,然后就是把数组没有的数据放进去,如果有的,就把之前的一个数据到第一个都去掉,最后找最大值var lengthOfLongestSubstring = function(s) {let arr = [], max = 0for(let i = 0; i < s.length; i++) {let index = arr..

2021-03-18 09:49:47 1378

原创 XSS和CRSF攻击

1、什么是XSS和CRSF攻击?XSS:即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。大多数XSS攻击的主要方式是嵌入一段远程或者第三方域上的JS代码。实际上是在目标网站的作用域下执行了这段js代码。CSRF(Cross Site Request Forgery,跨站请求伪造):字面理解意思就是在别的站点伪造了一个请求。专业术语来说就是在受害者访问一个网站时,其 C

2021-03-14 19:27:06 256

原创 html+css 三列布局之经典布局、圣杯布局、双飞翼布局

前言在开发过程中,经常会碰到三列布局,就是左右两侧定,中间自适应,如果想看两列布局,前面文章有写两列布局上代码<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <style> * { margin: 0;

2021-03-14 11:51:55 135

原创 html 两列布局之宽度高度自适应解析(妙)

前言在我们整个PC端的项目上,有很多的主页面布局采用的是两列布局,左侧定,右侧自适应;或者右侧定,左侧自适应上代码<!DOCTYPE html><html><head> <meta charset="utf-8"> <title></title> <style> body { color: #fff; } .fix

2021-03-14 11:39:52 495

原创 git-回退 git-reset

最近写代码把错误的代码提交了到了线上,提交后才发现错了,那我如何去回退呢第一步: get log找到提交唯一码(commit id)(红色圈出来了)第二部: 回退本地环境代码git reset --hard [commit id] 回退到制定commit区域git reset --hard HEAD^ 回退到上一个版本git reset --hard HEAD^^ 回退到上上一个版本git reset --hard HEAD~[n] 回退到上n个版本第三部: 强制推送到远程.

2021-03-05 18:43:59 72

原创 js对象diff判断

function deepEqual(object1, object2) { const keys1 = Object.keys(object1); const keys2 = Object.keys(object2); if (keys1.length !== keys2.length) { return false; } for (const key of keys1) { const val1 = object1[key]; const val2 = o

2020-12-10 10:50:54 1251

原创 umi+react添加顶部进度条

进度条之前做vue的,直接用Nprogress,抛出的方法还是比较多的,react需要用顶部进度条,可以用Pace,相比比较简单,而且利于操作第一步:编写JS进入Pace源码把拷贝的代码放到你的目录文件中,我放的是我的util目录(这个没所谓)第二步:编写less选择你喜欢的加载动画,点击箭头指向的方向就行,放入progress.less(文件名随便取,引入对了就行)目录像这样子:第三步:引入js less// app.ts文件import Pace from

2020-11-03 09:49:39 730

原创 js 替换数组对象的属性名

我们第一时间就想到用JSON.parse的形式,但是这种不是很合理法一:用基础的遍历办法(针对已知的替换)const jobList = [ { name: 'Tom', work: 'FE engineer' }, { name: 'Tiny', work: 'Accounting' }, { name: 'Bob', work: 'Chief' }]function changeKeys(list){ list.forEach(elem => {.

2020-10-29 11:24:43 3280

原创 umi+react动态权限控制

刚换了一家公司,一直以来都没有更新,sorry,最近一直在学习新的前端技术。今天我要分享的是umi权限控制,目前给到了dva方法都比较好,但是每个公司的路由权限控制也是不一样的,所以要根据具体的项目情况进行分析方法1:app.ts的内置函数patchRouter处理app.ts首先,我们在内置方法render去拿权限接口export async function render(oldRender) { const authRoutesResult = await getUserAuth.

2020-10-22 17:19:12 4359 3

原创 TypeScript运行环境

TS VS JS1、应用程序2、超集 less scss css3、跨平台 且开源4、开始于js 终止于js 很多的语法和书写的格式都是采用js5、重用js,甚至可以引用js流行库 echats6、Typescript 提供了类,接口和模块7、typescript是强类型的语言如何提供ts环境前提的你的node环境????1、全局安装typescript npm install typescript -g 通过tsc --version来检查是否安装好2、简单初始化 npm

2020-09-17 14:44:03 653

原创 js之数组降维且flat源码(百度面试)

我们待会些flat源码,先分析下数据降维我们怎么去处理?法一 用flat方法let ary = [1, [2, [3, [4, 5]]], 6,{name:1}];console.log(ary.flat(Infinity)) // flat不会改变原来数组法二: 用join+splite方法 (只针对基本数据类型)let ary = [1, [2, [3, [4, 5]]], 6, 'sss'];console.log(ary.join(',').splite(',')) // fla

2020-09-12 20:16:44 558

原创 npm install --save和--save-dev和--global有什么区别

npm install moduleName 命令安装模块到项目node_modules目录下。不会将模块依赖写入devDependencies或dependencies 节点。运行 npm install 初始化项目时不会下载模块。npm install -g moduleName 命令安装模块到全局,不会在项目node_modules目录中保存模块包。不会将模块依赖写入 devDependencies或dependencies 节点。运行 npm install 初始化项目时不

2020-09-03 19:05:36 405

原创 js 求数组中出现最多的一个元素(字节面试)

function findMost(arr) { if (!arr.length) return if (arr.length === 1) return arr[0] var res = {} // 遍历数组 for (var i=0,l=arr.length;i<l;i++) { if (!res[arr[i]]) { res[arr[i]] = 1 } else { res[

2020-08-27 18:23:01 395

原创 js 把烤串命名转换为驼峰命名(快手面试题)

1、用普通的方法function transformStr ( str ) { if(str == '') { throw new Error('不符合规范') } var arr = str.split('-');//split是分隔字符串 var newStr = arr[0]; for(var i = 1; i<arr.length; i++){ newStr += (arr[i].substr(0,1).toLo.

2020-08-26 19:46:13 2766

原创 js 数字转换为金钱格式(快手面试)

法一:用toLocalString()function toMoney(num, decimal){ num = num.toFixed(decimal); num = parseFloat(num) num = num.toLocaleString(); return num;//返回的是字符串23,245.12保留2位小数}console.log(toMoney(-98654.3))用正则匹配function transMoney(num, decimal) { var n

2020-08-26 11:03:16 2607 1

原创 前端缓存策略

HTTP缓存缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。而http缓存主要针如css,js,图片等更新频率不大的静态文件。缓存的优缺点优点加快网页打开速度减少网络宽带的消耗减轻服务器端的压力缺点服务器缓存中的数据变了,浏览器不知道数据是否发生改变。不利于做信息采集前端缓存HTTP缓存HTTP缓存规则主要在HTTP协议头和HTML的

2020-08-25 18:23:16 1170

原创 前端文件下载并设置Header

在开发的过程中有的时候因为下载接口后端不是直接给你一个地址,而是给你一个responseType为Blob类型,那我们就需要给他进行下载处理function downLoadByUrl(url){ var xhr = new XMLHttpRequest(); //GET请求,请求路径url,async(是否异步) xhr.open('GET', url, true); //设置请求头参数的方式,如果没有可忽略此行代码 /.

2020-08-25 17:03:44 3611

原创 JSON.parse(JSON.stringify(obj))实现深拷贝的坑

说到JSON.parse(JSON.stringify(obj)),真的是太多的坑了,主要是这个坑你不知道你就完了,这个面试经常被问到,除了把深拷贝的源码写出来就是问JSON.parse(JSON.stringify(obj))的坑了,今天就谈一谈这个该死的坑其实JSON.parse(JSON.stringify(obj))简而言之就是stringify部分把它冰冻起来,然后pasrse部分给他解冻罢了,但是有些精华的部分就被丢失了。那今天主要找一下那些东西容易被丢失,是蛋白质还是脂肪还是无机盐???.

2020-08-24 19:45:38 705

原创 vue+element-ui处理弹出消息限制

在开发的过程中Message弹出过多会影响到页面展示,所以有的时候我们只支持一个弹框的出现,我们可以对其进行限制import Vue from "vue"import { Message } from 'element-ui'// 为了实现Class的私有属性const showMessage = Symbol('showMessage')/** * 重写ElementUI的Message * single默认值true,因为项目需求,默认只弹出一个,可以根据实际需要设置 * op.

2020-08-24 16:43:23 604 1

空空如也

空空如也

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

TA关注的人

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