自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大湿胸的博客

仅仅是学习总结

  • 博客(60)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 js深拷贝

JSON.parse问题 时间对象变成字符串 RegExp和Error对象会变成空对象 函数和undefied会丢失 有NaN,infinity为变成nul 如果对象由构造函数生成会丢失constructor属性的指向,指向Object深拷贝实现思路: 判断是否是对象 是对象, 判断是否是数组,递归调用添加到数组 判断是否是null,正则对象,日期对象,错误对象,是则直接赋值 ...

2021-03-15 23:40:24 191

原创 nvm node版本管理器

网上下载nvm安装程序 安装完后cmd输入 nvm 查看是否安装成功常用命令nvm list node版本列表 nvm install version 安装node版本 nvm uninstall version 卸载node版本 nvm use version 选择node版本

2021-03-15 22:55:24 164

原创 排序算法-快速排序

快速排序,是选择一个数作为基数(通常是中间数),然后把比他小的数放左边,比他大的数放右边,再递归调用方法处理左右两侧的数据;直至传入的数组只有一个元素为止function quickSort(arr) { var len=arr.length; if (len <= 1) { return arr; } var pivotIndex = Math.floor(len / 2); var pivot = arr.splice(pivotInd

2021-02-23 00:12:40 167

原创 排序算法-归并排序

将数组一分为二,直至只有一个元素function mergeSort(arr){ let len=arr.length; if(len<2){ return arr; } var middle=Math.floor(len/2), left=arr.slice(0,middle), right=arr.slice(middle); return merge(mergeSort(left),mergeSort(right));

2021-02-19 21:21:49 91

原创 排序算法-冒泡排序

相邻两个数比较,如果前面的数字大于后面的数则交换function sort(arr){ for(var i=0,len=arr.length;i<len-1;i++){ for(j=0;j<len-i-1;j++){ if(arr[j]>arr[i]){ let temp=arr[i]; arr[i]=arr[j]; arr[j]=temp;

2021-02-19 21:09:45 91 2

原创 排序算法-希尔排序

又名缩小增量排序,插入排序缺点:每次只能将数据移动一位function sort(arr){ var len=arr.length; var increment=Math.floor(len/2); while(increment!=0){ for(var i=increment;i<len;i++){ var temp=arr[i]; for(var j=i-increment;j>=0&&

2021-02-19 21:04:38 81

原创 排序算法-插入排序

从数组第二个元素开始,将数组分为左边(已排序)和右边(未排序)两部分将基数和左边的数依次比较,遇到比其大的,则将比较数字往后移一位,反之将基数赋值给当前下标数字(比较数字的后一位)function sort(arr){ var len=arr.length; var temp;//基准数 for(var i=1;i<len;i++){ temp=arr[i]; for(var j=i;j>0&&temp<ar

2021-02-19 20:45:54 110 1

原创 排序算法-选择排序

从第一个元素开始,选择一个数作为基数,依次和后面的数作比较,如果比较数字比基数小时相互交换第一种:比较时直接交换function sort(arr){ let len=arr.length; for(let i=0;i<len-1;i++){ for(let j=i+1;j<len;j++){ if(arr[i]>arr[j]){ let temp=arr[i];

2021-02-19 20:27:35 77

原创 正则学习笔记

正则学习 https://developer.mozilla.org/zh-cn/docs/web/javascript/guide/regular_expressions https://www.runoob.com/regexp/regexp-metachar.html ?: '123212'.replace(/1(?:2)/g,'a') //a32a 匹配的是所有12字符串 ?= '123212'.replace(/1(?=2)/.

2021-01-22 22:39:43 90

原创 typescript学习记录

变量类型:boolean,string,number数组 :number[] :Array<number>、元组:已知类型和数量的数组object,any,枚举 enum Color{red='red',blue='blue'}null,undefined,void,never类型断言(as语法,尖括号语法)变量声明:let const 解构 ...接口:可选属性只读属性(与const区别)额外的属性检查(接口定义参数时,用字符串索引签名或类型断言)

2021-01-18 08:34:19 87

原创 同时渲染大量数据优化-虚拟列表

在网页里面,在某个可视容器内(某个div)一次性渲染所有数据,其实用户也只能看见一部分数据,其余得通过滚动来查看;那么我们可以只渲染可见部分数据,不可见部分数据不渲染,通过上下padding来进行占位使其可以滚动;滚动得时候不断计算可所需展示数据的开始下标和结束下标来截取可视数据;<!doctype html><html lang="zh"><head> <meta charset="UTF-8"> <meta nam

2021-01-08 02:02:53 312

原创 同时渲染大量数据优化-时间分片

一次性渲染:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <

2021-01-08 01:13:09 198

原创 vue插槽

vue插槽内容简单总结

2020-11-17 00:15:20 102

原创 vue2兼容ie10+

1.安装babel-polyfill:npm install babel-polyfill --save-dev2.在main.js中引入babel-polyfill:import'babel-polyfill'3.修改webpack.base.conf.js配置文件的入口配置entry: { app: ["babel-polyfill", "./src/main.js"],}

2020-07-28 00:15:33 1246

原创 webpack编译时去掉console,debugger,注释

修改build/webpack.prod.conf.jsnew UglifyJsPlugin({ uglifyOptions: { compress: { warnings: false, drop_debugger: true, //去除debugger drop_console: true, //去除console

2020-07-16 02:09:22 1815

原创 vue项目webpack使用cdn

1.在index.html中引入vue和vue-router<script src="https://cdn.bootcss.com/vue/2.6.8/vue.min.js"></script><script src="https://cdn.bootcss.com/vue-router/3.0.2/vue-router.min.js"></script>2.在build文件夹中的webpack.base.conf.js添加externals: .

2020-07-15 01:00:05 2071

原创 使用webpack构建雪碧图

新建一个文件spritesmith,初始化npm init -y;生成一个package.json文件 然后安装:npm install --save-dev webpack webpack-cli webpack-spritesmith 根目录下建一个webpack.config.js文件var path = require('path');var SpritesmithPlugin = require('webpack-spritesmith');module.exports = {

2020-07-14 03:15:31 526

原创 浏览器渲染过程及性能优化

渲染网页,浏览器需要处理一系列的中间过程,优化性能就是了解这个过程中发生了生什么-即CRP(critical rendering path,关键渲染路径)浏览器渲染流程: 先生成dom树 请求css,构建css对象模型,即cssOM dom树和cssOM树组合起来构建一个渲染树,最终输出一个包含所有可见节点及样式的渲染树 构建渲染树的过程: 1.从dom树根节点开始遍历每个可见节点 不可见节点(meta,s.

2020-07-07 01:24:11 491 3

原创 h5配置微信分享接口

自定义微信分享内容:1.首先你需要一个认证过的企业号,在使用微信JS-SDK对应的JS接口前,需确保已获得使用对应JS接口的权限,可以在微信官方JS-SDK文档查看2.引入js-sdk:http://res.wx.qq.com/open/js/jweixin-1.2.0.js3.配置参数:签名、生成签名的时间戳、生成签名的随机串一般是由后台生成返回的wx.config({ ...

2020-03-02 10:47:19 848

原创 npm install moduleName --save、--save-dev、 -g、npm moduleName的区别

npm install moduleName --save(用于正式环境)将项目模块写入到package.json的dependencies节点 安装模块到当前node_modules文件夹下 运行npm install时,会将模块下载到当前node_modules目录下npm install moduleName --save-dev(用于开发环境)将项目模块写入到package....

2020-01-06 16:49:34 611

原创 如何下载后台接口返回的流数据

downloadexcel (data) { // 下载excel文件 //data接口返回的流数据 if (!data) { return } let url = window.URL.createObjectURL(new Blob([data])) let...

2019-12-05 15:58:24 2062

原创 ios微信小程序点击自带关闭按钮之后再调用play()不能播放音频(安卓可以)

是因为ios自带关闭按钮之后,全局的BackgroundAudioManager的src属性也被清空了,需要重新赋值src属性

2019-12-02 16:45:08 406

原创 微信小程序swiper自适应高度

swiper组件如果没有高度是不显示的,网上有的朋友会用js去动态获取图片高度再给swiper设置高度(这种方法繁琐)我下面用css来让swiper自适应(bannerList为存放图片的数组,backgroundImg为图片地址):1.在外侧给个容器,设置position为relative2.取出第一个图片,设置宽度100%,mode为widthFix(高度自适应)3.给swip...

2019-11-26 16:24:37 1908

原创 微信小程序不能使用async await的解决方案

1.下载regenerator-runtime库http://nodejs999.com/regenerator-runtime.rar然后将整个文件夹拷贝到小程序的utils文件夹中(可以是任意位置)2.在需要使用async函数的地方引入jslet regeneratorRuntime = require("../../utils/regenerator-runtime/run...

2019-11-20 15:33:00 3969

原创 关于cookie在项目中使用的一些问题

1.本地打开文件(本地打开的html文件)不能设置cookie,必须在服务器(本地服务器也可以)才能设置cookie2.ajax请求携带cookie的问题我是使用axios,网上说需要设置axios.default.withCredentials=true;(但是我不设置也能携带cookie);请求接口的域名必须和存储cookie的域名一致才能成功携带cookie;服务器端响应头消...

2019-11-07 11:38:50 485

原创 vue加载前显示{{}}的解决办法

是因为在vue初始化之前,浏览器并不能识别{{}}这种写法,只会渲染成文本解决办法:1.添加v-cloak指令<div id="app" v-cloak></div><style> [v-cloak] { display: none; }</style>2.使用v-html或者v-text&l...

2019-11-05 13:29:55 1221

原创 微信小程序自定义导航栏

自定义导航栏需要在app.json中设置window的属性navigationStyle:custom导航栏主要分为状态栏+标题栏;导航栏=标题栏+状态栏状态栏高度可以通过wx.getSystemInfoSync().statusBarHeight获取;主要是标题栏(胶囊按钮)ios和安卓有差异;标题栏高度=胶囊高度+状态栏到胶囊按钮间距*2;经过对比发现:胶囊高度=...

2019-11-05 09:58:52 1021

原创 数据库输出的换行符在页面不能正确显示换行

方法1:直接在外层容器设置css属性,white-space:pre-wrap方法2:换行符在js中用\r\n表示,拿到文字内容,使用字符串的replace方法全局替换即可,string.replace(/\r\n/g,'</br>')...

2019-10-10 11:16:48 1562

转载 HTML meta 详解

HTML meta 详解作者总结得不错

2019-08-22 17:32:03 92

原创 js事件自动触发

有些时候会遇到网页加载完成自动执行事件的情况,这里以点击事件为例:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1...

2019-07-29 16:27:40 3282

原创 js实现复制文本

方法一:使用range和seletion对象<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <m...

2019-07-05 12:48:36 2039

原创 js点击元素之外的地方隐藏该元素

有时候我们会有这种情况,点击按钮(或者指定元素)显示一个菜单栏,点击按钮和菜单栏外的区域隐藏菜单栏;主要运用阻止事件冒泡来实现;下面是全部代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" con...

2019-04-28 11:11:12 4606

原创 axios上传文件

主要是用FormData对象的使用<template> <div class="cancelRequest"> <div>姓名:<input type="text" v-model="name"></div> <div>头像:<input type="file" ref="f...

2019-03-20 10:59:46 18910 4

原创 axios取消请求

有时候我们需要在输入框实时查询数据,但是由于是异步请求,有可能前面的请求结果会慢于后面的请求导致我们的请求结果错误,而且一直请求增加了网站负担,所以需要在连续输入时取消前面的请求,只请求最后一次<template> <div class="cancelRequest"> <input type="text" v-model="value"...

2019-03-20 10:50:33 650

原创 本地上传图片在线预览

主要就是运用URL.createObjectURL()方法创建临时的图片地址<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-sc...

2019-03-20 10:25:15 388

原创 vue+koa+mysql交互案例

此文主要记录学习过程koa中结合vue和mysql,进行数据交互的案例,vue和mysql的相关知识不做介绍,自行安装整体目录结构:koa文件夹是主要内容,在vue项目的根目录添加一个koa文件夹用于放置服务端的代码db/index.js主要是放置连接数据库的配置文件,代码如下:let mysql=require('mysql')let connection=mysql.cre...

2019-03-19 14:52:22 1128

原创 原型链图谱(包含es6类和类的继承)

2018-11-21 16:47:49 414 1

原创 前端video标签播放m3u8格式视频

直接使用video.js插件就行了video插件用法:https://www.awaimai.com/2053.html以下是全部代码:<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <title>前端播放m3u8格式视...

2018-08-10 16:55:36 60616 19

原创 自定义video的controls

主要用到的video属性和方法:duration  视频总时长,单位秒currentTime  当前已播放视频时长,单位秒muted  设置视频静音(true||false)ontimeupdate  当视频当前播放时长改变时触发的事件play()  播放视频pause()  暂停视频接下来上代码(播放按钮和静音键样式比较粗糙,看功能就行)&lt;!DOCTYPE...

2018-08-08 16:33:31 9909

原创 js获取元素的高度宽度

1)clientWidth和clientHeight该属性指的是元素的可视部分宽度和高度,即padding+content,如果没有滚动条,即为元素设定的高度和宽度,如果出现滚动条,滚动条会遮盖元素的宽高,那么该属性就是其本来宽高减去滚动条的宽高2)offsetWidth和offsetHeight这一对属性指的是元素的border+padding+content的宽度和高度,该属性和其...

2018-07-19 15:47:46 1481

javaScript语言精粹

凝练内容,总结性的书籍。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2018-05-31

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

TA关注的人

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