自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vscode编辑器创建分支注意事项?!

从图上看,我这边用了GITLENS这个插件,在创建分支时,有个create branch from,有一个是本地分支,一个远程分支,这次创建分支时,选了from 远程分支,没想到本地分支直接跟远程分支绑定的,所以在本地分支提交的代码,会提交到master分支上。我们可以看到 git push origin testBranch:master 这个指令,这条命令的意思是将本地的testBug分支推送到远程仓库origin的master分支上,如果master分支不做保护的话,那就危险了。

2024-05-31 15:55:57 397

原创 教你如何用VUE实现一个无缝横向滚动抽奖的效果

为了实现横向无缝滚动奖品,作者提前放了多组重复奖品列表,比如原先奖品列表有10个奖品,我们可以放置多几组重复奖品列表,所以奖品的数量(10 * n),为了效果更逼真,如果动画时间长的话,可以适当再加几组,让效果更加逼真。,那么我们点击滚动的时候,为了动画效果,自然要从第一组滚到最后一组,如我们要抽中第一个奖品,即第一组第一个奖品要滚到最后一组的第一个奖品,而且最后一组第一个奖品要在中间位置,我们可以计算好这个距离,这个距离怎么计算呢?我们可以看到停止时,第一个奖品的左边的奖品消失了,为什么呢?

2024-05-08 15:32:14 1355 2

原创 在vue中发现一个prop新的写法在官方文档没有,查百度不行,还有什么其他方法排查不

所以我们可以直接全局搜索,这时可以看到这个文件里有PropValidator,我们继续往里面找,可以推断出我们用的是PropOptions 这个泛型类型,一看它里面便恍然大悟了!原来这些参数都是可选的,所以我们prop直接用一个空对象也是可以的。我自己查了官网,以及百度都没有找到这种写法。学过typescript的都知道,这个是泛型类型,但是PropValidator里面是什么的?

2024-04-16 15:36:49 272

原创 作为一个前端,在入职新公司如何快速安装好开发环境

由于电脑运行内存才16G有点卡,今天公司给我们换了32G内存,是直接整个主机都换了,环境自然得重新安装,在装的过程中,自己会有些心得体会,就是想着一个新人如何快速安装环境。

2024-04-07 21:29:30 190

原创 已上线项目,突然有一天网站虽进得去,但是接口拿不到数据,作为前端的你如何排查问题?

好了,继续,这时知道老板的苹果手机的版本是很新的,所以基本排除属性兼容的问题。这时继续推测,可能是网络的问题导致,因为我看到信号没有满格,正当我们准备打算叫老板换浏览器访问,或者看下手机网络信号之类的问题的时候,这时被我们主管发现了图中另外个问题,大家有没有发现呢?好了,不卖关子了,直接说。这时我开始百度了,我发现一个知乎网友提供了一个地址,这个我手动改了下,发现是可以将https改成http的,这时我心中开始有定论了:之所以手动无法将https改成http,是因为这个网站做了相关的配置!

2024-03-31 11:04:55 517

原创 js如何遍历查询一个颗树

但是当时自己没有想起这三种排序的名字,只是回答说好像有三种,但是当时面试官好像突然明白了,说你是不是想说前序、中序、后序,我回答说是的,然后面试官淡淡回了一句说不是,后面我回去查了下,才知道不是,突然间顿悟了,不就是我们经常所说的。近段时间去面试的时候,被面试官问到如何遍历查询一个颗树的时候,可能最近自己看了数据结构的书之后,隐隐约约就想到。但是只回递归的话,无法加分的,从网上查了之后,才知道除了递归,还有循环,再拓展一点,大体分为。如果再问你用了什么数据结构,怎么回答呢?答案:用了队列,先进先出!

2024-03-27 21:21:43 341

原创 在vue2中,v-model和.sync的区别

真正的双向绑定可能会产生维护问题,因为该变化的来源在父组件和子组件中都不明显。所以我们建议在子组件里以update:myPropName的模式发出事件,父组件可以以:myPropName.sync=‘xxxx’ 绑定在子组件里。最近在封装一个弹窗组件时,用了比较复杂的逻辑去做显示和隐藏的逻辑,在查看同事的代码之后,才知道还有更简单的方法,自己已经忘了一些API.喜欢思考的小伙伴的,可能发现v-model不也是双向绑定吗,是不是里面也是.sync 和 update: 的一种实现?

2023-10-06 16:31:15 208

原创 解决谷歌浏览器会http网站自动变成https的问题

不知道是不是升级的缘故,最近打开公司一个http网站,会自动跳去https,用了网上说的这个方案,如下:但发现还不行,这时我尝试用点击地址栏左边那锁的那个图标,图如下:

2023-09-13 20:32:21 784

原创 从单页面应用角度去解决不跳转页面,也能更改浏览器url地址

正常来说不刷新页面,也能更改浏览器url地址的方法有很多,我们在网上搜的话可以看到有pushState、replaceState、popstate等方法,那还有没有其他方法呢?以上意思是,总体的意思就是假如浏览器url后面带有#, 使用window.location.href, 是无法跳转的,这个刚好是vue的单页面应用的一个。最近做一个vue商城项目的时候,用户点击支付时,用户可复制当前链接(加上登录态),粘贴到第三方浏览器之后,完成整个支付闭环。

2023-09-12 20:03:08 417

原创 用webwoker解决客服系统业务上的问题

在JavaScript中,定时器的执行是通过浏览器的事件循环(Event Loop)机制来实现的,而不是通过单独的线程来执行的。当定时器达到指定的时间间隔时,浏览器会将回调函数放入任务队列中等待执行。因此,定时器的执行与主线程是在同一线程上完成的,并不会像其他语言中的定时器一样在单独的线程中执行。在有些浏览器里,定时器可能是在单独的线程执行的。执行任务而不干扰用户界面(主线程),除此之外,当主线程遇到大量计算或者复杂的业务逻辑时,会对我们的页面造成不好的用户体验,我们也可以用webworker。

2023-09-11 10:53:44 202

原创 移动和pc端的微信支付和支付宝支付(持续更新)

用户通过第三方浏览器打开商城,点击立即支付时,会先弹出一个确认窗之后,立即自动跳去一个链接打开支付宝或app中打开支付宝。在微信环境内我们为了更好的用户体验,不用每次购买一个商品都要让用户经过一个中间页,我们在步骤二做了处理。会判断用户是否已经支付,如果没有支付会提示没有支付,如果已经支付成功,则弹窗支付成功,点击。最近开发了一个web商城,需要支持pc端,手机端,且需要支持微信支付和支付宝支付。唤起成功后,进行支付宝支付:支付成功、支付失败、支付取消、支付超时。

2023-09-08 18:28:03 636

原创 为了代码简洁性,引起值类型和引用类型赋值的错误说明

如果我们对引用类型进行复制,只进行了一次浅拷贝,此时新的变量和原变量仍然引用同一个对象,当我们修改其中一个变量所指向的对象时,其他变量也会受到影响。因此,如果我们想要分开操作多个变量则需要进行深度克隆,创建一个新的对象并将其属性复制到新的对象中,以确保变量之间的独立性。当我们修改一个值类型的变量时,实际上是在修改其所对应内存空间中的值,而其他变量仍然引用原来的值。因此,在对值类型进行赋值、传递参数或返回值时,都是进行了一次浅拷贝,即将值复制到新的内存空间中,并且新的变量仍然是一个独立的值类型。

2023-09-07 11:29:21 107

原创 关于vscode的GitLens插件里的FILE HISTORY理解

这是因为Git会在代码库的历史记录中跟踪文件的路径变化,无论是对于特定文件的操作还是整个代码库的操作,只要文件的路径发生了变化,Git都会将其视为重命名或移动操作,并生成相应的提交记录。但是,由于这样的跟踪需要较多的计算资源和存储空间,所以可能会导致提交记录的数量增加。,所以我们会发现与当前点击的提交版本比较的版本,不一定就是上一次提交的版本,准确的说GitLens的File History里,你每点击一个提交版本,编辑器都会自动将你当前你点击的版本与它上一个。

2023-09-06 16:17:54 1155

原创 关于微信公众号开发总结(持续更新)

微信分享需在公众号菜单里进行分享,否则转发出来的不是分享卡片,而是一条链接只要是同一个微信开放平台帐号下的公众号(open.weixin.qq.com),用户的UnionID是唯一的。换句话说, 同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。关注公众号有几种方式:微信内部:a. 放一个公众号二维码,长按识别关注b. 点击公众号链接进入 (打开电脑版的微信客户端,打开需要前往的公众号 -打开详情页 -复制公众号链接 )微信外部:a. 通过小程序URL Scheme方

2023-07-14 12:02:18 143

原创 关于typescript的类型推断一些理解

自己还有个疑问,为什么obj.color不会自己推导成 defaultObjType?想了想,感觉自己用惯了js的写法,忘记自己使用的是typescript,因为自己已经给obj指明为SquareConfig 类型了,所以接下来的任何操作都是依照这个类型进行判断,所以这里就有这个报错了。按照我们的理解,obj不是被赋值成以下这个对象了吗,怎么还是报错?

2023-07-13 12:15:52 751

原创 在VSCODE编辑器是用ctrl+c和ctrl+s(复制粘贴)失效怎么办

有时我们在开发过程中,由于使用vsccode太长时间导致复制ctrl+c和ctrl+s会失效,之前我的处理方式是重启浏览器,但有时候这样太耗时间了,但发现一个方法可以解决,就是刷新下编辑器的timeline就行,如下图:

2023-07-12 14:21:13 3828 1

原创 array.prototype.includes 和 Set.has() 哪一个更好

在讲这个问题之前,先说说最近开发的感想,我们平时开发的时候免不了需要轮询一段数据,但是怎样才能使用轮询的时候减少性能的消耗呢,在看了php后端小伙伴用了一个isset函数之后,才突然有点灵感,就是我们在写代码,不要硬生生的使用循环,可以。: Set 对象只存储独一无二的值,如果你想避免储存重复值,这是比 Array 更好的选择,因为使用 Array,你需要使用额外的代码去处理这种情况。而在 Array 中,相同的功能需要使用项的 索引 使用 splice()方法。使用 索引 是很慢的。

2022-09-14 10:00:58 1270 1

原创 论TypeScript对项目的帮助

论TypeScript对项目的帮助

2022-07-20 16:39:31 251

原创 iview里form表单组件需要注意的地方

今天用iview的form组件写一个项目,一个问题卡了比较久,如下图:就是我这边在主体的输入框里输入了值,但还是报“请输入主体”验证信息,排查了有点长时间,才发现data里的忘记定义了这个参数,如下:原因:跟vue的响应式属性有关,对于未在data定义里的属性都不是响应式属性,除非你用$set去解决官方文档有说明:...

2022-05-12 15:58:58 284

原创 如何将promise和async结合在一起

最近用到了async,所以想把它用到实际开发上,具体async如何实现在官方文档都有说明了,在这里的话,我只会做一些补充说明。async 是隐式返回一个promiseasync function f() { return 1;}f().then(alert); // 1当然我们也可以显示返回一个promise,如下:async function f() { return Promise.resolve(1);}f().then(alert); // 1这样async就可以和

2022-05-06 15:15:52 1348

原创 在node中,关于fs.rename的一些解读

最近在使用fs.rename时,在文档中看到这样一句话:上面这个报错是什么报错呢,自己尝试了下,原来这个报错这样:oldPath是文件,NewPath是文件夹的话另外的话,oldPath是文件夹,NewPath不是空的文件夹的话也会报错,所以必须删掉test1文件夹下的东西才能成功...

2022-04-06 18:20:58 508

原创 关于在node中使用nodemon需要注意的地方

最近写一个小游戏自动化打包项目,遇到这样一个问题:在启动nodemon插件运行代码时,在上传文件接口里遇到一些比较奇怪问题,就是上传之后的文件比原本的减少了,一开始无法确定是什么原因导致,问了同事之后,才知道使用了nodemon之后,只有文件发生改变,服务器都会自动重启,这样就会导致一些额外情况发生,自己查了nodemon官方文档,才知道它具体的用法:所以在写类似有操作文件的接口是不建议使用nodemon,特别在debug时也是比较难的...

2022-04-03 19:56:16 3835

原创 关于try catch新的发现

最近在用node的fs模块的api,发现了这样一个问题:然后今天谷歌了下,发现已经有其他网友发现这个问题了,如下:上面说得很详细了,因为try catch无法捕捉到异步的报错,因为fs.readdir时异步,所以无法捕捉得到相关参考链接:https://www.icodebang.com/article/284328...

2022-03-31 21:01:06 190

原创 iview表格中设置resizable为true之后产生一些问题

目前项目所有表格全部都要设成可许拖拽调整宽度的,文档如下:需要每一列设置width固定宽度才能生效,这样就产生一个问题,如下:屏幕一长,最后一列就出现额外的空白,这时我们会说可以把最后一列width设成自适应,即“auto”不就解决了?但是这样又遇到另外个问题:如下 就是屏幕一缩小,表格样式就会发生错乱(不知道是不是iview的bug),所以当iview表格中设置resizable为true时,最后一列要设成固定宽度,但这面临一个问题,就是屏幕变得再大的时候,最后一列还是留有空白,所以这还是无法解

2022-03-30 20:28:32 1346

原创 iview的表头如何随着页面滚动可以固定住(关于position: sticky的一些新理解)

今天需要实现这样一个需求:在表格往下拖动的时候,需要固定表头整体思路:自己用iview写的,当时自己想得是这个表头用绝对定位,根据页面滚动的距离从而计算出定位数值,但是这样有个问题,就是当数据多的时候,很快去滚动页面的话,这个表头会出现抖动的状态,应该计算定位px数值的时候耗了点时间,当时自己参照别人网站的时候,发现别人用的是position: sticky,自己当时也百度去搜了position: sticky的用法,发现有点乱,所以自己用google搜了下MDN文档,从而看到一个比较系统的说法:上面

2022-03-29 20:30:08 1773 1

原创 关于在vue中解决跨域的一些记录

今天去接了一个企业微信通知的接口,如文档示例:如下图,如果在开发环境请求的话会跨域,这时我们可以用proxy进行解决,我们可以发现原先项目已经存在了一个/api接口域名的配置,这时我们还是可以继续配置下企业微信通知接口的,另外这个接口是带https,所以我们是要加上secure:true所以我们实际请求的接口可以这样import axios form "axios"axios.post("/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa

2022-03-28 20:26:38 1511

原创 关于js里的Date对象里的一些用法

想必大家平常在开发中,想找一些日期格式化的方法估计都是百度吧,今天帮公司开发一些小的功能点的时候,学习到一些方法setTime()首先,Date 对象是以“1970年1月1日”是为准的,所以调用它的一些方法比如getTime()、parse()都是从...

2022-03-24 21:49:56 359

原创 注意用逻辑运算符 ||、&& 在if()里面写和在外面写的区别

如果在if()里面写的话,相当于就是Boolean()里面写if(undefined || false) {}// 等同于if(Boolean(undefined || false)){}如果在外面写的话,则就不同console.log(123 || false)// 123console.log(Boolean(123 || false))// true...

2022-03-20 22:39:22 566

原创 node中使用compress插件解压文件和手动解压文件的区别

手动解压的流程:一. 压缩之前文件结构:二. 压缩之后文件结构:三. 再次手动解压之后文件结构:从上面我们可以看到,再次解压之后会自动归入到 归档 这个文件夹,所以我们以为是会存在 归档 文件夹用compress插件解压的流程:但我们用compress的uncompress方法,把归档.zip解压到demo文件夹下的时候,我们是没有发现有归档文件夹,还是压缩之前文件结构:// 解压缩compressing.zip.uncompress('xxxx/归档.zip', 'xxxx/dem

2022-03-15 21:43:04 938

原创 vue-clip3的不同环境的配置注意点

vue-clip3默认的NODE_ENV只有两种,一个是“production“,一个是”development“,如果要配置多个的话,需要另外配置,和vue-clip2有点区别。所以比如说在项目配置多一个环境的时候,比如加多一个.env.test,里面是这样写的NODE_ENV = 'production'VUE_APP_URL='xxxxx'VUE_APP_MODE = 'test'这里的NODE_ENV不能写成test,否则打包的时候会报错,这和vue-clip2是有点区别的。...

2021-03-21 22:22:53 188

原创 关于iview弹窗组件的问题

给Modal添加属性loading后,点击确定按钮对话框不会自动消失,并显示 loading 状态,需要手动关闭对话框,常用于表单提交。那么如何去掉这个加载样式呢,而且又能保证弹窗是需要手动关闭的,这是我想到可以用setTImeout进行实现,那么在确定的回调函数里面可以这样写,setTimeout(() => {this.loading = true;}, 0);this.loading = false;...

2021-03-06 22:37:48 1159

原创 vue中的watch只能监听响应式的属性

export default { name: "Home", data() { const _this = this; return { setObj:{ a: { } } }; }, methods: { testSet(){ //watch监测不到 // this.setObj.a.age = 6666 //watch可以监测到 thi

2021-03-01 22:33:45 522

原创 ES6的解构赋值不是深度克隆对象

有时候我们在完成一个业务需求的时候,进入一个页面可能需要一些初始值,像我这种用惯ES6的人来说,看代码如下//person是 const person = { name:{ first: 'billy', last: 'feng' } }; export default { data() { return { test :{ ...person } }

2021-02-27 22:44:16 196

原创 重新温习下闭包

最近看了下javascript高级程序设计(第三版)之后,对闭包重新理解了一下,闭包就是一个可以访问函数作用域的一个函数。根据下面的案例可以理解下。//为了使循环的每一项都能依次返回对应的数字,这时可以使用闭包。 function createFunctions() { var result = new Array(); for (var i = 0; i < 10; i++) { result[i] = function (num) {

2020-12-27 10:28:32 83

原创 js中promise方案、async和await方案和传统方案来处理异步回调的问题

自从去了新公司之后,重温了下传统处理异步请求结果的方法,那就是回调函数,举个例子: /** * 获取用户信息 * @param {*} callback 回调函数 */ getUserInfo(callback) { //请求接口 bhTool.otherChannelLogin(data, (res) => { if (res.code === 200) { if (call

2020-12-12 16:48:40 375

原创 关于v-bind新的理解

最近在看别人项目的时候看到有v-bind=“{row,index}”,一开始没看明白,后来发现官方文档是有的所以上面的完整写法是

2020-11-23 23:32:29 165

原创 继续巩固下vue中的watch

之所以说想巩固下watch,因为有些概念你看似已经明白了(如上),但在实际开发中,你又会忘记了,我们都知道watch是监测数据的变动,但有时陷入一种这样的困惑,比如当我们监听“route.path”的时候,开始route.path” 的时候,开始route.path”的时候,开始route.path默认为undefined,刷新一个“http://localhost:9999/#/user_management”这样的页面时候,为什么不会走watch里面的方法呢,原因很简单,因为你没有加immediate.

2020-11-22 20:31:34 65

原创 vue中父子传值中,如果给子组件绑定了数组[索引]会怎么样

父组件代码 <template> <div> //子组件 <item1 :test="test[0]"></item1> </div> </template> <script> export default { data(){ return { test: ['test']

2020-11-22 20:12:19 276 3

原创 JavaScript对象的几种创建方式与优缺点

Object构造函数模式使用场景:起始时不确定对象内部数据。缺点:语句太多var p = new Object()p.name = ‘tom’p.age = 12p.steName = function (name) {this.name = name}对象字面量模式适用场景:起始时对象数据确定。缺点:如果创建多个对象、有重复代码。var p = {name: ‘jack’,age: 13,setName: function (name) {this.name = name.

2020-11-02 23:22:44 68

原创 节流和防抖

节流考虑一个场景,滚动事件中会发起网络请求,但是我们并不希望用户在滚动过程中一直发起请求,而是隔一段时间发起一次,对于这种情况我们就可以使用节流。应用:常见的搜索功能:没有使用函数节流的情况下,为input绑定keyup事件处理函数,在控制台输出我输入的内容。每按下一个键盘键,就输出了一次。短短的一些内容,输出了15次,如果每一次都是一次ajax查询请求的话就发了14个请求了。在性能上的消耗可想而知。// func是用户传入需要节流的函数// wait是等待时间const throttl

2020-08-04 12:27:29 123

空空如也

空空如也

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

TA关注的人

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