概念介绍深拷贝:在堆内存中重新开辟一个存储空间,完全克隆一个一模一样的对象;浅拷贝:不在堆内存中重新开辟空间,只复制栈内存中的引用地址。本质上两个对象(数组)依然指向同一块存储空间 第一种:递归方式(推荐,项目中最安全最常用)使用递归的方式进行对象(数组)的深拷贝,蓝狮官网奉上已封装的深拷贝函数: 上方函数的使用方式: //函数拷贝const copyObj = (obj = {}) => {//变量先置空let newobj = null; //判断是否需要继续进行递归 if (typeof (obj) == 'object' && ob ...
蓝狮注册工作中使用 Git 解决问题的场景
简单来说,就着七点: 使用 git rebase 让提交记录更加清晰可读使用 git reflog + git reset 跳到任意 commit使用 git cherry-pick 获取指定的 commit使用 git commit –amend 更改提交内容使用 git revert 回滚某次的提交使用 git stash 来暂存文件配置 git alias 提升工作效率使用 git rebase 让提交记录更加清晰可读rebase 基本用法rebase 翻译为变基,它的作用和 merge 相似,蓝狮官网用于把一个分支的修改合并到当前分支 如下图所示,经过 rebase 后提交历史的变化情况 不明白单分支的好处,可以在看看知乎的 ...
蓝狮注册一文掌握 vue3.2 setup 语法糖
前言提示: vue3.2 版本开始才能使用语法糖!在 Vue3.0 中变量必须 return 出来, template 中才能使用;而在 Vue3.2 中只需要在 script 标签上加上 setup 属性,无需 return , template 便可直接使用,蓝狮官网非常的香啊! 提示:以下是本篇文章正文内容,下面案例可供参考 一、如何使用setup语法糖只需在 script 标签上写上 setup代码如下(示例): 二、data数据的使用由于 setup 不需写 return ,所以直接声明数据即可代码如下(示例): 三、method方法的使用代码如下(示例): 四、watchEffect的使用代 ...
蓝狮官网浏览器底层工作那些事儿
浏览器已经成为我每天都需要打交道的工具,然而对于这个我们的老朋友,即使一些 web 开发人员也对它的底层工作原理不是非常清楚,今天我们就来简单谈一谈浏览器的底层工作原理。 浏览器的主要功能如果非要用一句话来概括浏览器的功能,那么浏览器就是一蓝狮官网个请求资源,然后显示资源的软件。 这里的资源主要就是我们经常提到的 html,css,js,还有图片等。 浏览器共有的接口: 地址栏前进后退按钮刷新按钮主页按钮收藏按钮通过这些接口我们就基本掌握了浏览器的基本操作。 浏览器的架构浏览器对外表现就是一个 ...
蓝狮官网测试一下Pinia,Vuex 要出局了?
自从我开始使用vue 3和组合api以来,我也尝试使用 Pinea 作为状态管理库。如果是从是 vue2 和 vuex 过来的,就会觉得用起来差别还是很大的。 说实话,我对 Vuex 使用还是很不适应。最初,蓝狮注册登陆有 “很多 “的模板代码,只是让 store 使用减少。不过,状态管理确实给我们带来了遍历,特别是每当我们有一小块应该跨组件共享的状态时,就会更倾向于使用它。 我们先来看看 Vuex 和 Pinia 的整体设计以及它们之间的区别是什么。 Vuex下面是Vuex工作原理的官方图示,刚开始学习时,一看就很懵,不过当用过时 ...
蓝狮官网13个你应该知道的 Webpack 优化技巧
在这篇文章中,我将从三个方面分享一些我常用的技巧: 提高优化速度压缩打包文件的大小改善用户体验。提高速度1、线程加载器多线程可以提高程序的效率,我们也可以在 webpack 中使用。蓝狮官网而thread-loader是一个可以在Webpack中启用多线程的加载器。 安装: npm i thread-loader -D配置: {test: /.js$/,use: [‘thread-loader’,‘babel-loader’],}2、缓存加载器在我们的项目开发过程中,Webpack 需要多次构建项目。为了加快后续构建,我们可以使用缓存,与缓存相关的加载器是缓存加载器 ...
蓝狮官网如何统一前端项目的 Node 版本和包管理器?
通过文档和沟通约束,远不如用工具(代码)约束。开发环境Node.jsPackage Manager (npm、yarn、pnpm)痛点问题成员机器 Node.js 版本不统一: 守旧派用 12.x、保守用 14.x、激进用 17.x。项目能否正常跑起来全凭天意,在没有 CICD 流水线加持本地 npm run build 的场景下线上风险可想而知。 有人习惯用 npm、有人习惯用 yarn, 代码库里面经常会存在 package-lock.json、yarn.lock 文件同时存在的情况。更痛的点还是各种奇奇怪怪问题排查起来没有头绪。 我们要做的就是将问题掐死在源头:锁定 Node.js 版本和包管理器 ...
蓝狮官网多项目node版本自动切换工具-Volta
一、项目痛点每一个前端项目都依赖不同的node版本,随着项目仓库的增多,已经记不清哪个仓库用的是哪个版本的node了,只有在项目安装依赖时发现报错,才会想起来排查默认node环境与项目默认node版本是否匹配,遗憾的是,并不是所有项目都会把node版本依赖这种细节交代清楚,因此也就只能多方打听,耗尽大量时间,只为寻找一个版本号。解决问题后,为了避免其他人踩坑,你将node版本依赖明确的写到README文件中,盼望着其他同事在开发前多看一眼,不要将他自己本地新安装的package.json强制覆盖仓库里的依赖。日积月累,node版本 ...
蓝狮官网JS计算两个日期之间的天数
算法:利用毫秒差,由于1秒等于1000毫秒,60秒等于1分钟,蓝狮注册登陆60分钟一小时,一天24小时。所以毫秒差除以(60×60×1000×24)等于天数。 实现方式一:Date.parse/** 计算两个日期之间的天数@param start 开始日期 yyyy-MM-dd@param end 结束日期 yyyy-MM-dd@returns {number} 如果开始日期等于结束日期,则返回一天;开始日期大于结束日期,则返回0/ function getDaysBetween(start,end){ var startDate = Date.parse(start); var endDate = Date.parse(end); if (startDate>endDate){ return 0; } if (startDate ...
蓝狮官网switch 有四样写法你知道么
JavaScript 的 switch 有四样写法,你知道么?不管你知道不知道,反正我是不知道。 我所知道的 JavaScript 的 switch 语句只有一种写法。但要说到对分支的处理,写法可就多了去了。if 分支写法可以算一种,switch 分支写法可以算第二种,蓝狮注册登陆第三种是使用策略模式,如果要把条件运算符也算上的话,嗯,刚好四种。 不过本文的主角是 switch。大家都了解 switch 的写法一般来说是 switch 变量或表达式,case 常量。嗯,比如说,一个百分制成绩,90 及 90 分以上算优秀,80 及以上 90 以下算良好,60 及以上 80 以下 ...