自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 Vue2数据响应式再次理解

vue2 响应式,js数组作为参数传递

2024-06-14 11:26:07 216

原创 实现卡片的展开缩放动画

原理,外层包裹一个元素,子元素分别是展开和收起的元素,然后对展开的元素添加动画,动画内容是随时间变化,将卡片的transform:rotateX属性进行调整,因为改变的是子元素的旋转,父元素高度并没变,不会影响列表大体布局。

2024-06-12 21:13:52 429

原创 FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory 解决办法

powershell。

2024-04-18 21:26:59 433

原创 将字符串解析为对象bug

比如把内部的单引号变为双引号,比如把未加括号的键加上双引号。

2024-04-10 10:15:39 205

原创 解决git upstream refname ambiguous

git update-ref -d 删除重复的。git checkout -b 可以切换分支。git show-ref 找到重复的源头。git branch 可以添加本地分支。最后解决重复之后,本地和远程建立联系。

2024-04-09 09:51:42 159

原创 前端 基于响应式数据 实现拖拽排序和移动

其中,start是drag起始元素,over会在经过的每个元素时触发,enter会在初次进入时触发,drag会在左键拖拽后直到拖拽事件完成前高频率触发,drop会在左键松开后放置元素触发。坑2:禁止图标如何去掉:e.dataTransfer.dropEffect 和e.dataTransfer.effectAllowed两个属性在start的时候设置一下。坑1:drop事件触发不了:元素默认不允许其他元素drop到自身,这个会在over事件默认设置,所以我们需要在这事件preventDefault一下。

2024-04-05 12:48:02 321

原创 vue key的bug

vue,key,bug

2024-03-21 12:30:25 394

原创 实现一个可自适应高度,带有左上角图标,右侧按钮自适应位置的输入框

样式分开写,会造成两次回流,所以如果是增加高度,没问题。删除文字导致的高度减少,由于auto的原因,scrollTop也会减少。3. 将输入框和按钮分别设置float:left和right。父元素设置BFC即可达到右侧按钮位置自适应。1.高度自适应:监听input事件,将输入框的高度设置为auto再设置为acrollHeight即可。3.右侧的按钮位置,当最开始的一行没有挤占到时,位于右侧。当一行挤占到了,按钮换行到下方。要点:1.高度自适应,当换行时,高度增加,当删减一定也会高度减少。

2024-02-20 13:54:37 390

原创 js实现恢复选区

js实现选区恢复。选中一段文字之后点击其他区域选区不消失。

2024-02-20 13:42:03 425

原创 css字体渐变

background: linear-gradient(99.65deg, #ff5959 -3.13%, #9069ff 35.06%);margin-right: 12px;-webkit-background-clip: text;-webkit-text-fill-color: transparent;

2023-11-16 17:15:12 109

原创 React Native 学习 之 环境搭建(andoid)

安装安装包->设置下载需求,包括sdk,这一步比较重要,需要按照官网确定勾选住需要的的资源->为下载的sdk配置环境变量,这一步必须按照官网的要求去配置,因为编译过程用到的指令都和这个有关‘andiod开发底层需要java需要jdk,同时react native要求jdk 11,jdk下载教程网上很多,主要是要配置好环境变量,可以javac -version查看当前jdk版本。,会打开好几个窗口,其中一个metro窗口是提供对 js 代码进行实时打包处理服务的,输入r可以重新加载,a可以重新编译打包执行。

2023-10-16 16:02:25 560

原创 关于js操作元素进行滚动

js操作元素进行滚动,scrollTop,getBoundingClientRect

2023-09-27 10:50:07 615

原创 业务中关于响应式的闹剧

业务情景是往一个数组里面添加元素,每个元素都是一个对象,如果按照vue3的proxy去实现响应式,那肯定得对这个数组代理进行修改才能触发响应式系统的监听,但是,修改了原始传入的对象的属性,居然页面也可以更新!如果是vue2那就解释通了,因为vue仅仅是通过defineProperty来给原始对象加上get和set进行拦截,也就是我通过数组去访问添加的元素,还是直接访问元素,都是同一个对象的引用,vue2内部的深层递归嵌套保证了我改变对象的某个值,还是会能够监听到这个变化去渲染界面。舒服了,终于搞清楚了。

2023-09-14 15:35:32 94

原创 js函数或者对象方法调用

函数或者对象中的方法调用主要有以下几种这种调用即函数是运行在对象上的,this绑定在对象上。

2023-08-24 11:51:12 471

原创 深拷贝浅拷贝

js中数据类型包括基本数据类型和引用数据类型,基本数据类型存储在栈中,引用数据类型存储在堆中。

2023-08-24 11:16:35 71

原创 8/23背包

0-1背包:一维的话,dp[j]代表j的容量所能装的最大价值;上面两题,都是从数组中挑选数来求和,区别在于第一个需要求所有的方法,第二个只需要有就可以,外层循环是挑选物品。内层遍历所有容量的可能性;倒序是因为从前到后的话,对于某个物品会重复计算,从后到前不会(计算就是依赖前面的,所以肯定是从往前才不会有影响),每次计算都会考虑带不带之前的物品。确定dp数组以及下标的含义01背包中,dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。本题中每一个元素的数值既是重量,也是价值。

2023-08-23 16:19:43 64

原创 8/22 动态规划:最长子序列,最大子数组和

【代码】8/22 动态规划:最长子序列,最大子数组和。

2023-08-22 17:35:33 57

原创 vue中事件循环,任务队列

vue事件循环,任务队列

2023-08-21 09:34:04 184

原创 vue中的new vue发生了什么?第一次渲染到页面发生了什么?

vue初始化各个生命周期对应发生了什么,怎么和响应式篇联系起来

2023-08-17 12:10:59 154

原创 vue中vnode和 diff

vue 的vnode和diff算法

2023-08-16 17:27:36 255

原创 vue3 性能提升

vue3性能优化:响应式系统,treeshaking,编译优化

2023-08-16 12:03:40 109

转载 vue3 中用proxy代替defineProperty 实现数据拦截

vue3 proxy实现数据响应式

2023-08-16 11:20:17 170

原创 Vue 中的数据拦截(Observer),构建依赖(Dep),添加订阅(Watcher),实现响应式

Vue响应式原理

2023-08-15 17:58:06 921

原创 8/15 动态规划

数学解法(穷举)vs 动态规划。set vs z查找。

2023-08-15 14:32:35 41

原创 8/14 动态规划

二维数组初始化,理清楚转移函数,准备初始值和存储table,注意边界,就可以写出答案了。l两种写法,迭代和递归。递归写法vs迭代写法。

2023-08-14 16:03:22 46

原创 8/11 符号串处理

遇到左括号,需要的右括号加2,如果右括号是奇数,右括号加一,need–;遇到括号,先判断need是否有剩余,有的话就–,没有的话,左括号需要加一个,need = 1。

2023-08-11 17:25:05 49

原创 react知识复习

一开始,两个组被渲染出来,然后,这两个组件的内置功能是累加器,点击组件会将内部的count+1,我们尝试将点击二个组件,它的值被渲染为1,然后再点击单选框,将showB置为false,这样第二个组件变成了{false},此时这个大组件返回的JSX将被转换为虚拟Dom传入fiber树并和第一次作比较,经过比较发现树上的某个App节点的第二个子节点发生了变化,不再是原来的组件了,于是回收它的state,这样,当再次点击单选框,渲染出来的第二个内的state不再是原来的1了,而是初始化为0;

2023-08-11 09:54:09 116

原创 8/9 二分查找

优化思路:还是全部用左右闭合写法吧,不容易错,然后两个函数可以合并成一个,或者这道题直接找到一个,往左右在搜索边界即可。思路有两种:找到左右上下界,判断长度;或者随便找到一个值,往两边扩展。踩坑:做除法运算要用Number.flow或者parseInt。主要逻辑不复杂·,主要是边界问题。

2023-08-09 18:23:31 47

原创 7/31双指针之滑动窗口

滑动窗口思路: 维护一个窗口的左右边界,新元素不断进入窗口,更新窗口信息,当窗口内元素满足条件,就代表找到了一个可行解,剩下的就是在可行解基础上找到一个最优解,每次收缩窗口的左边界,更新窗口信息。直到窗口右边界到达临界,所有的结果就出来了。:使用了js的map,因为没用过,不过感觉直接用对象写很多判断条件会简便很多,踩坑的话,一个是value,应该直接用need.size ,然后收缩窗口的条件是left<right,另外start和length的更新一定要判断是否是更优解。

2023-07-31 23:27:16 58

原创 7/30 链表和数组的双指针----快慢指针和左右指针

链表和数组的技巧----双指针

2023-07-30 22:12:39 65

原创 前端 异步请求数据 时机 以及 如何初始化

当用全局状态管理渲染用到的数据时,一开始数据还没有请求回来,此时具体组件里用到数据的某些属性就是会报错的,在数据未返回时,设置状态为loading,然后把dom结构替换成骨架屏,以免访问到不存在的数据;数据请求·返回之后,更改状态为finished,同时在组件内部监听这个状态变化(因为数据初始化一般是在setup函数内,也就是create函数内,所以最开始loading状态的时候不应该赋值给data,而是应该监听这个状态的变化,一旦发送变化,即代表数据以及返回,可以访问数据,此时再将数据赋值给data)。

2023-07-17 21:39:19 158 1

原创 vue3 中的组合式写法改为选项式写法

同时,父组件通过ref访问子组件时的option写法和vue2一样,在data中声明ref的值比如children,在子组件参数中通过ref=“children” 将子组件的引用绑定到父组件实例下,在mounted函数中赋值(mounted函数中的this指向组件实例,此时才会有子组件的引用)this.children =this.$ref.children,将子组件引用赋值给data中的变量,最后通过变量去在模板中使用子组件expose出来的内容。

2023-06-30 20:08:19 523

原创 编译原理 期末复习 第一章 引言

含义一:将源程序转换为目标程序的各个步骤对于具体的语言,比如C,会有预处理和链接。c语言提供的编译预处理功能主要有三种:宏定义、文件包含和条件编译。对源程序正式编译前由预处理程序完成的。预处理之后的文件.i结尾。连接过程将多个目标文以及所需的库文件(.so等)链接成最终的可执行文件(executable file)。具体的c语言编译过程可以看这篇文章含义二:将源程序转换为目标程序各阶段从左至右扫描字符流的源程序、分解构成源程序的字符串,识别出(拼)一个个的单词(Token/word)。两个字:分词。Tok

2023-06-15 15:57:19 300

原创 react 函数组件和类组件的简单区别

函数组件的根基是 FP(函数式编程),与数学中的函数思想类似,所以假定输入和输出存在某种关联的话,那么相同输入必定会有相同的输出,所谓纯粹。函数组件内能使用hook函数,逻辑可复用性强,没有继承能力;类组件能在生命周期不同阶段调用不同的函数,去实现特定的要求,有继承能力;从最新react18官方文档里面已经看不到类组件的介绍了,函数组件会成为一种趋势。类组件的根基是 OOP(面向对象编程),所以它会有继承,有内部状态管理等;react 函数组件和类组件简单区别。函数组件无生命周期,类组件有生命周期。

2023-06-14 16:19:27 71

原创 react 使用create-react-app搭建

对于入门来说,不太需要太多的工具链,所以用cra脚手架便可以快速搭建一个简单的react页面。生产级的react框架:Next.js,Gaysby.js,Remix.js等。cra脚手架,全称是create-react-app。

2023-06-14 16:03:36 490

原创 js中的promise与async函数一些细节

js的promise aynacawait的一些细节

2023-06-13 19:12:17 217

原创 js中的this

总结来说,也就一句话,函数中的this都是在函数执行的时候才会有确切的值,这个值由调用函数的对象决定,如果往上层找到最后,那this指向的就是window对象。call和apply是函数对象的两个成员函数,可以指定函数的执行环境,两个参数分别是调用函数的对象和函数的参数,区别在于参数的写法,apply传入一个参数数组,call则把参数按顺序传入。这个指向会随着执行环境的变化而变化。js中的this永远指向一个对象。

2023-06-02 11:38:00 50

原创 js闭包详解

首先抛出两个问题:js的闭包是什么?闭包的提出有什么作用?

2023-06-01 17:36:18 61

原创 变量提升以及函数提升

函数提升和变量提升其实差别不多,但是与变量提升不同的是,变量提升是只把声明语句提升到作用域最前面,函数提升则是把整个函数都提升到前面,相当于剪切过去,用类似的话就是函数的声明和定义都被提升了。针对var声明的变量而言,在其声明时会把变量的声明语句提升到作用域最前面,所以用var声明的变量可以在声明之前访问和使用且不报错。在作用域中,不管是变量还是函数,都会提升到作用域最开始的位置,不同的是,函数的提升后的位置是在变量提升后的位置之后的,没有变化,函数相当于对变量b赋值,这样,输出的结果就是函数本身。

2023-06-01 10:20:39 88

原创 let和var以及const

很多情况下,我们也希望类似这种块内的变量有自己的作用域,就像其他c++,java那样有自己的块级作用域,于是es6引进了let和const关键字,这两个关键字也和var类似用于变量和常量的声明定义,其中let用于变量的声明,const用于常量的声明。可能很多人会误以为结果是2,3,4,1,但是答案其实是2,3,4,5,因为对于for循环而言,用var声明的变量并不存在块级作用域,无论是在for{}块内还是在for()内声明的变量,其声明都会被提升到外部,所以上面的例子相当于。

2023-06-01 09:46:14 47

空空如也

空空如也

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

TA关注的人

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