- 博客(19)
- 收藏
- 关注
原创 js实现拖拽移动元素:mousedown\mousemove\mouseup
【代码】js实现拖拽移动元素:mousedown\mousemove\mouseup。
2022-08-31 16:31:41
626
1
原创 uniapp使用原生隐私政策配置
在HbuilderX开发时会有manifest,json文件,点击manifest.json,勾选使用原生隐私政策提示框。接着会生成androidPriwacy.json文件,配置可参考下图。
2022-08-16 16:16:25
623
2
原创 什么是重绘与回流?
简单来说就是重新绘画,当给一个元素更换颜色、更换背景,虽然不会影响页面布局,但是颜色或背景变了,就会重新渲染页面,这就是重绘。当增加或删除dom节点,或者给元素修改宽高时,会改变页面布局,那么就会重新构造dom树然后再次进行渲染,这就是回流。1.多个属性尽量使用简写,例如:boder可以代替boder-width、boder-color、boder-style2.创建多个dom节点时,使用documentfragment创建3.避免使用table布局4.避免设置多层内联样式,避免节点层级过多5.避免
2022-07-09 14:05:53
12638
原创 什么是diff算法?
真实dom是一个对象,浏览器上渲染的各种节点就是dom,属性非常多,每一次对dom进行修改时,dom都会再次从头渲染一遍,如果频繁的操作dom,非常损耗性能,甚至可能出现页面卡顿的情况。 于是有了虚拟dom,虚拟dom是js里object类型的对象,也是真实dom的副本,它在内部生成,不像真实dom有那么多的属性,并且无法在浏览器中显示。 一开始会先创建dom树然后渲染到html页面中,当操作真实dom的时候,它会重新构造一个新的dom结构然后在上面操作,然后用新构造的dom结构
2022-07-09 10:37:15
183
原创 Uncaught Error: “reducer“ is a required argument, and must be a function or an object of functions
在执行上面这段代码时报错reducer必须为函数或者对象,但是log出来我的reducer就是个函数。 加个大括号解决,大意了,下不为例。
2022-07-08 11:34:42
1259
原创 Warning: ReactDOM.render is no longer supported in React 18. Use createRoot instead.
在启动react项目时报出错误: React 18 不再支持ReactDOM,需要使用createRoot代替,在替换之前程序还会以React 17 来运行,不受影响。 虽然不受影响但是看到报错真难受,去index入口文件把ReactDOM替换掉即可。...
2022-07-07 08:51:26
720
原创 vue2数据双向绑定的原理
vue2的数据双向绑定原理使用的是es5的数据劫持object.defineProperty,如果读取数据就会触发get,修改数据就会触发set,达到数据和视图的响应和更新,但是因为js固有的特性,不能动态添加和删除属性,需要调用$set、$delete这些方法来实现动态添加双向绑定属性。 vue3的数据双向绑定使用的是es6的Proxy配合Reflect实现的,他比起数据劫持可以监听到对象添加属性和删除属性...
2022-07-06 17:35:40
816
原创 什么是路由守卫?有什么用?
路由守卫是路由在跳转前、后过程中的一些钩子函数,这些函数可以让你操作一些其他的事,在后台管理中设置权限时经常看到,在实现路由跳转前校验是否有权限,有权限就可以通过,反之就会被执行其他操作,如返回首页。#路由守卫参数:to:目标路由对象from:即将要离开的路由对象next():放行1.全局守卫:所有的路由切换都会执行,一般写在路由配置文件中router.beforeEach(fn) :to\from\next()router.afterEach(fn):to\fromrouter.beforeResolve
2022-07-06 17:20:04
6281
原创 vuex中mutations和actions的区别是什么?
vuex中的state数据不允许直接赋值修改,所以vuex创建了mutations用于定义方法来修改state中的数据,但是只能同步修改。如果异步修改会造成调试工具跟实际数据不对应,所以vuex又提供了actions,用于异步触发mutations中的方法。 总结:mutations中的方法可以直接修改state数据,actions是异步执行mutations中的方法,所以它俩都可以改数据,区别是一个是同步一个是异步。...
2022-07-06 16:45:55
1540
原创 VUE的性能优化有哪些方法?
1.路由懒加载2.图片懒加载3.第三方组件库按需引入4.keep-alive缓存页面5.使用v-show复用DOM6.避免v-if与v-for同时使用
2022-07-05 08:48:01
829
原创 git的使用
下载与安装 下载地址:Git for Windows配置个人信息(名字与邮箱) 使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名 git的使用(命令行)创建本地仓库 :把当前目录变成一个git仓库,并自动创建分支 工作区与版本库概念创建(修改)文件添加到暂存区:提交到版本库:查看仓库变更状态:正在上传…重新上传取消创建SSH Key: 以上命令会在windows当前用户的目录里创建目录,里面有(私钥)和(公钥)两个文件添加公钥
2022-07-01 09:53:17
229
原创 字符串有哪些方法?
1.length()返回字符串的长度2.indexOf()返回字符串指定文本首次出现的下标3.lastIndexOf()返回字符串指定文本在字符串中最后一次出现的下标.4.seach()搜索特定值的字符串,并返回匹配的位置5.slice(开始位置,结束位置)用于提取字符串的某个部分并在新字符串中返回被提取的部分6.substring(开始位置,结束位置)与slice差不多不同之处在于不接受负的索引7.substr(开始位置,结束位置)与slice差不多,不同之处在于第二个参数规定被提取部分
2022-06-22 00:09:38
192
原创 VUE生命周期和钩子函数
生命周期首先先new Vue,这个时候还不算生命周期的开始;然后初始化事件,这个时候才算是生命周期的开始;再接着将数据挂载到实例中(所谓的挂载就是把数据放进去然后进行监听);然后检查是否有el参数,如果有就继续,如果没有就等待实例.$mount(el)参数过来,接着检查是否有template,如果有就将template进行编译,如果没有就编译el.outerHTML为要显示的内容;检查完template编译以后,接下来就给实例挂载$el参数,$el的值就是要显示的内容,将$el替换掉整个el,然后就可以访问
2022-06-16 14:53:50
135
原创 数组有哪些方法?
1.push(尾部添加)2.unshift(头部添加)3.pop(尾部删除)4.shift(头部删除)5.sort(对数组排序)6.join(分隔)7.reverse(反转)8.splice(增删改)9.map(遍历数组返回新数组)10.forEach(遍历每个元素,没有返回值)11.every(对数组每一项进行判断,所有都为true时返回true,有一个false时则直接返回false并停止遍历)12.some(对每一项判断,有一个满足条件则返回
2022-06-16 10:36:58
124
原创 作用域和作用域链
作用域就是指在程序中定义变量的区域,这个区域里的变量不会泄露在外面影响外部环境,也可以理解为变量与函数可以访问的范围,一般有全局作用域和局部作用域,全局作用域是最大的作用域。作用域链是在一个函数里声明了另一个函数,就会形成嵌套,当嵌套时内部函数只能在外层函数作用域里执行,在内部函数执行的过程中如果要引入某个变量,会先在当前作用域里寻找,如果没找到就会到上一层级的作用域里找,直到找到全局作用域,这种链式的查询关系就叫作用域链。......
2022-06-14 16:12:22
89
原创 基本数据类型和引用数据类型的区别
一、.存储上的区别1.基本数据类型是存放在栈中的简单数据段。2.引用数据类型是存放在堆内存中的对象,在栈内存中存放的是堆内存中具体内容的引用地址,通过这个地址可以快速查找到对象。二、比较上的区别1.基本数据类型的比较是值的比较var a = '{}'var b = '{}'console.log(a == b) //true直接比较值,看起来一样那么他就是一样的。2.引用类型的比较是引用的比较var a = {}var b = {}console.log(a == b) //false问:看起来明明一样为什
2022-06-14 15:28:31
18135
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人