- 博客(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
138
原创 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
180
原创 关于高德地图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
10543
3
原创 visibility=hidden, opacity=0,display:none的区别
visibility=hiddenMDN官方解释:CSS属性 visibility 显示或隐藏元素而不更改文档的布局。该属性还可以隐藏 table中的行或列。visibility=hidden,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已经绑定的事件opacity=0opacity=0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定一些事件,如click事件,那么点击该区域,也能触发点击事件的<style>.box { width:
2021-03-31 20:54:19
693
原创 promise.all和promise.race的区别
promis.allPromise.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
211
原创 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
181
原创 css动画与js动画的区别
css动画与js动画的区别css动画:css实现的是补间动画,只需确定第一帧和最后一帧的关键位置,或者增加几个关键帧的位置即可实现优点:性能消耗较小代码相对简单,性能调优方向固定浏览器可以对动画进行优化。缺点:只适合一些简单的动画,无法做较为复杂的动画会出现浏览器兼容性问题js动画js动画是逐帧动画,是在时间帧上逐帧绘制帧内容(类似于电影播放模式)优点:适合做一些复杂的动画,可操作性高,能控制动画暂停,取消,终止等兼容性较高缺点:性能消耗较大,容易出现阻
2021-03-29 23:58:36
327
原创 vue中计算属性computed和监听器watch
对于任何复杂逻辑,你都应当使用计算属性。计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。
2021-03-29 23:35:13
133
原创 计算属性computed
计算属性computed和监听器watch的区别引用官方文档例子:computed:模板的设计初衷就是用于简单运算的,如果在模板中放入太多的逻辑会让模板过重且难以维护。例如:<div id="example"> {{ message.split('').reverse().join('') }}</div>此时模板中的表达式不再是简单的声明式逻辑,同时如果想在模板中多次复用,就会显得更加难以维护。所以,对于任何复杂逻辑,使用计算属性computed更为合适。例子:
2021-03-29 23:18:29
90
原创 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
1013
原创 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
248
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
1664
2
原创 mongoDB再次为数据库添加账号(已创建过超级管理员)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章项目场景:问题描述:原因分析:解决方案:项目场景:为已创建过超级管理员的MongoDB数据库新增数据库以及账号问题描述:新增数据库并添加账号失败原因分析:由于此前已经创建了超级管理员,此时未登陆超级管理员就直接新增数据库并添加账号,导致添加失败!解决方案:切换到admin数据库 use admin使用db.auth(‘账号’,‘密码’)登陆 db.auth(‘root’,‘root’)切换到新增的
2020-08-27 23:30:19
324
原创 DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
//引入mongooseconst 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
924
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人