- 博客(15)
- 收藏
- 关注
原创 实现深拷贝的方法
1.JSON对象 let deepCloneObj = JSON.parse(JSON.stringify(obj)) 2.递归函数 function cloneDeep (source) { if (!this.isObject(source)) return source; // 非对象返回自身 let target = Array.isArray(source) ? [] : {} for (let key in source) { if (source.hasO
2021-09-09 22:15:07
173
原创 v-if和v-show的区别
v-if和v-show的区别 简单来说:v-if初始渲染较快,切换耗费性能,v-show初始渲染较慢,切换成本低 渲染方式: v-if:根据条件,动态向DOM树中增加或删除DOM元素 v-show:根据条件,通过设置DOM元素的display样式控制显示或隐藏 性能消耗 v-if: 性能消耗高,不适合做大量的切换操作 v-show:性能消耗低,适合做大量的切换操作 ...
2021-09-09 22:13:35
234
原创 关于高德地图Web端 js API Geolocation.getCurrentPosition获取定位失败的兼容方案
项目中用到高德地图 Web 端定位API,使用过程中发现chrome浏览器总是获取失败,Edge浏览器正常获取。基本报的是 Get geolocation time out 错误,提高定位超时时间偶尔会报Get geolocation failed 官方文档: Geolocation.getCurrentPosition获取精确位置的流程是什么样的? 1、在PC端,因为原生接口成功率很低,JS-API会优先调用精确IP定位服务,在IP定位失败的时候,尝试使用浏览器原生定位接口进行定位,如果原生定位.
2021-04-04 01:30:33
11221
3
原创 visibility=hidden, opacity=0,display:none的区别
visibility=hidden MDN官方解释:CSS属性 visibility 显示或隐藏元素而不更改文档的布局。该属性还可以隐藏 table中的行或列。 visibility=hidden,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已经绑定的事件 opacity=0 opacity=0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定一些事件,如click事件,那么点击该区域,也能触发点击事件的 <style> .box { width:
2021-03-31 20:54:19
774
原创 promise.all和promise.race的区别
promis.all Promise.all() 方法接收一个promise的iterable类型(Array,Map,Set),并且只返回一个Promise实例 请求成功: 返回一个新的promise,值是调用成功结果的一个数组 let p1 = new Promise((resolve, reject) => { resolve('OK') }) let p2 = Promise.resolve('成功') let p3 = Promise.resolve('Success') const
2021-03-31 18:57:55
270
原创 jsonp的原理及在vue中封装jsonp方法
一篇写的很通俗易懂的jsonp文章 https://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 在Vue中封装的jsonp方法 import originJsonp from 'jsonp' export default function jsonp(url, data, option) { url += (url.indexOf('?') < 0 ? '?' : '&') + param(d
2021-03-30 14:49:05
213
原创 css动画与js动画的区别
css动画与js动画的区别 css动画: css实现的是补间动画,只需确定第一帧和最后一帧的关键位置,或者增加几个关键帧的位置即可实现 优点: 性能消耗较小 代码相对简单,性能调优方向固定 浏览器可以对动画进行优化。 缺点: 只适合一些简单的动画,无法做较为复杂的动画 会出现浏览器兼容性问题 js动画 js动画是逐帧动画,是在时间帧上逐帧绘制帧内容(类似于电影播放模式) 优点: 适合做一些复杂的动画,可操作性高,能控制动画暂停,取消,终止等 兼容性较高 缺点: 性能消耗较大,容易出现阻
2021-03-29 23:58:36
367
原创 vue中计算属性computed和监听器watch
对于任何复杂逻辑,你都应当使用计算属性。计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。
2021-03-29 23:35:13
174
原创 计算属性computed
计算属性computed和监听器watch的区别 引用官方文档例子: computed: 模板的设计初衷就是用于简单运算的,如果在模板中放入太多的逻辑会让模板过重且难以维护。例如: <div id="example"> {{ message.split('').reverse().join('') }} </div> 此时模板中的表达式不再是简单的声明式逻辑,同时如果想在模板中多次复用,就会显得更加难以维护。所以,对于任何复杂逻辑,使用计算属性computed更为合适。 例子:
2021-03-29 23:18:29
117
原创 DIV的常用的几种绝对居中方法
DIV的常用的几种绝对居中方法 方法一:利用margin和绝对定位一 优点: 1.支持跨浏览器,包括IE8-IE10 缺点: 1.必须声明宽高度。 <div class="container"> <div class="box"></div> </div> .container { position: relative; width: 200px; height: 200px; background-color: pink; } .cont
2021-03-29 22:36:38
1105
原创 Cannot find module ‘webpack-cli/bin/config-yargs‘解决办法
webpack.config.js配置完成后npm run dev发现报错: Error: Cannot find module 'webpack-cli/bin/config-yargs’ 查阅资料后发现是由于 webpack 5.x版本 与webpack-cli 4.x版本不兼容报错 解决方案: 将webpack-cli 退回到3.x版本即可解决! ...
2020-12-19 17:32:17
300
1
原创 关于mui框架上拉加载出现错误,endPullupToRefresh is not a function的解决方法
在项目中使用MUI的上拉加载组件时发现报错,百度也没找到类似的文章,自己记录一下! 原始代码 //获取地址栏中哪个用户输入的关键字 var keyword = getParmsByUrl(location.href, 'keyword'); // 默认加载页数 var page = 1; //页面中的数据 var html = ''; //价格排序规则 升序 var priceSort = 1; //销量排序规则 升序 var saleSort = 1; $(function () { mui.i
2020-10-16 17:58:48
1769
2
原创 mongoDB再次为数据库添加账号(已创建过超级管理员)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章项目场景:问题描述:原因分析:解决方案: 项目场景: 为已创建过超级管理员的MongoDB数据库新增数据库以及账号 问题描述: 新增数据库并添加账号失败 原因分析: 由于此前已经创建了超级管理员,此时未登陆超级管理员就直接新增数据库并添加账号,导致添加失败! 解决方案: 切换到admin数据库 use admin 使用db.auth(‘账号’,‘密码’)登陆 db.auth(‘root’,‘root’) 切换到新增的
2020-08-27 23:30:19
355
原创 DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
//引入mongoose const mongoose = require(‘mongoose’); //连接数据库 mongoose.set(‘useCreateIndex’, true);//加入这行代码即可解决 //当mongoose升级到5.X版本时 该写 mongoose.connect(‘mongodb://localhost/blog’, {useNewUrlParser: true, useUnifiedTopology: true}) .then(() => console.log(
2020-07-29 23:17:03
978
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人