∞拾年

eslint编码规范配置
以下是一个比较完整的 ESLint 规则模版(Vue 版):好的,以下是一套综合考虑代码质量、代码风格和命名约定等...
扫描右侧二维码阅读全文
10
2023/04

eslint编码规范配置

以下是一个比较完整的 ESLint 规则模版(Vue 版):

好的,以下是一套综合考虑代码质量、代码风格和命名约定等多个方面的 Vue 前端团队编码规范:

  1. 安装依赖:首先,在项目中安装 ESLint 和 Prettier 的依赖:
npm install eslint prettier eslint-plugin-prettier eslint-config-prettier eslint-plugin-vue --save-dev
  1. 配置 ESLint:创建一个名为 .eslintrc.json 的文件,并添加以下内容:
{
  "env": {
    "browser": true,
    "node": true
  },
  "extends": ["eslint:recommended", "plugin:prettier/recommended", "plugin:vue/recommended"],
  "plugins": ["prettier"],
  "rules": {
    // 代码质量
    "no-console": "warn", // 禁止在生产环境使用 console
    "no-debugger": "warn", // 禁止在生产环境使用 debugger
    "no-unused-vars": "warn", // 禁止出现未使用过的变量
    "no-empty": ["warn", { "allowEmptyCatch": true }], // 禁止空块语句,但允许有一个或多个 catch 子句是空的
    "no-useless-escape": "warn", // 禁用不必要的转义字符
    "no-extra-label": "warn", // 禁用不必要的标签
    "no-func-assign": "error", // 禁止对 function 声明重新赋值
    "no-redeclare": "error", // 禁止重复声明变量
    "prefer-const": "warn", // 要求使用 const 声明那些声明后不再被修改的变量
    "radix": "warn", // 强制在 parseInt() 中使用基数参数
    "valid-jsdoc": [
      "error",
      {
        "requireReturn": false // 可以省略返回值类型的描述
      }
    ],
    "complexity": ["warn", 5], // 控制代码复杂度

    // 代码风格
    "indent": ["error", 2, { "SwitchCase": 1 }], // 缩进控制,使用两个空格缩进,switch 语句中的 case 缩进一个层级
    "semi": ["error", "never"], // 不使用分号
    "quotes": ["error", "single"], // 使用单引号
    "comma-dangle": ["error", "only-multiline"], // 仅在多行时使用尾随逗号
    "space-before-function-paren": [
      "error",
      {
        "anonymous": "always",
        "named": "never",
        "asyncArrow": "always"
      }
    ], // 函数名和左括号之间要有空格,而函数名和右括号之间不要有空格
    "object-curly-spacing": ["error", "always"], // 对象字面量中花括号内部要有空格
    "keyword-spacing": ["error", { "before": true, "after": true }], // 关键字前后要有一个空格
    "arrow-spacing": ["error", { "before": true, "after": true }], // 箭头函数的箭头前后要有空格
    "no-multi-spaces": "error", // 禁止出现多个空格
    "no-multiple-empty-lines": ["error", { "max": 1 }], // 文件末尾只能出现一个空行

    // 命名约定
    "vue/name-property-casing": ["error", "kebab-case"], // 组件名称要使用短横线命名方式(即 kebab-case)
    "vue/attribute-hyphenation": ["error", "always"], // HTML 属性名要使用短横线命名方式
    "vue/component-name-in-template-casing": ["error", "kebab-case"], // 在模板中使用的组件名称也要使用短横线命名方式
   "vue/html-end-tags": "error", // 检查非空 HTML 元素是否有结束标签
   "vue/html-indent": ["error", 2], // 使用两个空格缩进 HTML 标记
   "vue/html-quotes": ["error", "double"], // 在模板中使用双引号来引用属性值
   "vue/mustache-interpolation-spacing": ["error", "always"], // 在花括号内强制执行间距
   "vue/no-multi-spaces": "error", // 禁止在标记和属性之间使用多个空格
   "vue/prop-name-casing": ["error", "camelCase"], // 使用 camelCase 命名规则来命名组件的 props
   "vue/v-bind-style": ["error", "shorthand"], // 使用缩写形式(即 : 或 @)来绑定属性或监听事件
   "vue/v-on-style": ["error", "shorthand"] // 同时使用缩写形式来绑定事件处理函数
   "vue/html-end-tags": "error", // 检查非空 HTML 元素是否有结束标签
   "vue/html-indent": ["error", 2], // 使用两个空格缩进 HTML 标记
   "vue/html-quotes": ["error", "double"], // 在模板中使用双引号来引用属性值
   "vue/mustache-interpolation-spacing": ["error", "always"], // 在花括号内强制执行间距
   "vue/no-multi-spaces": "error", // 禁止在标记和属性之间使用多个空格
   "vue/prop-name-casing": ["error", "camelCase"], // 使用 camelCase 命名规则来命名组件的 props
   "vue/v-bind-style": ["error", "shorthand"], // 使用缩写形式(即 : 或 @)来绑定属性或监听事件
   "vue/v-on-style": ["error", "shorthand"] // 同时使用缩写形式来绑定事件处理函数
  }
}

这个配置继承了 eslint:recommendedplugin:prettier/recommendedplugin:vue/recommended,并添加了一个插件 prettier。其中,规则 no-consoleno-debuggerno-unused-vars 控制代码质量,规则 indentsemiquotes 控制代码风格,规则 vue/name-property-casingvue/html-indentvue/v-bind-style 控制命名约定。

  1. 配置 Prettier:创建一个名为 .prettierrc.json 的文件,并添加以下内容:
{
  "semi": false,
  "singleQuote": true,
  "jsxSingleQuote": true,
  "trailingComma": "es5",
  "tabWidth": 2,
  "printWidth": 80
}

这个配置将定义 Prettier 如何格式化代码。其中,semi, singleQuote, jsxSingleQuote, trailingComma, tabWidth, printWidth 分别表示是否使用分号、使用单引号、在 JSX 中使用单引号、是否使用 ES5 格式的尾随逗号、缩进宽度和行最大宽度。

集成到编辑器:最后,在您使用的编辑器中配置 ESLint 和 Prettier,以便自动检测和修复代码问题。

当然,还有很多其他的 ESLint 规则模版可供选择。以下是一些常用的规则模版:

  • Airbnb JavaScript Style Guide:Airbnb 公司制定的 JavaScript 代码风格指南,该模版包括了 ES6+ 和 React 相关规则。
  • Google JavaScript Style Guide:Google 公司制定的 JavaScript 代码风格指南,该模版包括了 ES5、ES6 和 TypeScript 相关规则。
  • StandardJS:一种简洁、易读且易于维护的 JavaScript 代码风格规范,该模版不需要配置文件,开箱即用。
  • Prettier:一款代码格式化工具,该模版自动格式化代码,并支持多种语言,包括 JavaScript、TypeScript、CSS、HTML 等。
    当然,还有其他的 ESLint 规则模版可供选择。以下是一些常用的规则模版:
  • StandardJS:一种简洁、易读且易于维护的 JavaScript 代码风格规范,该模版不需要配置文件,开箱即用。
  • Google JavaScript Style Guide:Google 公司制定的 JavaScript 代码风格指南,该模版包括了 ES5、ES6 和 TypeScript 相关规则。
  • Airbnb JavaScript Style Guide:Airbnb 公司制定的 JavaScript 代码风格指南,该模版包括了 ES6+ 和 React 相关规则。
  • React community ESLint configuration:React 社区支持的 ESLint 配置,该模版适用于 React 项目。
  • Vue.js official ESLint plugin:Vue.js 官方推荐的 ESLint 插件,该插件提供了 Vue.js 相关的规则。

以上这些规则模版都非常受欢迎,可以根据具体项目需求选择合适的模版。

在Vue项目中使用Cucumber进行BDD测试的详细示例:

  1. 安装依赖:在Vue项目根目录下运行以下命令安装必要的依赖项:
npm install --save-dev cypress-cucumber-preprocessor @cypress/vue
  1. 配置Cypress:在项目根目录下创建cypress/plugins/index.js文件,并添加以下代码:
const cucumber = require('cypress-cucumber-preprocessor').default

module.exports = (on, config) => {
  on('file:preprocessor', cucumber())
}
  1. 创建.feature文件:在项目根目录下创建一个名为test/features的新目录,并在其中创建一个名为example.feature的空白.feature文件。请确保将.feature文件与.js文件命名相同。
  2. 编写测试用例:打开example.feature文件,并添加以下内容:
Feature: Login

  Scenario: Successful login
    Given I visit the login page
    When I enter my email "user@example.com" and password "password123"
    And I click the submit button
    Then I should be redirected to the dashboard page
    And I should see a welcome message

以上测试场景定义了一个名为“Login”的特性,其中包含一个名为“Successful login”的测试用例。该测试用例包括五个步骤,分别为“Given”、“When”和“Then”。您可以根据需要添加更多步骤。

  1. 编写测试代码:在cypress/integration目录下创建一个名为example.feature.js的JavaScript文件,并添加以下内容:
import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps';

Given('I visit the login page', () => {
  cy.visit('/login');
});

When('I enter my email {string} and password {string}', (email, password) => {
  cy.get('#email').type(email);
  cy.get('#password').type(password);
});

And('I click the submit button', () => {
  cy.get('#submit').click();
});

Then('I should be redirected to the dashboard page', () => {
  cy.url().should('include', '/dashboard');
});

And('I should see a welcome message', () => {
  cy.get('.welcome-message').should('be.visible');
});

这段代码将Cucumber测试用例与Cypress集成起来。它通过导入cypress-cucumber-preprocessor/steps库中的GivenWhenThen函数,使得可以直接在测试代码中使用Gherkin语法中的关键词。

  1. 运行测试:最后,在命令行中输入以下命令来运行Cypress测试:
npm run cypress:open

这将打开Cypress测试运行器,您可以在其中选择要运行的测试场景。运行测试后,您应该看到Cypress在浏览器中模拟用户交互,并执行指定的测试用例。

希望这个示例可以帮助您了解如何在Vue项目中集成Cucumber进行BDD测试。

Last modification:April 11th, 2023 at 08:32 pm
If you think my article is useful to you, please feel free to appreciate

One comment

  1. 天涯

    代码整理工具网站咋关了啊?兄弟OωO

Leave a Comment