共计 1476 个字符,预计需要花费 4 分钟才能阅读完成。
前言
几乎所有项目现在都在用 git 了,之前的 SVN 已经很少用,很久之前还写过 git 的相关操作文章 https://www.haorooms.com/post/git_common_ml
工程化的发展,对 codeReview 和代码质量有了较高的要求。也出现了很多 git 提交前代码校验的工具,git 钩子插件。今天主要介绍一下 husky,及 js 的 try catch 这两个小的知识点吧。
husky 介绍
husky 能够防止不规范代码被 commit、push、merge 等等。
首先安装 husky
npm install husky --save-dev
或
yarn add husky --dev
编辑 package.json 文件,如:
"husky": {
"hooks": {"pre-commit": "npm run lint-staged"// 执行相关代码校验}
},
"scripts": {
"lint-staged": "lint-staged",
"lint-staged:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty",
},
"lint-staged": {
"**/*.less": "stylelint --syntax less",
"**/*.{js,jsx,tsx,ts,less,md,json}": [
"prettier --write",
"git add"
],
"**/*.{js,jsx}": "npm run lint-staged:js",
"**/*.{js,ts,tsx}": "npm run lint-staged:js"
},
当你 git commit 的时候,将会现现执行 precommit 里的脚本,没有问题了再提交。
try catch
文章太短,再介绍一个小的知识点,就是 try catch。try catch 我们很常用,但是滥用会有性能问题,所有我们要慎用!
try catch 语法如下:
try {// 可能会导致错误的代码} catch (error) {// 在错误发生时怎么处理}finally {// 即使报错始终执行}
因为在运行 try catch 时,需要将当前的词法环境和作用域全部分别添加到 catch 和 Finally 所要执行的代码块中。可以推断出 try catch 是消耗性能的。
通过对比如下两组数据
// 没有加 try catch
(function () {
var i = 0;
i++;
}())
// 有 try catch
(function () {
var i = 0;
try {i++;} catch (ex) {} finally {}
}())
发现有 try catch 的一组数据,确实消耗性能比较大。
try catch 无法捕获异步请求错误
try {setTimeout(()=>{
const A = 1
A = 2
},0)
} catch (err) {
// 这里并不能捕获回调里面抛出的异常
console.log("-----haorooms catch error------")
console.log(err)
}
慎用 try catch
try catch 最适合处理那些我们无法控制的错误,如 I / O 操作等,后端 nodeJs 或 java 读取 I / O 操作比较多比如读数据库,所以用 try catch 比较多。前端可以用在上传图片、使用别人的 js 库报错、async await 同步调接口等地方适用。
但是大部分前端客户端代码处理都不怎么依赖环境也没有 I / O 操作,都是自己写的代码,在明明白白地知道自己的代码会发生错误时,再使用 try catch 语句就不太合适了,对应数据类型的错误,建议用解构赋值指定默认值、&& 和 || 来规避,所以慎用 try catch。