- 博客(50)
- 收藏
- 关注
原创 【node.js】基础之修改文件
流式写入还可以实现边读边写的操作,即当数据量非常大时,可以逐步地读取数据,然后将其立即写入文件,这样可以在处理数据时避免数据过多而导致程序崩溃。createWriteStream适合于频次较多的操作,createWriteStream创建一个通道之后,写入一次之后,不会关闭通道,减少了打开关闭文件的次数,在close之前可以持续的写入。但是由两个共同的API,console和定时器。可以实现与硬盘的交互,例如文件的创建、删除、重命名、移动,还有文件内容的写入、读取及文件夹的相关操作。
2024-08-30 16:17:16
1747
1
原创 【V8引擎】 V8引擎如何运行JS的
V8 是一个由 Google 开发的开源 JavaScript引擎,目前用在 Chrome 浏览器和 Node.js中,其核心功能是执行和解析我们编写的JavaScript代码。
2024-06-15 13:49:32
1269
原创 element-ui el-table表格勾选框条件禁用,及全勾选按钮禁用, 记录
表格的部分内容是可以被勾选的,部分内容是不可以被勾选的使用的是 “element-plus”: “^2.2.22”, 以上应该都是兼容的。
2024-01-12 14:14:05
13921
2
原创 vue3 封装自定义指令,监听元素宽高的变化
是可以监听到DOM元素,宽高的变化,需要注意的一点就是监听出变化结果是contentBox的宽度和高度。最近做一个项目,涉及到echart图,要去根据父元素去自适应宽高,所以需要监听到元素的宽高变化、第二步:在directive文件夹再创建一个index.js文件,目的是为了集中注册自定义指令。在directive文件夹下创建一个resizeObserver.js文件。第三步:在main.js文件进行全局注册。监听某一元素的宽高变化。第一步:封装自定义指令。
2023-10-12 16:00:51
2166
1
原创 echart 报错 Uncaught TypeError: Cannot read properties of undefined (reading ‘type‘)
使用echart 报错 Uncaught TypeError: Cannot read properties of undefined (reading ‘type’)报错情况,使用了ResizeObserver监听了echart父元素宽高变化,然后就出现了以下两种报错。使用 vue3的API , markRaw,标记一个对象,使其不能成为一个响应式对象。chart会被在vue内部转换成响应式对象,从而在resize 的时候获取不到。
2023-10-08 11:55:35
4861
5
原创 【ajax】async:false,ajax同步任务,页面无响应,页面元素点不动,浏览器提示无响应
例如:ping一个地址之后,定时向后台获取数据,使用的是JQ。
2023-06-06 15:53:14
1616
原创 垃圾回收机制学习总结
13、增量标记与懒性清理、三色标记法(暂停与恢复),写屏障(增量中修改引用)?5、标记清除算法的逻辑?6、引用计数算法的逻辑?11、讲一下分代式垃圾回收?12、讲一下新生代垃圾回收和老生代垃圾回收?提出一些问题:方便后续回顾垃圾回收机制。10、V8对CG的优化是什么?2、为什么要进行垃圾回收?链接一篇讲的非常棒的文章。1、什么是垃圾回收机制?3、垃圾应该怎么回收?4、回收策略有哪些?
2023-02-04 15:19:41
796
原创 【node 运行项目报错】 使用node最新版本,运行旧项目报错
node 升级到最新的版本v18之后运行之前的项目报错“scripts”: {“serve”: “SET NODE_OPTIONS=–openssl-legacy-provider && vue-cli-service serve”,“build”: “SET NODE_OPTIONS=–openssl-legacy-provider && vue-cli-service build”},再执行 npm run serve 就可以运行项目了,如果不行 新开一个窗口再执行一下npm run serv
2022-12-08 13:55:46
4121
1
原创 【call,apply,bind】手写call,apply,bind的方法
call,apply,bind都是可以改变this指向的函数,但是具体区别是什么呢,这边主要是从实现方式看区别call和apply会立即执行,并且会返回执行的结果bind不会立即执行,会返回一个永久改变this指向的函数call和bind后面都是参数列表,但是call必须一次性传完,bind的分多次传入apply传入参数是数组的形式。
2022-11-07 20:06:33
433
原创 【push,pop,shift,unshift】手写数组push,pop,shift,unshiftt方法
操作数组的方法有很多,这里先手写部分 ,主要是push , shift,pop,unshift从实现看具体的区别push:将一个或多个元素添加到数组的末尾,并返回该数组的新长度。pop: 从数组中删除最后一个元素,并返回该元素的值。shift:从数组中删除第一个元素,并返回该元素的值。unshift:将一个或多个元素添加到数组的开头。开始吧~~
2022-11-05 15:47:06
1136
原创 【reduce与reduceRight】手写数组reduce与reduceRight方法
reduce和reduceRight都是JS数组的API。会将上一次计算结果带到下一次计算中,可以用来累加。看一下官方解释吧~reduce() 方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。reduceRight() 方法接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。
2022-11-04 16:48:20
988
原创 【map与foreach】手写数组map和foreach的方法
map()和foreach()都是数组的方法,都可以遍历数组。且都是ES6中的方法。面试时也经常会被问到map和foreach的区别是什么。手写一个简易的map和foreach可以更加直观的了解到他们之间的区别1、都会循环遍历数组中的每一项2、匿名函数中的this都是指向window3、只能遍历数组4、forEach 和 map都相当于封装好的单层for循环,三个值都相同。
2022-11-03 21:55:24
540
原创 【cancel请求】切换页面,对上一个页面正在pending的ajax进行取消操作
在项目中,我们会遇到个问题,就是页面切换时,上个页面的请求还在继续,并没有停止,如果这时候有什么提示性语句的话,就会出现在下一个页面,这样就会显得很不和谐。而且我们切换页面之后,上一个页面的请求对我们当前页面来说并没有任何作用,所以就需要我们在切换页面时,中断上一个页面的请求。这也是优化性能的一个方法。
2022-10-31 17:30:32
1322
原创 【学习笔记】六种继承详解
六种继承的学习,敲得源码和注释都在下面,可以直接运行,方便更加直观的了解想继承通过prototype去继承注意事项1、给原型添加方法的代码一定要放在替换原型的语句之后。2、存在内存空间共享的问题,当存在属性为数组的时候,一个改变,另一个也会改变构造函数继承二、构造函数继承 主要就是使用call实现的 ,call可以改变函数this的指向组合继承思路就是使用原型链实现对原型属性和方法的继承而通过借用构造函数来实现对实例属性的继承。即通过在原型上定义方法实现了函数复用,又能够保证每个实例都有他自
2022-07-04 20:16:16
176
原创 【vue3 vant 踩坑记录】
起因:tab的active默认值为0,路由跳转到界面的值为2,使用的是setup语法糖,获取路由传参值之后,赋值给active,但是,发现active,没有被改变。我们可以发现这个值是已经修改成功了的,但是视图并没有跟着变化,在视图中 active 的值依旧为0。以为是没有及时更新,但是使用的是ref应该不会存在这种情况。后来无意间调用了一下Tab的change事件,发现组件创建时,调用了tab的change事件,并且是最后才调用的。下面是我调用change是事件的代码,可以看出active 改为2之后,
2022-06-24 15:51:08
1824
原创 【pinia】使用记录
全局状态管理器1、体积 ,pinia只有1KB左右,相较于vuex体积小了不是一点点。2、状态管理pinia没有mutation,他只有state,getters,action【同步、异步】使用他来修改state数据,而vuex的状态管理有state,mutation,getters,action3、更好的支持ts所以pinia很轻量,适合轻量级的应用。轻量级的小项目用pinia是完全没问题的。然后设置为全局对象,在main.js里面引用创建一个store管理状态vue3语法糖写法就改装上面
2022-06-23 17:17:15
940
原创 【VUE3】setup语法糖使用记录
二、computed 使用与vue2不同的是,Vue3需要引入相关内容三、watch监听使用watch也需要引入,使用方式与vue2相差不大,不同的是,监听多个属性的时候,要写多个watch。如果写到一起的话,就会出现其中一个值变化,下面的方法都会触发,不能独立监听。四、组件之间传参在vue3中有setup语法糖,所以我们引入子组件之后无需注册,可以直接使用,子组件也不需要命名组件之间传参父子组件的双向绑定1、通过prop向下传递, emit向上传递。1)父组件通过props向子组件传递内
2022-06-23 13:59:08
2655
原创 原生 input输入框,按字符or字节数计算输入内容长度,超出部分截取掉。
需求这做的是一个原生输入框,按字节或者字符数计算内容长度,超出部分截取掉。分析首先,用maxlength肯定是不行的,因为,aaa的长度为3,啊啊啊的字节长度肯定是大于3的,但是maxlength还是将他计算为3,跟我们的需求不太一样。所以计算一下。首先计算输入内容的长度,需要在输入时就开始计算,就需要我们在onchange的时候对输入内容长度进行判断,这里又涉及到一个问题。就是中文在输入时,还没有组合完就会被拿去计算,所以这里针对中文还是要用单独的事件做处理。话不多说,上代码,引入JQ,复制粘
2021-12-30 17:39:15
1599
原创 js原生上传文件二次选择点击取消之后,文件被清空的问题
上传文件时,当我们第一次选择文件点击确定之后,第二次选择文件点击取消之后,文件会自动被清掉,我们第一次选择的文件就不存在了,但我们想实现第二次选择文件时,点击取消,第一次选择的文件不会被清空。
2021-12-30 16:05:08
1966
原创 LambdaTest 使用记录
LambdaTest是什么?LambdaTest是跨浏览器测试工具之一。它是真机测试,对于前端开发者而言,真机测试是比较重要的,因为你在浏览器上的模拟屏幕上面测试没问题,但是在真机上面就会有问题,所以真机测试还是蛮重要的。网址:https://app.lambdatest.com/console/realtime注册登录之后,点击开始之后,开始真机运行。这就是在刚才你选择的环境下面运行的情况了。你可以在这个环境下面测试自己的内容。对于前端来说还是非常友好的。哈哈哈哈…...
2021-06-10 11:04:10
3849
原创 浏览器右边滚动条,导致加载内容出现时出现晃动的情况
这种浏览器滚动条,在页面内容加载时会出现晃动。我在网上搜索了一下。有说这个方法的,实际测试下来,确实没有滚动条,也不晃动了,但是鼠标滑轮就不能控制界面上下滚动了,这个应该是需要自己写滚动条的,比较麻烦。所以我就pass掉了html { overflow-y: scroll;}:root { overflow-y: auto; overflow-x: hidden;}:root body { position: absolute;}body { width: 10.
2021-03-16 16:53:32
724
2
原创 gitbook 使用和遇到的问题记录
由于项目需要帮助文档,于是我这边选择使用了gitbook,这边做一个使用的记录,以及遇到的问题。安装方式npm install -g gitbook-cli初始化建一个文件夹,然后git bash 输入gitbook init这一步运气好的小伙伴可能一步就成功了,不会一直卡在Installing GitBook 3.2.3哈哈哈,我偏偏就是运气不好的那一个人。然后在网上各种百度搜索解决方法。重点来了。总结// 1、node版本,gitbook支持的最好的版本是 node 10X ,我的
2021-03-11 16:29:54
1061
1
原创 在VUE里面集成UEditor,使用及遇到的问题
安装,安装步骤参考这位博主就可以了,讲的很详细安装步骤地址链接遇到的问题。1、我这边UI框架使用的是elemente。富文本编辑器显示在弹框(dialog)里面的,然后点击富文本选择字体颜色的时候,字体颜色选择的弹框是在dialog下面,就出现了层级问题。解决方法: 在ueditor.config.js文件里面,把zIndex设置高一点,这边看个人需求,不一定设置成我这么高,反正自己调试嘛!2、服务器接口没有设置,报下面的错误解决办法: 在ueditor.config.js文件里面,把
2021-03-02 10:56:33
17359
2
原创 关于兼容IE浏览器遇到的一些关于css和js的问题记录
IE10及其以下的width和height不支持auto,必须指定值,比如说图片,如果只指定高的话,宽并不会按比列缩放,会变得很畸形。IE10及其以下不支持flex布局,只能使用float布局,基本都是在改这个问题,因为没有考虑到IE,所以布局大部分都是flex。文本超出省略兼容 //没有兼容的时候,我用的span标签包裹的内容 .typeName{ //这个写法在ie下是没有用的 max-width:100%; overflow: hidden; text-overflow: el.
2021-02-03 18:16:48
226
原创 网页在微信PC端内置浏览器遇到network的问题记录
问题是这样,我这边的一个网页链接,在PC端和手机端都是可以正常访问使用的,但是就是在pc版微信内置浏览器就是不行,报network。找了蛮久的,发现是因为我接口使用的是put方法。改成post就可以了。。。。。...
2021-01-28 11:13:14
870
原创 vuex配sessionStorage进行自动存储,解决刷新数据丢失的问题。
最近在重构以前的老代码,发现上一个前端都是直接用sessionStorage.setItem做的数据存储,对于Vuex也没有做一个持久化的存储,刷新就没了。于是我对这个重新做了一个处理。大致是这么想的,第一点:我想每次修改store里面的数据的时候,sessionStorage就自动存储更新一遍,而不是我手动去更新sessionStroage里面的数据。我的做法是:使用vuex的 subscribe 订阅。因为要修改store里面的数据,会调用到mutation 。而subscribe是订阅 st
2020-12-11 11:48:09
1877
原创 js-xlsx使用记录和问题记录
引入js-xlsx包npm install xlsx --save导入import XLSX from 'xlsx'使用记录readExcel(file) { //清除 上传文件 this.$refs.upload.clearFiles(); const fileReader = new FileReader(); //excel表 列数组 let sheetArray=[]; //读取本地文件 fileRe
2020-11-13 17:40:23
629
原创 小程序触底加载~~~~
使用scroll-view作为最外层容器。 <scroll-view id="wrapper" style="height:100%" scroll-y="true" bindscrolltolower="onBtmFun" lower-threshold="50" > <view id="topTable"> </view> </scroll-view> 在js文件里面的onBtmFun写触底加载的方法。就可以了。触底方法不触发的
2020-11-13 17:23:14
337
原创 使用Canvas2Image对 页面进行 截图 遇到的坑
用到的库有:Canvas2Image,html2canvas引入库import Canvas2Image from 'canvas2image';import html2canvas from 'html2canvas';注册components:{ Canvas2Image, html2canvas },展示要截屏的视图。在截图之前,视图必须展示在页面上,并且展示完整。不然截出来的图片不完整获取DOM及其需要的元素/***@params Dom :dom元素的ID
2020-09-18 10:54:27
1163
原创 QRCode vue 生成二维码并粘贴到剪贴板
npm install qrcodeimport QRCode from "qrcode";components:{ QRCode, },<canvas id="QRCode" ref="qrCodeDiv"></canvas>``toCodeShow: function () {var canvas = document.getElementById(‘QRCode’)// canvas.setAttributeQRCod.
2020-09-11 10:59:43
1561
2
原创 router-link地址改变,但没有跳转
情况:我的外部使用的是router-link跳转方式,在router-link里面有this.$router.push跳转,结果就是地址栏上的参数改变了,但是,页面却没有跳转。,解决方法,在router-view上加一个key就可以跳转了
2020-09-10 17:16:33
3103
1
原创 微信小程序 转 百度小程序
官网上是有记录的,简单做一下笔记全局安装:wx2npm install -g wx2安装完成之后,在想转换项目的位置打开git .输入wx2 -help出现以下内容上面有提示。交互式创建项目的方法 交互式创建项目: wx2 <entry-directory> <output-directory>我们就按照上面的格式输入就可以了出现转换成功周,我们出去用百度开发者工具打开我们刚刚转化的出来的文件,就可以了,大部分是没有什么问题的,部分需要微调。
2020-08-28 15:52:31
698
原创 vue组件之间通过父组件通信
接手的项目,比较复杂。在父组件,有一个封装在B组件的单选框,它的初始值在另一个A组件里,我需要在父组件里获取在A组件的值(异步),把值通知给B组件,B组件如果值有变化,我需要告诉父组件和A组件,enmmm…这里没有用vueX。。。我的解决方案:首先获取A组件的初始值因为是从接口获取的,所以我并不知道什么时候能获取到,如果这时候用ref获取的话,值是不准确的~ 我们需要的效果是,A组件的值只要变化,立马就传给父组件。我的做法,在父组件的A组件上注册一个方法:在A组件里通过watch监听我们要获
2020-08-27 11:08:47
83
原创 vue 之各种报错
1 、undefined is not iterable!或者null is not iterable!"null和undefine是不可以拿来循环的,拿来循环就会报上面这个错误,循环的时候判断一下,不为null或者undefine的时候再拿来循环就可以了~~
2020-08-06 14:42:24
3010
3
原创 纯前端,滑块验证
工作需要前端做验证,就在网上找了一款插件 vue-drag-verify样式蛮好看的,所以就选择了这个插件安装依赖:npm install vue-drag-verify --save代码部分:<template> <div> <el-button></el-button> <p> dksal; <i class="el-icon-arrow-right"><
2020-07-22 16:33:25
918
原创 使用 fingerprintjs2 获取浏览器指纹,生成浏览器唯一标识符
介绍:Fingerprintjs2是一款开源的设备指纹采集器。最初的fingerprintjs库创建于2012年,但是由于新版本的开发很难保持向后兼容,因此Fingerprintjs2项目中增加了很多的新内容。该项目将更多、更有效的来源用于指纹识别,并且可配置,也就是说用户可以选择性地开启其中的选项。该项目还将重点关注IE插件,尤其是在中国流行的QQ、Baidu等。另外,该项目使用了semver(语义化的版本控制系统)。dasd...
2020-07-21 17:02:19
11253
5
原创 Cannot find module ‘node-sass‘
就是该依赖没有安装下来的原因,我的使用的是npm ,网上说使用cnmp比较有用先执行一下命令 ,安装cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org再安装node-sass的依赖cnpm install node-sass@latest安装成功之后 npm run dev 就阔以了...
2020-07-20 17:38:07
110
原创 JavaScript去掉首页地址栏后面的/#及后面的内容,不刷新页面,,,回退两次问题
需求是去掉首页地址栏 /#及后面的内容 ,只保留 http://xxxxx.com为了美观方法一就是vue的路由模式改为history,不过这样就会有问题,要配置找不到路路径时候的页面。方法二 var title = ''; var newUrl = '/'; history.pushState(stateObject,title,newUrl); //History 对象 pushState() 这个方法有3个参数,你可以从上面的例子看到。 //第一个参数,是一个J
2020-07-01 22:34:00
2089
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人