在前端开发中前端的开发工具也有很多例如像Visual Studio Code、sublime_text3、HBuilder
等等。由于我前端的开发的时候通常都是用Visual Studio Code所以在这里就介绍一下Visual Studio Code的使用和配置。
先来说说我为什么选择Visual Studio Code,下面就简称为VSCode,使用VSCode最主要的一个原因是因为他结合EsLint之后,我们写完代码保存的时候他会对代码进行检查,如果发现代码不符合规范那么他可以自动对代码进行修复,这功能是不是简直无敌啊,还有就是他是由Microsoft所研发的并且开源、跨平台、免费的,然后就是在安装中文插件后对中文的支持特别好,因为对中文完全支持所以上手就轻松很多了。而且和其他ide类似如果想要支持其他的功能只需要安装相应的插件就可以了。
在来看看界面吧
界面的布局:
实际使用界面:这里使用的主题是One Dark Pro
设置分为两种,用户设置和工作区设置。
每个人都有自己的偏好,在使用VS Code进行开发时,都会根据自己的习惯来对VS Code进行用户级别的配置。
但是当多人共同完成某个项目的时候,该项目会有一定的编码规范,如: 编辑某个语言时的设置,代码的缩进等等,这个时候就需要对该项目进行单独的工作空间级别的设置。
在默认情况下底部状态栏颜色是真的不忍直视,那么深的紫色和界面格格不入,所以这个对于我而言是必须要改的
进入文件–>首选项–>设置然后搜索workbench.colorCustomizations
,在setting.json中添加项目内容,注意这里为了全局使用应该设置在用户设置里面
添加内容:
"workbench.colorCustomizations": {
"statusBar.background" : "#333333",
"statusBar.noFolderBackground" : "#343D46",
"statusBar.debuggingBackground": "#ABB1BA"
}
例如:
{
"workbench.colorTheme": "Mariana (Sublime)",
"workbench.statusBar.visible": true,
"diffEditor.ignoreTrimWhitespace": true,
"workbench.colorCustomizations": {
"statusBar.background" : "#333333",
"statusBar.noFolderBackground" : "#343D46",
"statusBar.debuggingBackground": "#ABB1BA"
}
}
例如配置vue模板代码块。
使用快捷键Ctrl+Shift+P打开搜索栏–>输入snippet–>选择首选项
打开了snippet搜索栏–>输入vue–>选择vue.json
在打开的vue.json文件中添加模板;
{
"Print to console": {
"prefix": "vuetmp",
"body": [
"",
" \n",
" ",
"\n",
"\n",
"",
"$2"
],
"description": "创建一个自定义的vue组件代码块"
}
}
定义好之后在vue文件中输入前缀vuetmp,直接选择模板就可以自动生成模板了
插件给你一切可能,VSCode之所以好用是因为它里面包含了丰富的插件。下面是一些常用的插件
Chinese (Simplified)
Vetur
EsLint
语法纠错,以及自动修复,
使用EsLint需要在项目中添加EsLint的语法检查配置,需要在项目中添加.eslintrc.js文件,.eslintrc.js文件的配置我会在文章后面给出,大家可以根据自己的需要进行修改
开启自动修复,在settings.json文件中添加(建议设置在工作空间级别)
{
"files.autoSave": "off",//关闭自动保存
"eslint.run": "onSave", //eslint在保存时运行
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true //保存时自动修复
}
}
Debugger for Chrome
主题插件
Auto Close Tag
Auto Rename Tag
JavaScript(ES6) code snippets
HTML Snippets
Path Intellisense
HTML CSS Support
jQuery Code Snippets
js-beautify for VS Code
Bracket Pair Colorizer
GitLens
Markdown Preview Enhanced
markdownlint
自定义快捷可以通过:首选项–>键盘快捷键方式 来打开,打开后直接在搜索框输入快捷按钮或者描述关键字进行搜索
触发建议
保存所有
转换大小写
transform
添加快捷键为大写改为:Ctrl + shift + x,小写改为:Ctrl + shift + y,而这两个默认都有了不过感觉不会常用所以改把之前的改为Ctrl + alt+ x 和 Ctrl + alt+ y合并行
合并
然后将合并行的快捷键改为Ctrl + Alt + j因为这个工具对中文的支持很好所以上手也挺简单的,很多功能普通的ide其实没有什么很大的区别例如像git的使用之类的,这里就不多说了,最后附加上ESLint的配置文件
.eslintrc.js
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
sourceType: 'module'
},
env: {
browser: true,
node: true,
es6: true,
},
extends: ['plugin:vue/essential', 'eslint:recommended'],
// add your custom rules here
//it is base on https://github.com/vuejs/eslint-config-vue
rules: {
"vue/max-attributes-per-line": [2, {
"singleline": 10,
"multiline": {
"max": 1,
"allowFirstLine": false
}
}],
"vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline":"off",
// "vue/name-property-casing": ["error", "PascalCase"],
"vue/no-v-html": "off",
'accessor-pairs': 2,
'arrow-spacing': [2, {
'before': true,
'after': true
}],
'block-spacing': [2, 'always'],
'brace-style': [2, '1tbs', {
'allowSingleLine': true
}],
'camelcase': [0, {
'properties': 'always'
}],
'comma-dangle': [2, 'never'],
'comma-spacing': [2, {
'before': false,
'after': true
}],
'comma-style': [2, 'last'],
'constructor-super': 2,
'curly': [2, 'multi-line'],
'dot-location': [2, 'property'],
'eol-last': 2,
'eqeqeq': ["error", "always", {"null": "ignore"}],
'generator-star-spacing': [2, {
'before': true,
'after': true
}],
'handle-callback-err': [2, '^(err|error)$'],
'indent': [2, 2, {
'SwitchCase': 1
}],
'jsx-quotes': [2, 'prefer-single'],
'key-spacing': [2, {
'beforeColon': false,
'afterColon': true
}],
'keyword-spacing': [2, {
'before': true,
'after': true
}],
'new-cap': [2, {
'newIsCap': true,
'capIsNew': false
}],
'new-parens': 2,
'no-array-constructor': 2,
'no-caller': 2,
'no-console': 'off',
'no-class-assign': 2,
'no-cond-assign': 2,
'no-const-assign': 2,
'no-control-regex': 0,
'no-delete-var': 2,
'no-dupe-args': 2,
'no-dupe-class-members': 2,
'no-dupe-keys': 2,
'no-duplicate-case': 2,
'no-empty-character-class': 2,
'no-empty-pattern': 2,
'no-eval': 2,
'no-ex-assign': 2,
'no-extend-native': 2,
'no-extra-bind': 2,
'no-extra-boolean-cast': 2,
'no-extra-parens': [2, 'functions'],
'no-fallthrough': 2,
'no-floating-decimal': 2,
'no-func-assign': 2,
'no-implied-eval': 2,
'no-inner-declarations': [2, 'functions'],
'no-invalid-regexp': 2,
'no-irregular-whitespace': 2,
'no-iterator': 2,
'no-label-var': 2,
'no-labels': [2, {
'allowLoop': false,
'allowSwitch': false
}],
'no-lone-blocks': 2,
'no-mixed-spaces-and-tabs': 2,
'no-multi-spaces': 2,
'no-multi-str': 2,
'no-multiple-empty-lines': [2, {
'max': 1
}],
'no-native-reassign': 2,
'no-negated-in-lhs': 2,
'no-new-object': 2,
'no-new-require': 2,
'no-new-symbol': 2,
'no-new-wrappers': 2,
'no-obj-calls': 2,
'no-octal': 2,
'no-octal-escape': 2,
'no-path-concat': 2,
'no-proto': 2,
'no-redeclare': 2,
'no-regex-spaces': 2,
'no-return-assign': [2, 'except-parens'],
'no-self-assign': 2,
'no-self-compare': 2,
'no-sequences': 2,
'no-shadow-restricted-names': 2,
'no-spaced-func': 2,
'no-sparse-arrays': 2,
'no-this-before-super': 2,
'no-throw-literal': 2,
'no-trailing-spaces': 2,
'no-undef': 2,
'no-undef-init': 2,
'no-unexpected-multiline': 2,
'no-unmodified-loop-condition': 2,
'no-unneeded-ternary': [2, {
'defaultAssignment': false
}],
'no-unreachable': 2,
'no-unsafe-finally': 2,
'no-unused-vars': [2, {
'vars': 'all',
'args': 'none'
}],
'no-useless-call': 2,
'no-useless-computed-key': 2,
'no-useless-constructor': 2,
'no-useless-escape': 0,
'no-whitespace-before-property': 2,
'no-with': 2,
'one-var': [2, {
'initialized': 'never'
}],
'operator-linebreak': [2, 'after', {
'overrides': {
'?': 'before',
':': 'before'
}
}],
'padded-blocks': [2, 'never'],
'quotes': [2, 'single', {
'avoidEscape': true,
'allowTemplateLiterals': true
}],
'semi': [2, 'never'],
'semi-spacing': [2, {
'before': false,
'after': true
}],
'space-before-blocks': [2, 'always'],
'space-before-function-paren': [2, 'never'],
'space-in-parens': [2, 'never'],
'space-infix-ops': 2,
'space-unary-ops': [2, {
'words': true,
'nonwords': false
}],
'spaced-comment': [2, 'always', {
'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
}],
'template-curly-spacing': [2, 'never'],
'use-isnan': 2,
'valid-typeof': 2,
'wrap-iife': [2, 'any'],
'yield-star-spacing': [2, 'both'],
'yoda': [2, 'never'],
'prefer-const': 2,
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
'object-curly-spacing': [2, 'always', {
objectsInObjects: false
}],
'array-bracket-spacing': [2, 'never']
}
}