- 博客(46)
- 收藏
- 关注
原创 简单加密问题
post请求对请求体加密以后,参数整体变成了一个string,提交请求时axios自动将请求头(Request Headers)中的‘Content-Type’值修改为了‘application/x-www-form-urlencoded’,参数变成了formData形式,后端无法正常接收。 解决:原因是后端拿到数据以后,做了一次decodeURL的操作,导致无法解密。 解决:对加密后的post请求的请求头做单独处理,修改’Content-Type’post请求,对整个body体进行加密。
2023-07-19 11:02:22
168
原创 npm 删除 node_modules 文件夹
node_modules 文件夹不能手动删除,但是可以用npm提供的一个包来把它删除npm 提供一个包 remove-node-modules 来帮助删除 node_modules。
2023-07-17 15:20:16
1988
原创 HTTP强缓存和协商缓存
浏览器缓存是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一页面时,浏览器就可以直接从本地磁盘加载文档。浏览器缓存是Web性能优化的重要方式。那么浏览器缓存的过程究竟是怎么样的呢?
2023-02-23 16:14:14
292
原创 HTTP缓存
缓存,性能优化的最有效方法之一,作为一名开发人员,缓存是必须掌握的一块知识。浏览器缓存机制有四个方面:Memory Cache、Service Worker Cache、HTTP Cache、Push Cache。对于前端开发工程师来说,比较熟悉的就是HTTP缓存,这也是每一个前端工程师都要掌握的知识点
2022-05-13 14:49:53
134
原创 git统计项目代码修改行数
git统计项目代码修改行数1、前往git本地项目路径下2、右键打开(Git Bash)工具3、输入以下命令进行不同方式统计根据用户名进行统计git log --author="username" --pretty=tformat: --numstat | \awk '{ add += $1; subs += $2; loc += $1 - $2 } END \{ printf "added lines: %s, removed lines: %s, total lines: %s\n", ad
2022-04-28 14:58:47
3604
原创 ES6模块
ES6模块如前面所述,CommonJS和AMD都是运行时加载。ES6在语言规格层面上实现了模块功能,是编译时加载,完全可以取代现有的CommonJS和AMD规范,可以成为浏览器和服务器通用的模块解决方案。这里关于ES6模块我们项目里使用非常多,所以详细讲解。ES6模块使用——export(1)导出一个变量export var name = 'pengpeng';(2)导出一个函数export function foo(x, y){}(3)常用导出方式(推荐)// person.jsco
2022-04-21 10:15:50
1956
转载 exports与module.exports的区别
exports与module.exports的区别牢记一条原则:无论使用 exports暴露成员,或是 module.exports 暴露成员,最终暴露的结果,都是以 module.exports 所指向的对象为准。1.module 对象看一下 module对象长什么样子2.module.exports 和 exports 的联系在 module 对象中,包含 exports 属性,而我们就是通过这个属性(module.exports),向外暴露(共享)成员的。exports 是 node 为
2022-04-20 19:01:09
190
原创 Object.create()与new object()和{}的区别
Object.create()与new object()和{}的区别对比Object.create(null) 创建的对象是一个空对象,在该对象上没有继承 Object.prototype 原型链上的属性或者方法,例如:toString(), hasOwnProperty()等方法Object.create()方法接受两个参数:Object.create(obj,propertiesObject) ;obj:一个对象,应该是新创建的对象的原型。propertiesObject:可选。该参数对象是一
2022-03-30 15:34:37
422
原创 CSS 实现多行文本展开收起效果
CSS 实现多行文本展开收起效果本文主要实现重点:如何实现 展开 和 收起 切换按钮的文字环绕效果如何实现多行文本溢出省略效果如何实现 展开 和 收起 的状态or文字切换初始 html:<div class="text"> <label class="btn">展开</label> <span> 但听得蹄声如雷,十余乘马疾风般卷上山来。马上乘客一色都是玄色薄毡大氅, 里面玄色布衣,但见人似虎,马如龙,人既矫捷,马亦雄
2022-03-21 14:36:09
1261
1
原创 结束端口占用
结束端口占用问题:在使用IDEA开发过程中,卡死导致IDEA闪退,端口未释放。导致再次启动时端口被占用,无法正常启动使用windows命令行查看占用的端口信息,然后强制关闭步骤: 1、netstat -aon|findstr “8080” //查看端口 2、tasklist|findstr “17944” //根据PID找到对应的程序 3、taskkill /f /t /im java.exe //强制终止程序C:\Users\Daniel>netstat -aon | finds
2022-01-14 17:10:24
8380
原创 Object.prototype.toString.call(obj)检测对象类型
Object.prototype.toString.call(obj)检测对象类型?最近做了做一道js面试:使用typeof bar === "object"检测”bar”是否为对象有什么缺点?如何避免?这是一个十分常见的问题,用 typeof 是否能准确判断一个对象变量,答案是否定的,null 的结果也是object,数组的结果也是 object,有时候我们需要的是 “纯粹” 的 object 对象。如何避免呢?比较好的方式是:console.log(Object.prototype.toStrin
2022-01-06 10:31:43
237
转载 Array.prototype.slice.call()方法的理解
Array.prototype.slice.call()方法的理解在看别人代码时,发现有这么个写法:[].slice.call(arguments, 0),这到底是什么意思呢?1、基础1)slice() 方法可从已有的数组中返回选定的元素。start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从
2022-01-05 17:05:12
213
原创 requestAnimationFrame
requestAnimationFrame问题源于一道面试题:用js实现一个无限循环的动画。首先想到的是定时器!doctype html><html lang="en"><head> <title>Document</title> <style> #e{ width: 100px; height: 100px; backgroun
2021-12-29 11:54:31
378
原创 Vue.set()和this.$set()
从vue源码解析Vue.set()和this.$set()Vue.set()和this.$set()应用的场景平时做项目的时候难免不会对 数组或者对象 进行这样的操作,结果发现,怎么页面没有重新渲染。 data: { arr: [1, 2], obj1: { a: 3 } }});vueInstance.$data.arr[0] = 3; // 这种骚操作页面不会重新渲染vueInstance.$data.obj1.b = 3; // 这种骚操作页面不会重新渲染查了一下
2021-12-28 14:49:20
723
原创 js DOM
js DOMJavaScript = ES + DOM + BOM。Document在浏览器中,文档对象document表示整个HTML页面,它是window对象的属性,是一个全局对象。文档信息document对象包含一些页面共有信息,如:URL、domain和referrer。URL:当前页面的完整URLdomain:页面的域名referrer:链接到当前页面的那个页面的URL。如果当前页面没有来源,则referrer属性是空字符串。这些信息都可以在请求的HTTP头部信息中获取,只是
2021-12-28 11:59:56
358
原创 JS获取元素的大小(高度和宽度)
JS获取元素的大小(高度和宽度)在 JavaScript中,使用下面 3 组属性可以获取元素的高度和宽度。如表所示。元素尺寸属性说明clientWidth获取元素可视部分的宽度,即 CSS 的 width 和 padding 属性值之和,元素边框和滚动条不包括在内,也不包含任何可能的滚动区域clientHeight获取元素可视部分的高度,即 CSS 的 height 和 padding 属性值之和,元素边框和滚动条不包括在内,也不包含任何可能的滚动区域offsetWi
2021-12-24 16:58:28
29637
原创 JS获取鼠标位置(鼠标坐标)
JS获取鼠标位置(鼠标坐标)在 JavaScript中,当事件发生时,获取鼠标的位置是件很重要的事件。由于浏览器的不兼容性,不同浏览器分别在各自事件对象中定义了不同的属性,说明如下表所示。这些属性都是以像素值定义了鼠标指针的坐标,但是由于它们参照的坐标系不同,导致精确计算鼠标的位置比较麻烦。属性说明兼容性clientX以浏览器窗口左上顶角为原点,定位 x 轴坐标所有浏览器,不兼容 SafariclientY以浏览器窗口左上顶角为原点,定位 y 轴坐标所有浏览器,不兼容
2021-12-24 16:44:55
9305
原创 关于鼠标事件的screenY,pageY,clientY,layerY,offsetY属性
关于鼠标事件的screenY,pageY,clientY,layerY,offsetY属性screenY 鼠标相对于显示器屏幕左上角的偏移pageY 鼠标相对于页面左上角的偏移 (其值不会受滚动条的影响) IE9之下并不支持这个属性 但是可以写点代码计算出来。 jQuery中的实现:// Calculate pageX/Y if missing and clientX/Y availableif ( event.pag
2021-12-24 16:39:12
248
原创 document.documentElement和document.body的区别
document.documentElement和document.body的区别网页中获取滚动条卷去部分的高度,可以通过 document.body.scrollTop 来获取,比如使div跟着滚动条滚动:<div id="div" style="width:100px;height:100px;background:#ccc;position:absolute;"></div>window.onscroll = function (){ var div = doc
2021-12-24 16:33:31
211
转载 jq版本搜索文本关键字高亮
<!DOCTYPE html><html lang=“en”><head> <meta charset=“UTF-8”> <meta name=“viewport” content=“width=device-width, initial-scale=1.0”> <title>Document</title> <style> .highlight {
2021-12-23 11:42:33
148
原创 Array总结
Array(数组)对象数组是值的有序集合,数组中的每个值称为一个元素,每个元素在数组中都有一个数字位置,称为索引,索引从 0 开始,依次递增.创建 Array 对象的语法格式如下:var arr = new Array(values);var arr = Array(values);其中,values 为数组中各个元素组成的列表,多个元素之间使用逗号分隔。var fruits = new Array( "apple", "orange", "mango" );console.log(frui
2021-12-23 11:35:11
112
原创 字符串总结
字符串方法总结创建 String 对象的语法格式如下:var val = new String(value);var val = String(value);其中参数 value 为要创建的字符串或字符串对象。String 对象中的属性属性描述constructor获取创建此对象的 String() 函数的引用length获取字符串的长度prototype通过该属性您可以向对象中添加属性和方法示例代码如下:var str = new String(
2021-12-23 11:34:07
381
原创 FF代替IE的window.event的方法,不用带参
FF代替IE的window.event的方法,不用带参event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等;event对象只在事件发生的过程中才有效。firefox里的event跟IE里的不同,IE里的是全局变量,随时可用;firefox里的要用参数引导才能用,是运行时的临时变量。**在IE/Opera中是window.event,在Firefox中是event;**而事件的对象,在IE中是window.event.srcElement,在Firefox中是even
2021-12-23 11:33:01
294
原创 vue中如何使用event对象
vue中如何使用event对象一、event 对象(一)事件的 event 对象你说你是搞前端的,那么你肯定就知道事件,知道事件,你就肯定知道 event 对象吧?各种的库、框架多少都有针对 event 对象的处理。比如 jquery,通过它内部进行一定的封装,我们开发的时候,就无需关注 event 对象的部分兼容性问题。最典型的,如果我们要阻止默认事件,在 chrome 等浏览器中,我们可能要写一个:event.preventDefault();而在 IE 中,我们则需要写:event.re
2021-12-23 11:30:59
1776
1
原创 js事件处理函数传值
js事件处理函数传值https://blog.youkuaiyun.com/a1059526327/article/details/106392305/1. HTML事件处理程序在最早的HTML事件处理程序中我们可以直接传入多个参数:<div id="btn" onclick="clickBtn(event,2)">任务总数</div><script> function clickBtn(event,val){ console.log(event)
2021-12-23 11:29:53
877
原创 js中事件对象event
js中事件对象eventhttps://blog.youkuaiyun.com/lhjuejiang/article/details/79455801一、Event对象Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。事件通常与函数结合使用,函数不会在事件发生前被执行!当一个事件发生的时候,和当前这个对象发生的这个事件有关的一些详细信息(包括导致事件的元素、事件的类型、以及其它与特定事件相关的信息等。这个对象是在执行事件时,浏览器通过函数传递过来的。)都会被
2021-12-23 11:28:44
512
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人