flex 属性值及其具体表现
1. flex-basisMDN flex-basis 指定了 flex 元素在主轴方向上的初始大小,如在 flex-direction: row 上描述的是其宽度,在 flex-direction: column 上描述的是其高度。 语法: 123456789101112131415161718/ ...

在移动端中使用 100vh 导致页面出现滚动条的解决方法
前言现在有如下的 HTML 结构: 12345<body> <div class="header">Header</div> <div class="content">Content</div> &l ...

Typescript Trick
自定义类型保护函数当一个类型是联合类型时,对其进行类型判断将变得困难,如: 12345678910111213141516171819interface Foo { foo: number; common: string;}interface Bar { ...

从 Webpack 产出分析 Webpack 如何处理 ESM 以及 CJS 模块引用
获取未经压缩的 Webpack 打包产出为了获取 webpack 的原始产出,我们要对 webpack 配置进行如下操作: 移除 babel-loader; optimization.minimize 设置为 false 以关闭 teser 对代码的压缩; optimization.concate ...

记一次 Webpack Vue 项目的异步引入失效
1. 问题发现在回顾 webpack-playground 这个项目的 Vue + TS 模板时,意外发项目中使用 import 异步引入模块时是失效的,代码正常被执行,但是并没有异步引入该方法,方法如下: 12345const addCount = (num: number) => ...

html2canvas 图片跨域问题的解决方案及其原理
1. 前言html2canvas 是一个用于将 DOM 结构转为 canvas 对象的一个库,利用这个库就可以实现对页面的某一部分进行截图这样的功能。 但是由于其工作方式是将 DOM 结构进行解析后渲染在一个离屏 canvas 上,因此会受到一些限制。最常见的就是跨域资源无法被正常渲染,其根本原因是 ...

面试中常见的排序算法总结
1. 冒泡排序 实现解法一(推荐去看解法二): 从第一个元素开始向后进行比较,在一轮比较的过程中,通过持续交换元素位置,将更大的元素推向后方。sortedIndex 表示已经排序好的元素,不参与内部的第二次循环。 1234567891011function babelSort(arr) { ...

带你看懂思源字体的各个版本都有什么区别
1. 前言思源字体是 Adobe 提供的一套开源字体,包含了 思源黑体 source-han-snas,思源宋体 source-han-serif,思源等宽 source-han-mono。其开源协议允许商业用途,同时允许对其进行修改,因此非常适合使用。 我们以思源黑体为例,当我们打开其 Relea ...

数据报告海报生成图片、PDF方案的技术调研
1. 需求梳理现存在一个需求,要求用户可以通过控制左侧的表单选项,在右侧实时展示为用户生成的数据海报,在用户调整完毕后,可以生成共享链接、图片、PDF 三种可分享的媒体形式,整体效果如下图: 2. 海报的实时生成与预览2.1 架构设计整体页面的组件拆分并不复杂,可以简单分为如下几个组件: Gen ...

TypeScript 类型体操通关记录
1. 简单PickSource Pick 是 TypeScript 中的一个内置工具类型,可以从某个类型中提取出来几个特定的属性 Key 来创建一个新的类型: 123456789101112interface Todo { title: string; description: str ...