-
防御性编程之解构赋值
背景 前端开发最头疼的问题之一必有后端的返回值,尤其是在接口没有保证但数据结构又比较复杂的时候, 准确且不报错地拿到我们期望的值是需要花费功夫的事情 (尤其在未使用typescript的时候,对接其他模块同理),所以在对接口时不得不防御性拉满, 毕竟当数据源无法保证时,ui 逻辑层就可能报一...
-
优化mac触摸板的滚动体验
最近在开发个人项目vue3-简历编辑器,其中有个设计类应用常用的操作-拖拽移动画布, 本项目是用 vue3 写的,底层实际是基于 dom 实现,所以画布的拖拽移动,还是基于原生的 scroll 行为,但是使用 mac 触摸板操作时, 发现了一个比较奇怪现象,核心代码抽离成 demo 效果如下:...
-
典型算法题汇总
本文题单来自LABULADONG 的算法网站 链表 合并两个有序链表 类似拉拉链,维护一个指针,与当前链表的头指针不断比较 var mergeTwoLists = function (list1, list2) { //虚拟链表头 const dummy = { next: n...
-
2022前端面试八股文汇总
互联网寒冬,面试八股牢记于心。话虽如此,巩固并吃透一个知识点才是正道。 技术飞速迭代的今天,当你学不动的时候,停下脚步歇歇,回头看看也未尝不可。 作为一个正在接受社会毒打的前端工程师,以下是个人收集并归纳总结的一些面试常见问题, 问题的相关细节会放在括号中,方便拓展和举一反三。 JavaSc...
-
vue2技术揭秘笔记
本文是vue 技术揭秘的笔记 (以下统一《揭秘》指代), 除非特指,vue 都是指的 2.x 版本。 跟着大佬的脚步过了一边 vue2 底层,分析得很详细,站在巨人的肩膀上果然能够看的更高,有时间精力能力的时候必定自己读一番源码。 揭秘主要分为了数据驱动、组件化、响应式原理、编译拓展这几个部...
-
JavaScript中的模块
前端模块化是一个老生常谈的问题,从早期的 IIFE 到 CommonJS,后续为了解决异步加载的 AMD, 再后续为了统一而出现的 UMD, 再到如今的 ESM…模块化方案一直再不断的演进和完善。本文是根据红宝书以及阮一峰《ES6 标准入门》整理而来。 模块模式 红宝书首先花了比较大的篇幅...
-
JavaScript中的继承
继承一直是面向对象编程讨论得最多得东西,而 JavaScript 由于其本身的特点,继承更是别具一格, 今天还是跟着红宝书的脚步深入了解 JavaScript 中的继承。 传统的面向对象语言支持两种继承: 接口继承和实现继承。由于在 ES 规范中就没有函数签名一说,所以接口继承在 js 中是...
-
JavaScript迭代器和生成器
async await的原理是什么?第一次听到这个问题是有点懵逼,这还有原理吗?但得知async await 其实是生成器的语法糖时,才发现自己平时对生成器几乎没有关注,还是得好好学习一番。 迭代器,Iterator 很多资料迭代器和生成器都是放在一起讲的,两个都是 ES6 推出的高级特性...
-
JavaScript修饰器
最近在接触 nest.js,发现其大量的使用了修饰器,这可让长期码业务的我有点不知所措,毕竟根本没有在工作中使用过这玩意儿。 修饰器(也称装饰器 Decorator)是在 ES8 中引入的,红宝书和犀牛书似乎都没有相关的介绍,本文跟着阮一峰老师的《ES6 标准入门》 来进一步学习。 装饰器模...
-
静态博客站点搭建攻略
本文简单介绍个人博客站点搭建流程,相关原理以及白嫖资源推荐。 域名 域名选购 一个好记的域名,能很大程度的增加网站的访问量,甚至还有收藏价值(传闻天猫的域名tmall.com就是从个人手上几百万买下来的), 现在各大互联网厂商都进入了云时代,购买域名变得十分简单,阿里云、腾讯云显著位置都能...
-
Yarn与Npm
用 yarn 就完事了 没啥好比的,yarn 比 npm 快太多了,用 yarn 就完事了,相关的底层原理对比网上冲浪看别的大佬的分析就好了, 本菜鸡没有分析的实力…… yarn 常用命令 yarn或yarn add,安装工程依赖 yarn add packageName,安装...
-
SEO优化关键点
关键点 title 出现在搜索结果第一行 简短而准确 子页面使用不同的标题 描述元 当没有更符合的内容时,可能出现在摘要位置 准确概括页面内容 子页面创建不同的描述 ...
-
MacBook常用操作记录
长期使用windows系统的程序员,突然换了MacBook不太适应,简单记录下MacBook常用的操作 三指向上滑动,调度中心 三指左右滑动,切换桌面 四指张开(食指、中指、无名指并拢,跟大拇指张开),显示桌面 command+空格,聚焦搜索 shift+command...
-
JavaScript常用正则语法总结
常用语法 [] 字符集 () 分组 ? 可选 0或1 + 至少一个 1~任意 * 任意数量 . 换行以外的字符 {number1,number2} 指定数量 number1~number2 ^ 匹配开始 $ 匹配...
-
使用GithubActions部署静态资源(vue)到GitHubPages
Github支持给项目设置secret,在workflow中可直接使用, 通过action可以很方便将一些纯静态资源部署到GitHub Pages中,如vue项目,而非Jekyll。 创建gh-pages分支 Github会默认将gh-pages分支的内容部署到项目的GitHub ...
-
设计模式与JavaScript基础笔记
本文主要为设计模式与JavaScript下实现的相关笔记,时常更新 设计原则 开闭原则(Open Closed Principle,OCP) 软件实体应当对扩展开放,对修改关闭 单一职责原则(Single Responsibility ...
-
Jekyll Github Page部署总结
很久之前就想着要搭建博客,但都因为各种原因不了了之,时间一长,技术飞速迭代,脑子很难记下所有的东西,于是下定决心将工作学习中的点滴记录沉淀下来。 折腾了半天终于把githubPage捣鼓好了,简单记录下过程(ps:本篇非详细教程)。 为什么选择Github Page 一直以来都喜欢彰显个...
-
简单的前端版本标记方案
背景 很多时候我们会遇到这样的情况:当测试/产品等等因页面上的问题找到前端开发时,我们首先可能会去相应的环境场景复现,然后再进行检查请求参数等一系列的bug查找,然后本地调式发现无法复现。 这时我们可能已经意识到了代码可能不是最新的,然后进行ctrl+f5强制刷新,重新构建jenkins等...
-
Markdown与写作
种一棵树,最好的时间是十年前,其次是现在。 好记性不如烂笔头,知识飞速迭代的互联网时代,需要时刻做好学习的准备, 或者不断巩固已经掌握的知识。曾经在博客上花了很多功夫,但都是捣鼓一些表面上的东西, 动效啦样式等等花里胡哨的,也不断的探寻过哪款写作笔记软件更加好用… 渐渐地,也终于意...
-
自定义element-ui表格展开折叠交互的特殊姿势
背景 最近开发中遇到这样一个场景:固件列表对同一型号,但不同版本的固件需要支持展开折叠操作 实际上我们只需要将表格展开折叠自定义即可(将箭头展开替换为文字按钮触发) 但很可惜,文档中没有有替换这个默认箭头的方法 探索:tableStore 一开始尝试过使用展开行的方式,使用t...
-
更改element-ui组件滚动高度的特殊姿势
背景 项目开发中有一个较特殊的组件,可编辑的下拉框 在点击添加学历时,在列表末尾追加一个输入框,同时将select滚动到底部,坑爹的是element-ui并没有直接的方法操作滚动高度 scrollbar组件 element-ui中,滚动条是额外实现的,带了滚动条的组件都会引入scr...
-
前端知识点总结
JavaScript JavaScript 与 ECMAScript JavaScript的实现包含ECMAScript、BOM和DOM ECMAScript是一个脚本语言标准,由ECMA-262定义并提供核心功能,只对语言的语法、类型、语句、关键字、保留字、操作符、全局对象等进...
-
数据结构与算法基础笔记
本文主要是一些数据结构与算法书籍的笔记,不对算法做具体深入的研究,时常更新。 复杂度计算 简单理解就是单位花操作时间(操作步数)后,求运行时间的极限表达式 时间复杂度:输入数据与运行时间之间的关系 空间复杂度 哈希函数与哈希表 ...
-
《ECMAScript 6 入门》笔记
本文主要为阮一峰《ECMAScript 6 入门》读书笔记以及相关思考,时常更新 let和const 区别 var const let ...