一、安装以下三个扩展程序

1.ESLint

● javascript代码检语法测工具,可以配置每次保存时格式化js

● 每次保存时只格式化部分代码,需要连续按住Ctrl+S多次才能格式化完成

vscode java格式化有问题 vscode格式化js_eslint

2.Prettier - Code formatter

● 只关注格式化,并不具有eslint检查语法等能力,

● 支持JavaScript · Flow · TypeScript · CSS · SCSS · Less · JSX · Vue · GraphQL · JSON · Markdown

vscode java格式化有问题 vscode格式化js_eslint_02

3.Vetur

● 支持格式化html、标准css、标准js、vue文件

vscode java格式化有问题 vscode格式化js_vscode java格式化有问题_03

二、配置setting.json

1.打开setting.json文件

vscode java格式化有问题 vscode格式化js_vscode java格式化有问题_04

2.编辑setting.json文件
{
	"editor.formatOnType": true, //编辑时是否自动格式化
    "editor.formatOnSave": true, //保存时是否自动格式化
    "editor.formatOnPaste": true, //粘贴时是否自动格式化
    "editor.wordWrapColumn": 500, //视图每行最大字符数
    "editor.wordWrap": "wordWrapColumn", //视图自动换行控制(视觉上折行,不增加代码行数),超出wordWrapColumn设置的值折行
    "editor.renderIndentGuides": false, //编写代码时是否给出对齐连线
    //"editor.codeActionsOnSave": { 
    //    "source.fixAll.eslint": true // 代码保存时按照eslint规则修复
    //},
    "editor.tabSize": 2, // tab默认两个空格
    "prettier.semi": true, //是否添加结束分号
    "prettier.singleQuote": true, //是否使用单引号
    "prettier.trailingComma": "none", // 是否在末尾自动添加逗号
    "prettier.tabWidth": 4, //tab缩进为4个空格字符
    "prettier.printWidth": 500, //代码每行最大字符数,超出换行(会增加行数)
    "vetur.format.options.tabSize": 4, //tab缩进为4个空格
    "vetur.format.defaultFormatter.html": "js-beautify-html", //html格式化规则(解决属性换行问题)
    "vetur.format.defaultFormatter.js": "vscode-typescript", //让vue中的js按编辑器自带的ts格式进行格式化(解决属性换行问题)
    "vetur.format.defaultFormatter.ts": "vscode-typescript", //让vue中的ts按编辑器自带的ts格式进行格式化(解决属性换行问题) 
    "vetur.format.defaultFormatterOptions": {
        "js-beautify-html": { //vue文件html相关
            "wrap_attributes": "aligned-multiple" //以下为取值说明
            // - auto: 仅在超出行长度时才对属性进行换行。
            // - force: 对除第一个属性外的其他每个属性进行换行。
            // - force-aligned: 对除第一个属性外的其他每个属性进行换行,并保持对齐。
            // - force-expand-multiline: 对每个属性进行换行。
            // - aligned-multiple: 当超出折行长度时,将属性进行垂直对齐。
        },
        "prettyhtml": { //vue文件html相关
            "printWidth": 500, //每行最大字符数,超出换行(会增加行数)
            "singleQuote": false, //是否使用单引号
            "wrapAttributes": false, //属性换行
            "sortAttributes": false  //属性排序
        },
        "prettier": { //vue文件js相关
            "semi": true, //是否添加结束分号
            "singleQuote": true //是否使用单引号
        }
    },
    
    "vetur.validation.template": false, //是否检测模板中的语法
}

{
  "editor.formatOnSave": true, // 每次保存自动格式化
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true // 每次保存的时候将代码按eslint格式进行修复
  },
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[vue]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // vue文件默认格式化方式
  },
  // vetur格式化配置
  "vetur.format.defaultFormatter.html": "js-beautify-html",
  "vetur.format.options.tabSize": 2,
  "vetur.format.defaultFormatterOptions": {
    "js-beautify-html": {
      "wrap_attributes": "auto"
    }
  },
  "vetur.format.defaultFormatter.js": "vscode-typescript", //让vue中的js按编辑器自带的ts格式进行格式化
  "javascript.format.insertSpaceBeforeFunctionParenthesis": true, // 函数前加上空格 只有在默认vetur的时候生效
  // js文件默认格式化方式 和vue中的js保持一致使用编辑器自带的ts格式
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // js文件默认格式化方式prettier
  },
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // json文件默认格式化方式prettier
  },
  "[css]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"  // css文件默认格式化方式prettier
  },
  
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // typescript文件默认格式化方式prettier
  },
  "editor.fontSize": 16, // 字体大小
  "editor.wordWrap": "on", // 控制折行方式 - "on" (根据视区宽度折行)
  "editor.tabSize": 2, // 换行默认以tab缩进 2个字符
  "editor.colorDecorators": false, // 控制编辑器是否显示内联颜色修饰器和颜色选取器。
  "editor.snippetSuggestions": "top", // 将建议的代码段优先级提前选择,比如输入for第一个提示是for循环代码段。
  "files.associations": {
    // 文件关联语言的优先级配置
    "*.js": "javascriptreact",
    "*.vue": "vue",
    "*.cshtml": "html",
    "*.dwt": "html"
  },
  "window.zoomLevel": -1,
  "files.autoSave": "onFocusChange",
  "editor.formatOnPaste": true
}

如果prettier默认格式化规则不符合要求,在项目根目录创建.prettierrc.json文件覆盖默认格式化规则

.prettierrc.json

{
  "singleQuote": true,
  "semi": true,
  "trailingComma": "all", // 数组、对象属性最后加逗号
  "arrowParens": "always" // 箭头函数参数总是用括号包起来
}

三、eslint语法检测