规范化标准

1、规范化介绍

1、为什么要有规范标准

开发需要多人协同、喜好与编码习惯不一致增加项目维护成本、项目/团队需要统一标准

2、哪里需要规范标准

代码、文档、提交日志
开发过程中人为编写的内容
代码标准规范最为重要

3、实施规范化的方法

编码前人为的标准约定
通过工具实现Lint

常见的规范化实现方式
ESLint工具使用
定制ESLint校验规则
ESLint对TypeScript的支持
ESLint结合自动化工具或者Webpack
基于ESLint的衍生工具
Stylelint工具的使用

2、EsLin介绍

最主流的JavaScript Lint工具 监测 js 代码质量
EsLint 很容易统一开发者编码风格
提升编码能力

3、EsLin安装

初始化项目
安装EsLint(是一款jiNodeJS开发的npm模块)模块为开发依赖
通过CLI命令验证安装结果

npm init --yes
npm install eslint --save-dev
通过路径找到eslint的可执行文件
通过–version 查看当前安装的eslint的版本
cd ./node_modules/.bin
./eslint --version
或者 npx eslint --version
npx是npm最新版本中集成的一个工具

4、EsLin 快速上手

编写问题代码
使用EsLint执行检测
完成EsLint使用配置

npx eslint ./01-prepare.js
报错 没有找到配置文件
npx eslint --init
选择如何使用eslint
选择哪一种模块化类型
用的是哪一款框架
你有使用TS吗
选择风格
Airbnb:自家公司的具体编码规范
Standard:开源社区中的规范,最大特点语句末尾不用添加分号
Google:自家公司的具体编码规范
还会根据提示自动安装Standard的插件
项目中就会自动生成.eslintrc.js文件

然后执行npx eslint ./01-prepare.js 报出检查出来的错误。根据提示一次解决
也可以直接–fix修正
npx eslint ./01-prepare.js --fix 可以解决风格上的代码
未被使用到的代码等其它没有被自动修复的代码需要手动删除

5、EsLin 配置文件解析

browser: false没有报出document未定义的错误,这是因为在生成eslint配置的时候选择的是standard的风格,其中做了些配置,这时window和document在任何环境中都可以去使用的。alert会报错

// .eslintrc.js
// 运行在node环境中。使用commonJS规范
module.exports = {
  // 标记当前代码最终的运行环境,eslint会根据环境的信息来判断某一个全局成员是否是可用的,
  // 从而避免代码中使用到不存在的成员
  env: { 
    // 每一种环境对应着一组预定义的全局变量,一旦开启了某个环境,那么这个环境中所有的全局成员就都能够直接被允许进行使用
    browser: false, // 表示代码是否会运行在浏览器环境中
    es6: false
  },
  extends: [ // 用来继承一些共享的配置
    'standard'
  ],
  parserOptions: { // 用来设置语法解析器的相关配置。用于控制是否允许使用某一个ES版本的语法。这边只是影响语法检测不代表成员是否可用
    ecmaVersion: 2015
  },
  rules: { // 配置每个校验规则的开启和关闭
    'no-alert': "error" // off warn error
  },
  globals: { // 额外的声明在代码中可以使用的全局成员
    "jQuery": "readonly"
  }
}

// 演示代码
// document.getElementById("#abc")
// alert(11)
// const foo = 1
// let foo2 = 2
// let a = new Promise()
// alert(11) 
jQuery("#abc")

env的环境配置如下
在这里插入图片描述

6、EsLint 配置注释

将配置直接通过注释的方式直接写在脚本文件当中

const str1 = "${name} is a coder" // eslint-disable-line no-template-curly-in-string 

参考:eslint配置选注释参考

7、EsLint 结合自动化工具

集成之后,ESLint一定会工作
与项目统一,管理更加方便
克隆案例项目
完成相应的依赖安装
完成eslint模块安装
完成gulp-eslint模块安装

在这里插入图片描述
npx eslint --init
npx gulp script
format在控制台中打印具体的错误信息,之后使用failAfterError方法让eslint在检查到问题之后可以终止任务管道
在这里插入图片描述
npx gulp script

8、EsLint 结合Webpack

Webpack集成Eslint不是以插件的方式来完成的,而是通过loader机制。webpack打包模块之前会先将遇到的模块都交给对应的loader进行处理。
克隆案例项目
安装对应模块
安装eslint模块
安装eslint-loader模块
初始化.eslintrc.js配置文件
在这里插入图片描述
npx webpack

9、EsLint 结合Webpack后续配置

npm install eslint-plugin-react
在这里插入图片描述
在这里插入图片描述

10、现代化项目集成ESLint

npm install @vue/cli -g
vue creat syy-vue-app
npm run serve

11、ESLint检查TypeScript

安装 typescript
npx eslint --init

odule.exports = {
  env: {
    browser: true,
    es2020: true
  },
  extends: [
    'standard'
  ],
  parser: '@typescript-eslint/parser', // 指定一个语法解析器
  parserOptions: {
    ecmaVersion: 11
  },
  plugins: [
    '@typescript-eslint'
  ],
  rules: {
  }
}

npx eslint ./index.ts

12、Stylelint认识

提供默认的代码检查规则
提供CLI工具,快速调用
通过插件支持Sass Less PostCSS
支持Gulp或Webpack集成
npm install stlelint -D
npx stylelint ./index.css 报错找不到相应文件
.stylelintrc.js
stylelint没有可用的共享配置,需要自行安装模块
npm install stylelint-config-standard

// .stylelintrc.js
module.exports={
	extends: "stylelint-config-standard" // 这边需要完整的模块
}

npx stylelint ./index.css 即可发现问题 也可以使用–fix先完成大多数问题的自动化修复

校验sass代码
需要安装 npm install stylelint-config-sass-guidelines -D

// .stylelintrc.js
module.exports={
	extends: [
		"stylelint-config-standard", 
		"stylelint-config-sass-guidelines"
	]
}

npx stylelint ./index.sass 即可发现错误

13、prettier 的使用

一款通用的前端代码格式化工具
npm install prettier -D
npx prettier style.css 默认会把格式化之后的代码输出在命令行中
如果想要将格式化之后的代码直接覆盖到源文件当中可以执行
npx prettier style.css --write

npx prettier . --write

14、Git Hooks介绍

代码提交到仓库之前未执行lint操作
通过Git Hooks在代码提交之前强制 lint
Git Hook也称之为git钩子,每个钩子都对应一个任务
通过shell脚本可以编写钩子任务触发时要具体执行的操作
git init .git目录下hooks子目录 .git/pre-commit-sample
复制修改名字 pre-commit
#!/bin/sh // 决定当前代码运行的环境
echo “before commit” 保存

touch demo.txt
vim demo.txt
111 :wq
git status

15、ESLint结合Git Hooks

很多前端开发者并不擅长使用shell
Husky 可以实现Git Hooks的使用需求

删除pre-commit 的文件
npm install husky -D

// package.json
"husky":{
	"hooks":{ // 里面为不同的hook定义不同的任务 
		"pre-commit": "npm run test" // 这样就可以找到scripts下test对应的代码操作
	}
}

如何执行lint

// package.json
"scripts":{
	"test":"eslint ./index.js"
}

想在检查后代码格式化或者格式化之后代码添到暂存区,这时husky就不够用了
lint-stage配合husky
npm install lint-staged -D

// package.json
"scripts":{
	"test":"eslint ./index.js",
	"precommit":"lint-staged"
},
"husky":{
	"hooks":{ // 里面为不同的hook定义不同的任务 
		"pre-commit": "npm run precommit" // 这样就可以找到scripts下test对应的代码操作
	}
},
"lint-staged":{
	"*.js":[
		"eslint",
		"git add"
	]
}

git add .
git commit -m “test”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值