前端工程化---规范化

41 阅读6分钟

命名规范

代码规范

git代码提交规范

工作流程规范

面试题

eslint9的新特性有哪些,性能做了哪些优化?

1.ESLint v9 的新特性

(1) 支持 ES2023 新语法

  • ESLint v9 将支持最新的 ECMAScript 标准(如 ES2023)中的新语法特性。

  • 例如:

    findLastfindLastIndex:数组方法。

    Hashbang Grammar:支持 Shebang(#!)语法。

(2) 改进的 TypeScript 支持

  • 进一步优化对 TypeScript 的支持,包括:

    更好的类型推断。

    支持最新的 TypeScript 版本(如 TypeScript 5.x)。

    修复与 TypeScript 插件相关的已知问题。

(3) 新的规则和规则改进

  • 引入新的规则以覆盖更多的代码质量和风格问题。
  • 对现有规则进行改进,提供更多的配置选项和更精确的检查。

(4) 更好的插件系统

  • 改进插件 API,使插件开发更加灵活和高效。
  • 提供更多的钩子(hooks)和扩展点,支持更复杂的自定义逻辑。

(5) 配置文件格式改进

  • 支持更灵活的配置文件格式(如 JSON、YAML、JavaScript)。
  • 提供更直观的配置选项,简化配置文件的编写。

2.ESLint v9 的性能优化

(1) 更快的解析器

  • 优化默认解析器(如 espree)的性能,减少解析时间。
  • 支持更高效的 AST(抽象语法树)生成和遍历。

(2) 增量构建

  • 引入增量构建机制,只重新检查发生变化的文件,而不是整个项目。
  • 显著提升大型项目的检查速度。

(3) 并行检查

  • 支持多线程或并行检查,充分利用多核 CPU 的性能。
  • 通过并行化处理,减少检查时间。

(4) 缓存机制

  • 引入更智能的缓存机制,避免重复检查未变化的代码。
  • 缓存结果可以在多次运行之间共享,进一步提升性能。

(5) 减少内存占用

  • 优化内存管理,减少 ESLint 运行时的内存占用。
  • 通过更高效的数据结构和算法,降低资源消耗。

3.其他改进

(1) 更好的错误报告

  • 提供更详细的错误信息和修复建议。
  • 支持更友好的错误格式(如 Markdown、HTML)。

(2) 改进的 CLI 体验

  • 提供更直观的命令行界面(CLI),支持更多的命令和选项。
  • 改进的交互式模式,方便用户快速配置和运行 ESLint。

(3) 更丰富的文档

  • 提供更详细的官方文档和示例,帮助用户更好地理解和使用 ESLint。
  • 改进的社区支持,提供更多的教程和最佳实践。

4.总结

特性/优化描述
新语法支持支持 ES2023 和 TypeScript 的最新特性。
规则改进引入新规则,改进现有规则。
插件系统提供更灵活的插件 API 和扩展点。
配置文件格式支持更灵活的配置文件格式,简化配置。
性能优化更快的解析器、增量构建、并行检查、缓存机制和减少内存占用。
错误报告提供更详细的错误信息和修复建议。
CLI 体验改进的命令行界面和交互式模式。
文档和社区提供更详细的文档和社区支持。

ESLint v9 的发布将进一步增强其作为 JavaScript/TypeScript 代码检查工具的功能和性能,帮助开发者编写更高质量的代码。

eslint怎么用配置规则去检测代码的异常?

ESLint 是一个用于检测 JavaScript 代码中潜在问题和风格问题的工具。它通过配置规则(rules)来分析代码,并报告不符合规则的代码。ESLint 如何利用配置规则检测代码异常的详细过程:

1.ESLint 的工作流程

(1) 代码解析

  • ESLint 使用 解析器(Parser) 将源代码转换为 AST(抽象语法树)
  • 默认的解析器是 espree(基于 acorn),但也可以配置其他解析器(如 @babel/eslint-parser 用于支持 Babel 语法)。

(2) 规则应用

  • ESLint 根据配置的规则(rules)遍历 AST,检查代码是否符合规则。
  • 每条规则是一个函数,接收 AST 节点作为参数,检查节点的属性是否符合规则。

(3) 报告问题

  • 如果代码违反了规则,ESLint 会生成一个 问题(issue) ,包括问题的类型、位置和描述。
  • 问题会被输出到控制台或保存到文件中。

2.规则的工作原理

(1) 规则的定义

  • 每条规则是一个 JavaScript 模块,导出一个对象,包含 metacreate 两个属性:

    • meta:规则的元信息,如类型、文档、是否可修复等。
    • create:一个函数,返回一个对象,包含 AST 节点的监听器。

(2) 规则的实现

  • create 函数中,规则会监听特定的 AST 节点类型(如 VariableDeclarationFunctionDeclaration 等)。
  • 当 ESLint 遍历 AST 时,会调用对应的监听器函数,检查节点的属性是否符合规则。

(3) 示例:自定义规则

以下是一个简单的自定义规则,用于检查变量名是否为小写:

module.exports = {
  meta: {
    type: 'suggestion', // 规则类型
    docs: {
      description: 'Enforce lowercase variable names', // 规则描述
    },
    schema: [], // 规则配置选项
  },
  create(context) {
    return {
      // 监听 VariableDeclarator 节点
      VariableDeclarator(node) {
        const variableName = node.id.name;
        if (variableName !== variableName.toLowerCase()) {
          // 报告问题
          context.report({
            node,
            message: 'Variable name should be lowercase.', // 错误信息
          });
        }
      },
    };
  },
};

3.规则的配置

(1) 配置文件

  • ESLint 的规则通过配置文件(如 .eslintrc.js)进行配置。

  • 每条规则可以配置为以下值:

    • "off"0:关闭规则。
    • "warn"1:将规则视为警告。
    • "error"2:将规则视为错误。

(2) 示例配置

module.exports = {
  rules: {
    'no-unused-vars': 'error', // 禁止未使用的变量
    'indent': ['error', 2], // 强制使用 2 个空格缩进
    'quotes': ['error', 'single'], // 强制使用单引号
  },
};

4.ESLint 的核心组件

(1) 解析器(Parser)

  • 将源代码转换为 AST。
  • 默认解析器是 espree,但可以配置其他解析器(如 @babel/eslint-parser)。

(2) 规则(Rules)

  • 定义代码检查的逻辑。
  • ESLint 内置了大量规则,也支持自定义规则。

(3) 插件(Plugins)

  • 扩展 ESLint 的功能,提供额外的规则和配置。
  • 例如,eslint-plugin-react 提供了 React 相关的规则。

(4) 配置(Configuration)

  • 定义规则的启用状态和配置选项。
  • 支持多种配置文件格式(如 .eslintrc.js.eslintrc.json)。

(5) 处理器(Processors)

  • 用于处理非 JavaScript 文件(如 Markdown、Vue 单文件组件)。

5.ESLint 的检测过程

(1) 初始化

  • 加载配置文件(如 .eslintrc.js)。
  • 加载插件和解析器。

(2) 解析代码

  • 使用解析器将源代码转换为 AST。

(3) 遍历 AST

  • 根据配置的规则,遍历 AST 节点。
  • 调用规则的监听器函数,检查节点是否符合规则。

(4) 报告问题

  • 如果代码违反规则,生成问题并输出。

6.示例:ESLint 检测未使用的变量

(1) 代码

let x = 10;
let y = 20;
console.log(x);

(2) 规则配置

module.exports = {
  rules: {
    'no-unused-vars': 'error',
  },
};

(3) 检测过程

  1. ESLint 解析代码,生成 AST。
  2. 遍历 AST,发现 y 被声明但未使用。
  3. 调用 no-unused-vars 规则的监听器,报告问题。

(4) 输出

2:5 - 'y' is assigned a value but never used. (no-unused-vars)

7.总结

  • ESLint 通过解析代码为 AST,并应用规则来检测代码异常。
  • 规则是 ESLint 的核心,每条规则监听特定的 AST 节点,检查代码是否符合规则。
  • 配置文件和插件 提供了灵活的规则管理和扩展能力。
  • ESLint 的工作流程 包括解析代码、遍历 AST、应用规则和报告问题。

通过理解 ESLint 的工作原理,你可以更好地配置规则、编写自定义规则,以及优化代码检查流程。

参考:

前端开发规范:命名规范、html规范、css规范、js规范

每个前端组长必须会的项目管理技能

code-review之前端代码规范

谷歌都在用的 code review 技巧

JavaScript编码风格指南

如何写一个通用的README规范

前端日常开发实用性规范(包含vue规范)

自定义 ESLint 规则,让代码持续美丽

如何保障前端项目的代码质量

一套标准的前端代码工作流

前端代码规范最佳实践

推荐几个大厂的前端代码规范,学会了,你也能写出诗一样的代码!

前端代码规范工具原理和最佳实践:eslint+prettier+gitHooks

一键格式化代码带来的快感 | 你还在为每个项目配置Stylelint和Eslint吗

这才是真正的Git——Git内部原理

超详实Git简明教程与命令大全

为无线前端团队打造高效git工作流

面试题|git秘籍--多人协作冲突

为什么eslint没有 no-magic-string?

分析团队中的六则糟糕代码

【重构】把重构后的代码稳定搞上线

mac环境 git提交报错: .husky/pre-commit: line 4: npx: command not found