Husky使用

Husky 使用配置

husky 简述

husky 支持所有 git 相关钩子,在对应 git 操作触发时,可以执行测试、代码校验等相关任务。

以代码校验为例来说明

代码校验 lint-staged 相关配置如下

{
"devDependencies": {
"lint-staged": "^11.1.2",
},
...,
"lint-staged": {
"*.{js,jsx,ts,tsx,vue}": "eslint --cache --fix"
}
}

后续代码中,其余配置为 husky 相关,通过这些配置,我们在 commit 代码时,会校验代码错误与格式,校验不通过会有提示。
Husky使用20210924150933

Husky 在版本 5 中配置做了大变动,具体前后的配置以版本来说明。

V5+

阅读全文

HTTPS加密方式

HTTPS概述

加密缘由

数据明文传输在经过wifi热点、路由、通信服务运营商等物理节点时信息容易被劫持暴露而不被发觉。

数据明文传输容易被中间人攻击,存在以下风险

  • 窃听
  • 篡改
  • 冒充

HTTPS

阅读全文

设计模式综述

简介

设计模式是在软件工程多年的发展中,经过前人不断挖坑填埋总结而来。
一般认为有 23 种,其他多是基于这 23 种延伸。
在面向对象编程语言中,
设计模式一般遵循 SOLID 原则
Acronym | EN | CN | DESC
– | – | – | –
S |Single Responsibility Principle | 单一职责原则 |一个程序只做好一件事,复杂功能拆开
O | Open-closed Principle| 开放/封闭原则 | 对扩展开放,对修改封闭,增加需求时,扩展新代码,而非修改已有代码
L |Liskov Substitution Principle | 里氏替换原则 |子类能覆盖父类,父类能出现的地方子类就能出现
I | Interface Segregation Principle| 接口隔离原则 |接口职责单一,防止接入不使用的接口与方法
D |Dependency Inversion Principle | 依赖倒转原则 | 面向接口编程,依赖于抽象而不依赖于具体,使用方只关注接口而不关注具体类的实现

设计模式原则

Single Responsibility Principle

阅读全文

Shell常见操作汇总

获取执行脚本的位置

通过dirname "$0"获取当前执行脚本所在位置。

BASEDIR=$(dirname "$0")
echo $BASEDIR

示例

Shell 脚本相互调用

在 Shell 脚本内部调用其他 Shell 脚本,使用如下方法:

  • sh
  • source
  • 点号(.)

使用点号和 source 的效果基本一致,等同于将其他脚本的内部内容放在当前脚本运行。
引入脚本和当前脚本执行时位于同一进程中,引入脚本可以获取到当前脚本中的变量。
sh 引入的脚本会单开一个子进程,其无法获取到当前脚本中的变量,要获取该变量,需要使用 export 导出。
有如下两个在同级目录的脚本 a 和 b
a.sh

a=1
echo "b is $b"
# b is
BASEDIR=$(dirname "$0")
echo $BASEDIR
. "$BASEDIR/b.sh"
# a is 1
echo "b is $b"
# b is 2
source "$BASEDIR/b.sh"
# a is 1
sh "$BASEDIR/b.sh"
# a is
export a
sh "$BASEDIR/b.sh"
# a is 1

b.sh

echo "a is $a"
b=2

示例

脚本中断与执行

阅读全文

Shell中sed的使用

sed 简介

sed 是一种流文本编辑器,用于读取指定文件或标准输入。
如果没有文件被指定,可由命令列表来指定输入,进行相应修改后写入到标准输出。
本文后续内容以skyline.txt示例,可在根目录执行下述脚本。
其文本内容为

test
skyline
test2
skyline test

选项参数

-n

阅读全文

Shell中xargs使用

概述

Shell 中只有部分命令支持标准输入,例如 wc、grep、xargs 等,通过管道 | 很容易将前置命令的标准输出传递给这些命令。但是部分命令不支持标准输入,不能通过管道 | 直接操作,例如 echo rm mkdir 等。这需要 xargs 为那些不支持标准输入的命令提供管道操作。
通过 xargs 将标准输入转换成参数来完成后续命令。如果转换成的参数有多个(通过标准输入空符分割),后续命令重复执行。

The xargs command in UNIX is a command line utility for building an execution pipeline from standard input. Whilst tools like grep can accept standard input as a parameter, many other tools cannot. Using xargs allows tools like echo and rm and mkdir to accept standard input as arguments.

基础使用示例

echo

阅读全文

Git常见操作

回滚

revert

git revert [commit-id]

revert 可将代码回滚到指定版本,但会留下一条回滚记录

reset

阅读全文

浏览器回流与重绘

页面渲染

渲染流程

浏览器使用流式布局模型 (Flow Based Layout),浏览器从拿到代码到渲染页面,主要流程

  • 解析 HTML 节点,创建 DOM 树
  • 解析 CSS 创建 CSSOM 树
  • 合并 CSSOM 与 DOM 为 渲染树(renderTree)
    • 由 DOM 树 Root 节点开始遍历获取可视节点
    • 对于 DOM 的可视节点,获取其对应 CSSOM 树规则
    • 根据两棵树上获取的节点与样式,合成 renderTree
  • Layout,计算出 renderTree 每个节点的大小和位置
  • Paint, 绘制 renderTree 到页面上

合并的 renderTree 的过程只获取可视节点,将会忽略不可视节点 (meta, script, link 等节点及 display:none 的节点)。

浏览器回流与重绘20230310142853

渲染原理

阅读全文


Copyright © 2017 - 2024 鹧鸪天 All Rights Reserved.

skyline 保留所有权利