1.5k1 分钟

现在业务变多经常涉及到组件库的问题,如果只是在参考环境调试效率很低,不能覆盖到业务场景,还需要反复调试,因此,我们就需要对 build 后的产物进行测试。 常见的有三种方案: # 1. 发版进行测试 # 组件开发完成后,修改版本号 yarn build # publish npm login npm publish # 然后在测试的项目中 yarn add my-component # my-component 来自于 组件开发 目录下的 package.json 中的 name 属性 一方案是我们日常应用中最直接的使用场景,然而其缺陷在于我们可能需要频繁发布 beta 版本,这不仅
2201 分钟

出现报错信息 error Couldn't find a package.json file in "/var/lib/jenkins/.cache/yarn/v6/ 猜出大概是跟缓存有关,解决办法: 在 shell 进程中,增加 yarn cache clean 和 yarn --update-checksums 这样就可以升级所有安装过的包的 integrity checksums,即可成功构建。
4981 分钟

# 起因: 在 iPad 打开页面白屏,在网页端 Chrome 可以正常浏览,网页端 Safari 白屏,查看到以下报错。 # 问题原因: (?!) 零宽负向先行断言 (?=) 零宽先行断言 (?<=) 零宽后行断言 (?<!) 零宽负向后行断言。 Safari 浏览器不支持以上四种断言验证 并且直接把正则规则包在 /…/g 里在 Safari 也会报错 # 解决方案: 修改正则断言写法,去除以上四种断言验证 例如可以用. /(?:/)(xxxx)/ 代替 /(?<=
3.5k3 分钟

# 1、Set 原理:Set 类似于数组,但是成员的值都是唯一的,接受一个数组或类数组作为参数。代码最少但是无法去掉 {} 空对象。 let arr = [1, 1, 2, "true", true, true, undefined, undefined, null, null, NaN, NaN, {}, {}, {a:1}, {a:1}] let result = Array.from(new Set(arr)) console.log(result)  /
4.4k4 分钟

# 如何优雅的生成网页截图 这篇文章起源于一个页面生成图片进行下载分享的需求,因为浏览器没有原生的截图 API,所以需要借助 canvas 来实现导出图片实现需求。 首先要知道,svg 到图像的转换过程涉及: 创建 Blob/Blob URL(参阅什么是 Blob URL 以及为什么使用它?) 将其渲染到画布上 返回数据 url # 可行性方案 方案 1: 将 DOM 改写成 canvas ,调用 canvas 的 toBlob 或者 toDataURL 方法即刻上传到七牛云或服务器 方案 2: 使用第三方库实现 canvas , 在不更改页面已有 DOM 的情况下优雅产生 c
1.3k1 分钟

我们开发中经常会碰到 package.json 里面的软件包 的版本号前边有 ,^,甚至有的有 >, < 等标识,那他们都是什么意思呢? 想要知道,^,>,< 这些字符什么意思,我们先去了解一下什么是 npm 的语义版本控制 npm 的语义版本控制 语义版本控制:所有的版本都有 3 个数字: x.y.z 。 x 代表的是主版本(当进行不兼容的 API 更改时,则升级主版本) y 代表的是次版本(当以向后兼容的方式添加功能时,则升级次版本) z 代表的是补丁版本(当进行向后兼容的缺陷修复时,则升级补丁版本) 这是一种约定,每个 npm 包必须遵守该约定,因
9431 分钟

大家都知道,强制一行溢出显示省略号(...)的情况很简单 overflow:hidden;//超出的隐藏text-overflow:ellipsis;//显示省略符号来代表被修剪的文本。white-space:nowrap;//不换行 但是如果要强制两行甚至多行的话,需要用到 css3 的知识点 网上大多版本都是: overflow: hidden; // 超出的文本隐藏text-overflow: ellipsis; // 溢出用省略号显示display: -webkit-box; &
2271 分钟

目前在学习音视频开发中,记录一点学习小心得: 视频加载触发事件 当音频 / 视频处于加载过程中时,会依次发生以下事件: loadstart durationchange loadedmetadata loadeddata progress canplay canplaythrough 所以如果当前帧的数据已加载,但没有足够的数据来播放指定音频 / 视频的下一帧时,会发生 loadeddata 事件。
4011 分钟

从需求出发,想维护一堆字典。在使用时,要么通过枚举直接拿到值,要么拿到对应 options,对于 value/Label 互查,都可以通过 options 得到。 基于以上两点需求: 定义枚举,代码中避免写出 status === 1 这种代码。 export enum Status { WaitPay = 0, Success = 1, Cancel = 2, } 定义对应 options,增加了 label,便于遍历、渲染。另外这里也支持扩展。 export const StatusOptions = [ {
6.6k6 分钟

本期我们要做的是一个四方位云台操控器(也是遥控器),我们需要方向的 icon(自己找或者自己画~)和 ahooks 的 useInterval(ahooks 真好用啊 ) # 1. 实现目标 长按可以设定每 x 秒触发一次接口 点击也可以移动 ... 没了(就是这么简单) # 2. 实现方法 export const DIRECTION_MAP: any = { top: 1, bottom: 6, left: 4, right: 5,};function Ptz(props: IPtzProps) { const [interval,