前言
几乎所有项目现在都在用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。