自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vue从template模板到真实渲染在页面上发生了什么

Diff算法是虚拟DOM技术的核心,用于高效比较新旧虚拟DOM树的差异并最小化真实DOM操作第一步:diff算法的入口函数:patch函数,主要判断新旧节点是不是同一个节点,然后交由不同的逻辑进行处理。// 判断传入的第一个参数,是DOM节点还是虚拟节点// 传入的第一个参数是DOM节点,此时要包装成虚拟节点// 判断oldVnode和newVnode是不是同一个节点//是同一个节点,则进行精细化比较else {// 不是同一个节点,暴力插入新的,删除旧的。

2025-09-24 17:40:31 624 1

原创 vue生命周期

每个组件都相当于一个构造函数(方便复用),页面上创建一个组件,相当于这个组件的构造函数去new一个实例,在beforeCreate这个阶段,相当于构造函数刚开始执行,初始化还没有进行完毕。beforeUpdate: 当执行这个钩子时,页面中的显示的数据还是旧的,data中的数据是更新后的, 页面还没有和最新的数据保持同步。都是处于不可用状态。beforeMount:执行到这个钩子的时候,在内存中已经编译好了模板了,但是还没有挂载到页面中,此时,页面还是旧的。但是还没有挂载到页面中,此时,页面还是旧的。

2025-09-20 14:09:21 891

原创 原型和原型链详解&手写new操作符

那至于原型链的理解,就是将原型一层层的找下去,比如我们的实例对象有自己的原型对象,那我们这个原型对象也是一个对象,也有自己的_proto_属性去指向他的原型,这样一层层串起来就构成了原型链。首先:所有的js对象都有一个原型(当然,除了null),这个原型我们通过_proto_或者Object.getProtoTypeOf来访问,访问到的就是我们对象的原型。‌重写原型会切断现有实例与原型的联系‌:若直接替换prototype对象,已创建的实例仍指向旧原型,新实例指向新原型。

2025-09-18 00:14:27 800

原创 HTML简单面试题汇总【持续更新】

面试问问题总是会层层深入,因此这份面试题排序按照一个问题引发的另一个问题进行排序,比如问html语义化会引出回答SEO,SEO会引出爬虫问题,爬虫会引出权重问题,最终引出如何做优化的问题。

2025-09-17 17:11:33 559

原创 从浏览器角度讲进程和线程

查资料的过程中发现以谷歌浏览器为例,先后出现了网络进程和网络线程这两种说法,乍一看觉得不对,既然网络进程已经被独立出来,为什么别的进程(例如主进程)还要分出来一个网络线程呢?共享资源不同:多个进程间不能共享资源,每个进程有自己的堆、栈、虚存空间(页表)、文件描述符等信息,而线程可以共享进程资源文件(堆和方法区)。从属关系不同:进程是正在运行程序的实例,进程中包含了线程,而线程中不能包含进程。

2025-09-17 14:16:10 1073

原创 js中异步编程的实现方式【详细】

Promise是异步编程的一种解决方案,Promise 是一个构造函数,接收一个函数作为参数,返回一个 Promise 实例。首先,我已知promise的then方法返回的是一个新的promise,从这段代码可以看出,p1的then方法的成功回调中返回一个字符串—‘下一步’,直接被下一个then方法捕获了。当你then里面的回调函数返回一个promise时候,then返回新的promise会跟随你在回调函数中返回的promise的状态[你也可以看成同一个promise,没有差别,反正都是执行相同的回调]。

2025-09-16 23:32:09 979

原创 对浏览器事件机制的理解

大量元素需要绑定的情况吧,无限滚动列表、动态渲染的表格数据,比如数据可能动态生成,越来越多,或者会有一些动态生成的dom元素不好绑定【vue已经不需要手动做事件委托了,Vue的模板语法已优化事件处理机制,直接通过@click绑定到子元素时,Vue会复用事件处理器而非重复创建,因此短列表或静态内容无需强制使用事件委托】当然,事件委托也是有局限的。也可以使用capture来指定捕获阶段执行,这样如果父元素绑定的也是捕获事件,那就会先执行父元素的回调,再执行子元素的回调。, 事件除了用户触发的动作外,还可以是。

2025-09-11 23:26:12 441

原创 js的事件循环机制的理解

这是由JS的用途决定的,JS的用途是与用户交互,以及操作DOM,假设JS有两个线程,一个要在某个DOM节点上添加内容,一个要删除这个节点,那浏览器该以哪个为准呢,事情就变得复杂了。【如果是这样的话,那一个3秒的宏任务,会和一个耗费8秒的微任务几乎同时分别推入宏任务队列和微任务队列,那这个时候如果调用栈执行空了,先取出这个微任务执行,那可能8s的打印出来了,定时器还没打印出来,同步任务与宏任务:整个脚本(主线程代码),即script标签里的代码,本身就是一个宏任务,主线程执行脚本中的同步代码属于初始宏任务。

2025-09-11 17:15:25 555

原创 data为什么是一个函数而不是对象

那我们在所有实例中访问data,实际上都会去访问构造函数身上的原型对象,那我们修改这个data的某个值,实际上修改了堆中存放的数据,而栈中的地址是不发生改变的,这就会导致所有的实例访问到的数据都会同样改变,无法做到数据隔离。这个例子中,构造函数的原型的data属性,实际上存放了{message:10}这个对象在栈中的指针,而这个{message:10}对象实际上是存放在堆中的。我们知道,vue的每个组件都相当于构造函数,在页面上的每次使用都相当于构造函数进行了一次实例化。

2025-09-11 12:06:49 173

原创 v-model是怎么实现的,语法糖到底是什么

默认插槽的内容,孩子2

2025-09-11 10:50:50 315

原创 request to https://registry.npm.taobao.org failed, reason: certificate has expired

安装依赖的时候报错certificate has expired,简单意思就是证书过期了,尝试配置。意思是关闭严格协议检查。

2024-03-07 16:14:31 327

原创 前端使用jsrsasign签名和验签,加密解密

/ 传入key实例, 初始化signature实例。// 方式1: 先建立 key 对象。// 创建 Signature 对象。// 签名, 得到16进制字符结果。

2024-03-01 15:21:28 2113

原创 小程序带参跳转第三方小程序

这种情况下B会跳转至A当时跳过去的页面,但是extraData的内容需要在app.vue的onShow里面获取。这种情况可以在app.vue的onShow方法中把获取到的数据存入vueX或者存到本地。同一个方法,这种情况可以直接在跳转的时候设置跳回A的页面path,如果path带上query参数,那在A的页面就可以直接在onLoad中获取数据,(如果是跳回原页面,onload可能不执行)要求点击A某页面上的领取按钮,跳转至B,B拉取用户授权或强制用户登录后将得到的openid等信息在跳转的时候返回给A。

2024-02-29 16:11:37 842

原创 从0到1做H5支付(嵌入微信公众号)

从零到一开发H5项目

2024-02-06 16:50:36 2871

原创 js面试题

声明一个函数,然后立即调用这个函数就叫做立即执行函数,优点:1不必为函数命名,避免了污染全局变量2立即执行函数会形成一个单独的作用域,我们可以封装一些临时变量或者局部变量,避免污染全局变量})(12345)比如你想在页面加载完成后做一些事情,比如更改一个dom元素的样式,但是这个更改在初始化以后只需要做一次,那你完全可以把要更改的内容写在一个立即执行函数里面,这样函数里面用的变量在执行完成后就会回收掉,避免污染全局变量。

2023-12-22 15:35:04 434

原创 利用html2Canvas将表格下载为html

平常做的下载都是后端返回二进制流,这次前端做下载那就必须把页面先画出来,因为下载下来的表格在页面上是不显示的,所以要画出来再隐藏一下,隐藏的时候可选方式有很多,但是v-if,v-show这种会导致页面重构的不建议使用(事实也证明v-if和v-show在这种场景是不能使用的,因为这种场景要求表格是实际存在的元素)所以我选择了绝对定位加上z-index:-999的方式,让表格隐藏在文档流下面。表格画好以后,考虑两种下载的方法,一种是将表格转成图片,然后将图片转成html页面下载。1:html代码-表格样式。

2023-12-22 15:22:42 994

原创 ios下微信小程序中input框漂移问题

不断尝试的过程中发现,如果删除小程序,重新进入,第一次进入这个购物车页面的时候,不论如何滑动,这个input框都是正常显示的,离开页面第二次进入就会出现错位的问题,这时候这个bug原因就变的清晰了起来。一旦明确了这个问题,我就尝试了一种最简单的方法,在弹窗上增加了v-if判断,强制每次进入都重新渲染一遍,至此,困扰半个月的问题解决了。最近开发一个弹窗购物车的时候出现了滑动弹窗时里面的数字input框错位的问题,上微信社区看了好多问答仍然没有解决。同时这个问题还是一个兼容性问题,只在苹果手机上出现。

2023-12-22 15:04:54 1226

原创 ios下tab切换的时候除active的tab以外,部分tab被隐藏不显示

就发现写了一个v-if,这种频繁的切换在pc端我们是不能使用v-if的,会有性能问题,但是因为ios小程序不支持v-show,所以一般还是用v-if,我先把这个v-if给注释掉了,这个v-if是给active的tab下面加那个条形边框用的,去掉之后发现就正常了,然后我就去手机上看,然后想到我的手机是ios的嘛,就想着看下安卓的是不是也有这样的问题,结果安卓是好的,那就是ios的渲染问题了,就觉得很简单嘛,打开模拟器,发现模拟器上显示正常的,那凉凉,这种就不是简单的样式问题了,可能是真机上一些渲染的问题了,

2023-12-14 15:42:31 538

原创 css面试题

html,css,浏览器面试题

2023-02-09 15:37:36 265

原创 git pull 报错 warning: ignoring broken ref refs/remotes/origin/HEAD

unable to resolve reference ‘refs/remotes/origin/master’: reference broken大概就是报这两个错,偶尔操作不慎会造成这样的后果,字面意思就是远程分支和本地分支对应不起来了,大概率是本地分支坏了把.git/refs/heads(存放本地分支)和.git/refs/remote/origin(存放远程分支) 两个文件夹中报错的分支删掉,然后执行 git fetch(把远程仓库的分支更新到git),fetch成功后就不会报错了,剩下的随便操

2021-11-29 15:03:08 5835 2

原创 实现echarts中国地图迁徙图

最近做的项目需要实现一个中国地图上烟草流动走向的需求,因为之前没有做过,遇到了不少问题,因此将过程记录下来首先安装echarts,可以参考另一篇博文,链接如下:angular项目中使用echarts安装好以后测试一下页面中是否可以正常使用,就可以开始实现迁徙图了,第一步,首先要将中国地图显示出来,即引入china.js文件,因为echarts现在不提供地图文件了,所以我使用了网上大佬提供的china.js文件,放到你的工具文件夹下面,然后在页面中引入,比如在ts文件里如下引入,我使用的requi

2021-04-25 15:19:33 2782

原创 angular项目中使用echarts

第一步安装echartnpm install echarts --save第二步安装angular对应echart的插件npm install ngx-echarts@3.2.0 --save第三步在angular.json文件中引入echarts.js(这一步或许打包后有用不清楚,可以跳过){ ... "build":{ ... "options":{ ... "scripts":[

2021-04-25 14:07:38 1131

原创 项目中忽略或者禁用eslint

找到项目下面的eslintignore文件,将想禁用的文件或者文件夹添加进去例如node_modules/src/main/docker/src/main/webapp/--------我新添加的src/test/javascript/protractor.conf.jssrc/test/javascript/jest.conf.jswebpack/target/build/node/postcss.config.js...

2021-04-25 11:19:40 886

原创 为什么在页面上操作几次后就变的很卡,接口长时间处于pending状态

首先考虑浏览器的请求限制问题,谷歌浏览器限制同页面同时只能处理六个请求,点开network查看所有资源请求,看看是否有请求阻塞。第二考虑项目中是否使用了echarts,百度地图等工具且数据量较大,如果使用在路由跳转之前对实例进行清空处理。比如:ngOnDestroy() { this.chart1.clear(); this.chart2.clear(); this.chart3.clear(); this.chart4.clear(); }...

2021-04-25 10:49:31 2624

原创 echarts传入空数组原来的数据图层仍然显示

尝试1: this.chart3 = echarts.init(document.getElementById('echart3')); this.chart3.resize(); this.chart3.setOption(option, true); this.chart3.resize();先resize()一下再setOption(),我是用这种方法解决的。至于为什么用

2021-04-14 15:37:33 1307 3

原创 echarts使用百度地图超出容器问题

百度地图会默认添加一个绝对定位的样式,但是绝对定位是相对于离他最近的position值为relative的容器的,因此只需要给容器添加position:relative属性值即可解决<div id="echart5" echarts style="height: 100%; width: 100%;position: relative;"></div>...

2021-03-17 10:43:48 1508

原创 echarts地图首次进入坐标偏移,鼠标点击或拖拽后恢复问题

尝试设置:animation:false 即可解决 let option = { animation: false, bmap: {}}

2021-03-16 19:08:20 1543

原创 鼠标右键未响应

鼠标右键未响应解决方法1:终端输入regedit,打开注册表编辑器找到 HKEY_CLASSES_ROOT/Directory/Background/shellex/ContextMenuHandlers下面的key值只留下一个new和一个workfolder的key值。即可修复。解决方法2:如果遇到顽固类型(方法1无法解决或者重启后注册表复原等)电脑管家的工具箱中搜索管理右键菜单然后全部反选,看看是否解决。如果解决,就一个一个试一试,发现造成影响的进程以后禁用...

2020-12-18 11:35:23 1644

原创 npm安装taro-ui出错

解决方法,不使用npm.搜索powershell以管理员身份运行,然后使用yarn add taro-ui 安装即可

2019-11-25 20:48:38 2231

原创 PowerShell yarn : 无法加载文件 C:\Users\Admin\AppData\Roaming\npm\yarn.ps1,因为在此系统因为在此系统上禁止运行脚本。

解决方法1:搜索cmd,以管理员方式运行powershell2:使用命令更改计算机的执行策略PS C:\Users\Administrator> set-ExecutionPolicy RemoteSigned执行策略更改执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=1351...

2019-11-25 20:45:49 21828 3

原创 npm包管理器使用淘宝镜像

由于npm在安装模块时是从http://registry.npmjs.org下载对应的插件包,因为该网站服务器位于国外,所以经常下载缓慢或出现异常,在国内可以使用淘宝镜像进行安装,或者使用cnpm。淘宝npm镜像搜索地址:http://npm.taobao.org/registry地址:http://registry.npm.taobao.org/cnpmjs镜像搜索地址:http://...

2019-11-22 09:58:04 287

原创 Eslint规范导致报错

比如单引号双引号问题,括号分号空格问题1:在项目根目录下面新建 .prettierrc文件2:文件编码格式为Json格式3:在文件中进行相应配置,常见配置如下{ "printWidth": 100, //每行最多多少个字符换行 "singleQuote": true, //单引号 "trailingComma": "es5", // 对象属性最后有 "," "semi":...

2019-11-21 11:17:37 1022

原创 node-sass安装失败经验

提示缺少Python文件使用淘宝镜像安装:npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/提示 A complete log of this run can be found in:清除缓存1:首先删除node-modules文件夹2:执行npm cache clean --forc...

2019-11-21 10:01:21 231

原创 从输入网址到页面加载完毕

1:输入url以后,浏览器开启一个线程处理这个URL,同时将这个URL交给DNS进行解析,拿到对应的ip地址。2:向IP对应的web服务器发起get请求,服务器接收到请求以后返回资源信息3:浏览器接收文档,对html进行解析生成DOM Tree,css进行解析生成CSSRule Tree,再将两个Tree结合生成渲染树,(即将css规则树的节点附着在dom树对应的节点上)...

2019-10-16 08:50:13 153

空空如也

空空如也

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

TA关注的人

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