我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 认识ESM
  • chrome-talend插件,类似postman
  • sequelize 使用及技巧
  • UML工具Power Designer建表
  • sequelize相关操作文档
  • 解决抖音获取签名及并发的问题
  • 记一次解决抖音分享页混淆字体,字体图标转UID解决方案
  • 获取抖音用户作品列表信息
  • 获取抖音用户作品列表信息-进阶
  • 获取抖音用户作品列表信息-进阶3
  • 如何根据抖音号获取用户信息
  • 获取用户最新视频
  • 模块化-import和require的区别
  • eslint规范
    • 前端代码规范(eslint-prettier-husky)
      • 安装工具
      • 配置文件
  • js容错处理
  • js-数组分组,执行promise
  • reduce使用遇到的问题
  • 正则匹配html的元素内容
  • taro 小程序 弹窗层禁止底部滚动
  • 公众号签名问题
  • CentOS7中MariaDB重置密码
  • nginx多域名配置
  • node访问接口,得到乱码的结果,原因-Accept-Encoding
  • node写文件到json中
  • node抓取html内容
  • Node.js使用ES6语法
  • express 使用cors中间件解决跨域
  • node + express + session + redis 进行持久化缓存
  • node中读取文件夹,获取文件名称
  • pm2常用命令
  • 使用pm2管理后台node服务
  • typescript puppeteer支持window及document属性
  • node读取json文件
  • node中使用redis缓存
  • node + github的webhook完成自动部署
  • vuepress-blog的性能优化-CDN
  • CENTOS7下安装REDIS
  • promise then和catch的学习和使用
  • promise在循环中的串行并行用法
  • puppeteer常用知识
  • centos部署安装puppeteer
  • python的学习和使用
  • Taro+TypeScript - Mobx实践
  • 爬虫系列 --- 反爬机制和破解方法汇总
  • 安全-html转码
  • taro中使用animation动画
  • charles 使用
  • Mac下VSCode设置iTerm2终端样式
  • centos一步步完成站点部署
  • 云闪付做地铁的思路
  • 准备技能
  • 备案pc项目介绍
  • 备案小程序项目介绍
  • 小程序二维码扫码功能
  • 小程序域名组件开发
  • 小程序添加水印
  • 规则引擎优化
  • 记一次hooks代替redux的经历
  • 通过nodejs+koa+stream进行服务端图片代理
  • nodeJs接入log4j日志
  • nodejs+typescript项目中添加全局global属性
  • create-react-app 安装 bizcharts 项目崩溃
  • 使用MutationObserver监控dom的变化
  • 服务器重启后启动相关服务
  • moment国际化的问题
  • 项目经验
fangdown
2021-07-26
目录

eslint规范

# 前端代码规范(eslint-prettier-husky)

# 安装工具

  1. eslint
  2. prettier
  3. husky
npm i -D eslint husky lint-staged prettier eslint-plugin-prettier eslint-config-prettier eslint-config-alloy @typescript-eslint/eslint-plugin @typescript-eslint/parser

# 配置文件

  1. 配置 package.json
...,
scripts:{
  ...,
  "eslint": "eslint src --ext .ts,.js",
  "fix:eslint": "eslint src --fix --ext .ts,.js",
  "fix:prettier": "prettier --write \"**/*.{ts,tsx,js,jsx,json,css,less,yml,yaml,md}\""
}

"husky": {
  "hooks": {
    "pre-commit": "lint-staged"
  }
},
"lint-staged": {
  "src/**/*.{ts,js}": [
    "eslint --fix --ext .ts,.js",
    "prettier --write",
  ]
},
  1. .eslintrc.js
module.exports = {
  extends: [
    "alloy",
    "alloy/typescript",
    // 使用prettier中的样式规范,且如果使得ESLint会检测prettier的格式问题,同样将格式问题以error的形式抛出
    "plugin:prettier/recommended",
  ],
  env: {
    // 您的环境变量(包含多个预定义的全局变量)
    // Your environments (which contains several predefined global variables)
    browser: true,
    node: true,
    es6: true,
    // mocha: true,
    jest: true,
    // jquery: true
  },
  globals: {
    // 您的全局变量(设置为 false 表示它不允许被重新赋值)
    // Your global variables (setting to false means it's not allowed to be reassigned)
    // myGlobal: false
  },
  settings: {},
  // "off" 或 0 - 关闭规则
  // "warn" 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出)
  // "error" 或 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)
  rules: {
    // TODO:代表要修复,没有标记则规则保留规则"off"状态
    // 在类属性和方法上需要显式的可访问性修饰符
    '@typescript-eslint/explicit-member-accessibility': 'off',
    '@typescript-eslint/no-this-alias': 'off',
    // 确保了this.props在constructor完成之前就被赋值
    '@typescript-eslint/no-useless-constructor': 'off',
    //  待定
    '@typescript-eslint/no-dynamic-delete': 'off',
    // 必须使用 === 或 !==,禁止使用 == 或 !=
    eqeqeq: 'off',
    // 禁止变量申明时用逗号一次申明多个
    'max-params': 'off',
    // 强制可嵌套的块的最大深度
    'no-useless-constructor': 'off',
    // 关闭禁止不必要的布尔类型转换
    'no-extra-boolean-cast': 'off',
    // 禁止重复导入模块,可留
    // TODO
    'no-duplicate-imports': 'off',
    // 禁止使用较短的符号实现类型转换
    'no-implicit-coercion': 'off',
    // 禁止在对象中使用不必要的计算属性
    'no-useless-computed-key': 'off',
    'no-undef': 'off',
    'one-var': 'off',
    // 默认情况下,parseInt()将自动检测十进制和十六进制(通过0x前缀),可留
    // TODO
    radix: 'off',
    // 强制在注释中 // 或 /* 使用一致的空格,可留,修改很大
    // TODO
    'spaced-comment': 'off',
    // 条件判断中字面量在先而变量在第二的位置
    yoda: 'off',
    'no-unused-vars': 'error'
  }
};
  1. .prettierrc.js
module.exports = {
  // 一行最多 100 字符
  printWidth: 100,
  // 使用 2 个空格缩进
  tabWidth: 2,
  // 不使用缩进符,而使用空格
  useTabs: false,
  // 行尾需要有分号
  semi: true,
  // 使用单引号
  singleQuote: true,
  // jsx 不使用单引号,而使用双引号
  jsxSingleQuote: false,
  // 末尾不需要逗号
  trailingComma: "none",
  // 大括号内的首尾需要空格
  bracketSpacing: true,
  // jsx 标签的反尖括号需要换行
  jsxBracketSameLine: false,
  // 箭头函数,只有一个参数的时候,也需要括号
  arrowParens: "always",
  // 每个文件格式化的范围是文件的全部内容
  rangeStart: 0,
  rangeEnd: Infinity,
  // 不需要写文件开头的 @prettier
  requirePragma: false,
  // 不需要自动在文件开头插入 @prettier
  insertPragma: false,
  // 使用默认的折行标准
  proseWrap: "preserve",
  // 根据显示样式决定 html 要不要折行
  htmlWhitespaceSensitivity: "css",
  // 换行符使用 lf
  endOfLine: "lf",
};
  1. .vscode/settings.json
{
  "editor.tabSize": 2,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "typescript.tsdk": "/node_modules/typescript/lib",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true,
    "source.fixAll.stylelint": true
  }
}

  1. vscode 自动保存格式化

vscode->首选项->设置->选择保存时自动格式(Format On Save)

  1. vscode 安装插件
  • prettier
  • eslint
#技能
上次更新: 2021/12/19, 18:05:42
模块化-import和require的区别
js容错处理

← 模块化-import和require的区别 js容错处理→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式