npm 包 @the-/axe 使用教程

面试官:小伙子,你的数组去重方式惊艳到我了

前端开发中,我们不可避免地会遇到一些代码质量问题,比如未定义变量、未使用变量等等。这些问题在项目较小的时候可能并不那么明显,但随着项目的规模不断增大,这些问题会逐渐积累,给代码的可读性、可维护性都带来很大的困难。为了能够有效地检测和解决这些问题,我们可以使用静态代码分析工具,如 ESLintTSLint 等等。本文要介绍的是一款专门对 Vue 项目进行静态代码分析的 npm 包 @the-/axe。

@the-/axe 简介

@the-/axe 是一个专门针对 Vue 项目进行静态代码分析的 npm 包。它通过分析代码中的语法树,自动检测出项目中潜在的问题。同时,@the-/axe 还提供了多个预设的规则(rule),我们可以根据项目特点自由选择、配置这些规则,以便更好地适应项目的实际情况。此外,@the-/axe 还支持自定义规则,我们可以根据项目需要编写自己的规则。

@the-/axe 安装 & 使用

接下来,我们来看看如何安装和使用 @the-/axe。注意:@the-/axe 需要 Node.js 版本 ≥ 14.15.4,Vue 版本 ≥ 2.0。本文所用版本:@the-/axe v8.3.3,Node.js v16.1.0,Vue v3.0.0。

安装

我们可以使用 npm 或 yarn 来安装 @the-/axe。

- --- ---
--- ------- ---------- ---------

- ---- ---
---- --- -- ---------

使用

使用 @the-/axe,我们需要在项目的根目录下创建一个 .theaxerc.js 文件(也可以使用 .theaxerc.json.theaxerc.yml.theaxerc.toml)。这个文件中定义了我们要使用的规则、需要忽略的文件等等。

下面我们来创建一个 .theaxerc.js 文件,并添加一些配置项:

-------------- - -
  -------- ---------------------- --------------
  ------ -
    --------------------- ----------
    -------------------------- ---------
  --
--

这个配置文件定义了:

  1. 忽略所有 node_modulesdist 目录下的文件;
  2. 启用了 vue/no-unused-varsvue/no-unsed-components 两个规则。

这两个规则的含义分别是:

  • vue/no-unused-vars:检测是否存在未使用的变量;
  • vue/no-unsed-components:检测是否存在未使用的组件。

在我们使用 @the-/axe 时,需要运行它的命令:

--- ------- ----- -------- -----
  • --ext .js,.vue:指定要检测的文件后缀名;
  • --fix:会自动修复一些简单的问题(仅限于支持自动修复的规则)。

@the-/axe 自定义规则

在实际项目中,可能会因为项目特定要求无法使用现有的预设规则。@the-/axe 就为我们提供了自定义规则的功能。下面,我们来看一下如何定义和使用自定义规则。

规则的定义

我们可以通过以下方式来定义规则:

----- - ---- - - ---------------------

-------------- - ------
  ----- -
    ----- ---------
    ----- -
      ------------ --------------
      --------- ----- -- ----
      ------------ ------
    --
  --

  --------------- -
    ------ -
      ---------------------- -
        -- -------------- --- --- -- ---------- -
          -------
        -

        ----- --------- - ---------------------------
        -- ----------- -- --------------- --- ---- -
          -------
        -

        ----- - ------- --------------- - - ------------------
        ----- - ------- ---------- - - ---------------

        ----- ---- - --------------- - -----------
        -- ----- --- -- -
          ----------------
            -----
            -------- ------ ------ ---- ----- ----- -- --- --- -------
          ---
        -
      --
    --
  --
---

该规则的作用是:检测逗号后面是否有空格。具体的解释,可以看注释和代码实现。在定义规则时,需要注意以下几点:

  1. meta.type:规则的类型。@the-/axe 默认提供了以下五种类型:'problem''suggestion''layout''performance''information',我们可以根据自己定义的规则类型,自由选择这五种类型之一。
  2. meta.docs:规则的说明。其中,description 是规则的简述,category 是规则的分类,recommended 表示规则是否为推荐使用的规则。
  3. context.report:规则出现问题时的反馈。在这个例子中,如果检测到逗号后没有空格,会输出 Comma should have space after it but not have.

规则的使用

定义好规则之后,我们需要在 .theaxerc.js 文件中将这个规则加入到 rules 配置项中去:

-------------- - -
  -- ---
  ------ -
    -- ---
    ----------------- ----------
  --
  -------- --------------
--

在这里,my-plugin 是我们自定义的一个插件,放在了项目的 plugins 配置项中。我们需要把自定义规则打包成 npm 包,并将其安装到项目中,随后就可以在 .theaxerc.js 文件的 rules 配置项中引用了。

经验分享

在使用 @the-/axe 进行 Vue 项目的静态代码分析时,我们可以遇到一些问题,下面分享一下经验。

1. 建议结合 VS Code 配置文件一起使用

在 VS Code 中,我们可以添加 .editorconfig 文件,自动为项目中的代码进行格式化。默认的格式化配置里会有一个选项:comma-spacing,它的作用是在逗号后面增加一个空格。和我们在创建自定义规则时的想法相同,这个选项的目的是增加代码的可读性,从而方便其他开发者在阅读代码时快速理解各个参数/变量之间的关系。

但是,这个选项和我们自定义规则中的检查条件是不同的。在我们的规则中,要求逗号后面必须没有空格,否则就会报出警告。由此,我们需要对 VS Code 的配置文件进行修改,将 comma-spacing 的选项清除,以避免干扰,如下所示:

-
  ------- ------
  ---------------- ------
  -------------- -----
  ------------- ----
  ----------- --
  -------------- ---------
  ------------- -------------
  ----------------- ----
-

2. 注意规则的配置

前面我们介绍了 .theaxerc.js 配置文件中 rules 配置项的部分内容。为了更好地使用 @the-/axe,需要在细节上注意以下几点:

  1. 下划线的问题。在 .theaxerc.js 中,下划线的规则是和 JavaScript 中的一样的,比如 vue/component-name-in-template-casing 规则,可以在配置文件中写成 vue/component_name_in_template_casing
  2. 关于规则的启用和禁用。在 @the-/axe 中,规则用中括号的方式来表示。如果带有 error,代表该规则使用的是错误级别;如果是 warn,则使用的是警告级别;如果是 off,则没有使用该规则,被禁用了;
  3. 同时使用多个插件。在 .theaxerc.js 文件中,除了可以配置自定义规则的插件,我们还可以使用预设插件(例如 vue)、@the-/axe 内置的插件以及其他自定义的插件。在使用多个插件时,在 plugins 配置项中使用数组的方式即可。

示例代码

以下是一段使用了 @the-/axe 的 Vue 单文件组件代码:

----------
  -----
    --------- ----------
  ------
-----------

--------
-- -- ------- --
------ ------- ---- --------------------------

------ ------- -
  ----- ------

  ----------- -
    -------
  --

  ------ -
    ------ -
      -------- ------ -------
      ----- -
        -
          ----- -------
        --
        -
          ----- --------
        -
      -
    -
  --

  --------- -
    ---------------- ---------
  --

  -------- -
    ------------- -
      ----------------------- -------------
    --

    ------------- -
      --------- - -------------------- -- -
        ------ -----------------------
      --
    -
  --

  --------- -
    ---------- -
      ------ -------------------
    -
  -
-
---------

-------
-- -
  ------ -----
-
--------

以上是使用 @the-/axe 进行静态代码分析后,产生的默认规则的报告内容。大家也可以自定义规则,使其适应自己的实际项目需求。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/191018


猜你喜欢

  • 如何在 Express.js 中使用 JWT 进行身份验证?

    随着互联网及移动互联网的快速发展,越来越多的应用程序需要进行用户身份验证及管理。为了满足这些需求,使用 JSON Web Token(JWT)进行用户身份验证已经成为技术领域的常见做法。

    3 小时前
  • 在 GraphQL 中处理复杂的对象关系

    在现代的 web 应用中,对象之间的关系变得越来越复杂。例如,一个出售商品的商店可能会有许多不同的商品,其中每个商品可能会有多个大小、颜色、类型等变体。在以前,为了处理这种情况,我们需要在后端编写各种...

    3 小时前
  • 如何使用 Jest 测试 Node.js 应用?

    Jest 是一款由 Facebook 开发的开源 JavaScript 测试框架。它被广泛用于前端和 Node.js 应用程序的单元测试、集成测试和端到端测试。在本篇文章中,我们将学习如何使用 Jes...

    3 小时前
  • Android 开发中 Material Design 中 TabLayout 的使用技巧

    前言 随着移动互联网的快速发展,在 Android 开发中,Material Design 成为了最流行的设计指南之一。TabLayout 是 Material Design 中一个重要的组件,具有良...

    3 小时前
  • PM2 与 NGINX:构建高性能的 Node.js 应用程序

    Node.js 是一个快速而又高效的 JavaScript 运行环境,正因为如此,它已经成为了构建 Web 应用、REST API 和实时应用的理想选择。但随着 Node.js 应用程序的愈加复杂,它...

    3 小时前
  • Headless CMS 中使用 Webhooks 实现自动构建

    随着静态网页生成器的流行,Headless CMS 越来越受到开发者们的重视。Headless CMS 不仅提供了现代化的管理界面,还允许开发者通过 API 或 Webhooks 来获取内容。

    3 小时前
  • ES10 实战教程

    前言 ES10,也就是 ECMAScript 2019,是 JavaScript 的最新版本。自 2015 年发布了 ES6 以来,JavaScript 变得越来越流行,并且在近几年里,前端技术发展迅...

    3 小时前
  • Serverless 如何实现自动备份?

    在 Serverless 架构中,由于无需维护服务器,开发者可以更专注于实现业务逻辑。但是,我们还是需要解决一些重要问题,如数据备份、数据恢复和灾难恢复等。在本文中,我们将探讨如何使用 Serverl...

    3 小时前
  • Jest 测试 React 组件中使用 context 的方法探究

    在 React 应用中,我们可能需要在组件间共享一些数据或者函数,这时可以通过 Context 来实现。但是在测试使用 Context 的组件时,我们可能会遇到一些问题。

    3 小时前
  • SSE 如何设置头信息?

    简介 SSE(Server-Sent Events)是一种轻量级的实时推送技术,在前端开发中经常用于推送服务器实时消息,比如聊天、订阅等。SSE 可以通过 HTTP 协议进行传输,因此需要设置合适的头...

    3 小时前
  • 在 Docker 容器中使用 SSH

    随着前端应用程序的复杂性增加,开发环境的设置变得越来越麻烦。 Docker 是一个流行的容器化解决方案,它可以帮助我们在标准化的环境中进行开发。在这篇文章中,我们将学习如何在 Docker 容器中使用...

    3 小时前
  • CSS Grid 游戏(Grid Garden)学习笔记

    CSS Grid 游戏(Grid Garden)学习笔记 CSS Grid 是一个强大的布局工具,它可以让我们轻松地实现复杂的网页布局。但是,学习 CSS Grid 的过程可能会有些枯燥。

    3 小时前
  • React 中使用 setInterval 时的注意事项

    引言 在 React 中,我们很常见地使用 setInterval 来创建周期性的任务。在实际开发中,我们需要注意一些细节和陷阱,以确保周期性任务能够正确地运行。本文将会介绍 React 中使用 se...

    3 小时前
  • 如何在使用 CSS Reset 的情况下保持 flexbox 布局?

    什么是 CSS Reset? 在我们开始探讨在使用 CSS Reset 的情况下保持 flexbox 布局之前,我们需要先了解什么是 CSS Reset。CSS Reset 是一种用于归零不同浏览器之...

    3 小时前
  • 使用 Web Components 构建可重用的模态框组件

    Web Components 是 Web 技术的一种新型组成部分,可以让开发者创建封装的自定义元素。通过 Web Components,开发者可以更加轻松地构建可重用的 UI 组件。

    3 小时前
  • 如何优化 iOS 应用程序的性能

    作为一名前端开发人员,我们常常需要优化我们的应用程序的性能,以提供更好的用户体验。在 iOS 平台上,优化应用程序的性能尤为重要。本文将介绍一些优化 iOS 应用程序性能的技巧和策略,帮助开发人员提高...

    3 小时前
  • 响应式设计中的样式调整

    随着移动设备的普及,人们越来越多地使用手机和平板电脑浏览网站。因此,响应式设计已成为现代 Web 设计的必要趋势。在响应式设计中,我们需要针对不同的设备大小和屏幕分辨率,调整样式和布局以确保网站能够良...

    3 小时前
  • 在 Fastify 中处理文件上传

    Fastify 是一个快速、低开销和易于学习的 Web 框架,其性能排名领先。在开发过程中,我们经常需要处理文件上传。本文将介绍如何在 Fastify 中处理文件上传。

    3 小时前
  • ES11 中的 Object.fromEntries() - 一个实用工具

    ES11 中的 Object.fromEntries() - 一个实用工具 在 ES2019 中,一个新的 Object 静态方法 fromEntries() 加入了 JavaScript。

    3 小时前
  • 如何用良好的界面设计提升 App 无障碍性?

    随着技术的不断进步和社会的不断发展,越来越多的人开始重视无障碍性设计,这样有助于让更多的人都能够顺利、愉快地使用各种应用程序。尤其是在移动应用程序中,良好的界面设计不仅可以提高用户的使用体验,还可以提...

    3 小时前