成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

如何優(yōu)雅地使用 VSCode 來(lái)編輯 vue 文件?

pekonchan / 1828人閱讀

摘要:注本文首發(fā)在我的個(gè)人博客最近有個(gè)項(xiàng)目使用了,本來(lái)一直使用的是來(lái)進(jìn)行開(kāi)發(fā),可是遇到了很多問(wèn)題。此外,還有很多規(guī)范是幫助我們寫(xiě)出更加優(yōu)雅而不容易出錯(cuò)的代碼的。,終于基本搞定了,可以愉快地開(kāi)發(fā)應(yīng)用了。

注:本文首發(fā)在 我的個(gè)人博客

最近有個(gè)項(xiàng)目使用了 Vue.js ,本來(lái)一直使用的是 PHPStorm 來(lái)進(jìn)行開(kāi)發(fā),可是遇到了很多問(wèn)題。

后來(lái),果斷放棄收費(fèi)的 PHPStorm ,改用 vscode (Visual Stdio Code).
當(dāng)然 vscode 對(duì) vue 也不是原生支持的,今天來(lái)扒一扒如何配置 vscode 以便優(yōu)雅地編輯 vue 文件

先來(lái)扒一扒使用 PHPStorm 遇到的問(wèn)題:

vue文件雖然可以通過(guò)插件來(lái)解決高亮問(wèn)題,但是

安裝插件: Ctrl + P 然后輸入 ext install vetur 然后回車(chē)點(diǎn)安裝即可。

p.s: vscode 的插件安裝比 PHPStorm 的插件安裝更快捷方便,安裝完成后還不用重啟整個(gè)程序,只要重新加載下工作區(qū)窗口就可以了。

安裝完 vetur 后還需要加上這樣一段配置下:

"emmet.syntaxProfiles": {
  "vue-html": "html",
  "vue": "html"
}

這時(shí)可以打開(kāi)一個(gè)vue文件試試,注意下右下角狀態(tài)欄是否正確識(shí)別為 vue 類(lèi)型:

如果被識(shí)別為 texthtml ,則記得要點(diǎn)擊切換下。

第二步,要支持 vue 文件的 ESLint

可能還有人會(huì)問(wèn)為什么要 ESLint ?沒(méi)有 lint 的代碼雖然也可能可以正確運(yùn)行,但是 lint 作為編譯前的一道檢測(cè)成本更小,而且更快。此外, ESLint 還有很多規(guī)范是幫助我們寫(xiě)出更加優(yōu)雅而不容易出錯(cuò)的代碼的。

jshint 本來(lái)也是個(gè)不錯(cuò)的選擇,但是 ESLint 對(duì) jsx 的支持讓我還是選擇了 ESLint.

安裝插件: Ctrl + P 然后輸入 ext install eslint 然后回車(chē)點(diǎn)安裝即可。

ESLint 不是安裝后就可以用的,還需要一些環(huán)境和配置:

首先,需要全局的 ESLint , 如果沒(méi)有安裝可以使用 npm install -g eslint 來(lái)安裝。

其次,vue文件是類(lèi) HTML 的文件,為了支持對(duì) vue 文件的 ESLint ,需要 eslint-plugin-html 這個(gè)插件。可以使用 npm install -g eslint-plugin-html 來(lái)安裝

接著,安裝了 HTML 插件后,還需要在 vscode 中配置下 ESLint:

    "eslint.validate": [
        "javascript",
        "javascriptreact",
        "html",
        "vue"
    ],
    "eslint.options": {
        "plugins": ["html"]
    },

最后,別忘了在項(xiàng)目根目錄下創(chuàng)建 .eslintrc.json , 如果還沒(méi)創(chuàng)建,還可以使用下面快捷命令來(lái)創(chuàng)建:

這樣一來(lái) vue 中寫(xiě)的 js 代碼也能正確地被 lint 了。

要是不小心少個(gè)括號(hào)之類(lèi)的都可以有對(duì)應(yīng)的報(bào)錯(cuò):

多余 import 也都能報(bào)錯(cuò):

還是蠻智能的。

第三步,配置構(gòu)建任務(wù)

vue 項(xiàng)目的構(gòu)建我選擇用 webpack ,不過(guò),并不是直接使用命令行下的 webpack 而是使用了 webpack 的 API 寫(xiě)的 node 腳本。 腳本主要有兩個(gè),一個(gè)是 build/bin/build.js 另一個(gè)是 build/bin/watch.js 分別是單次構(gòu)建和實(shí)時(shí)構(gòu)建。

于是乎,對(duì)應(yīng) vscode 中的 tasks 也是有兩個(gè): buildwatch ,簡(jiǎn)單配置如下:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    // use `Ctrl+P` and type `task` + SPACE +  to run a task
    "version": "0.1.0",
    "tasks": [
        {
            "taskName": "build",
            "echoCommand": true,
            "command": "node",
            "args": [
                "build/bin/build.js"
            ],
            "suppressTaskName": true,
            "isBuildCommand": true
        },
        {
            "taskName": "watch",
            "echoCommand": true,
            "command": "node",
            "args": [
                "build/bin/watch.js"
            ],
            "suppressTaskName": true,
            "isBackground": true
        }
    ]
}

這樣配置好后,按 Ctrl + Shift + B 即可開(kāi)始單次構(gòu)建。 不過(guò)單次構(gòu)建比較慢(要10秒+),一般我都用實(shí)時(shí)構(gòu)建:Ctrl + P 然后輸入 task watch <回車(chē)> 即可開(kāi)始實(shí)時(shí)構(gòu)建。實(shí)時(shí)構(gòu)建除了第一次比較慢,其他時(shí)候還是非常快的,一般1秒內(nèi)就可以構(gòu)建好。

最后,webpack 構(gòu)建錯(cuò)誤提示

webpack 構(gòu)建失敗后一般都會(huì)有錯(cuò)誤提示,會(huì)顯示在輸出窗口中:

為啥是彩色的? 因?yàn)檠b了 Output Colorizer 這個(gè)插件。

當(dāng)然,這樣還是不夠方便 -- 實(shí)時(shí)構(gòu)建是后臺(tái)運(yùn)行的,“輸出”窗口一般也都是在后臺(tái),每次保存完文件還得點(diǎn)開(kāi)豈不麻煩。

要是能做到像 ESLint 一樣直接把錯(cuò)誤標(biāo)到編輯器上面就好了。真的可以嗎?翻了下 vscode 的文檔,發(fā)現(xiàn)有神奇的 problemMatcher -- 可以對(duì)任務(wù)輸出進(jìn)行解析,解析出的問(wèn)題會(huì)顯示在“問(wèn)題”窗口中,如果還有文件名行號(hào)和列號(hào),則會(huì)在源代碼編輯窗口中對(duì)應(yīng)的位置標(biāo)出來(lái)。

先放個(gè)最終效果:

在這個(gè)文件的第32行,import 了一個(gè)不存在的模塊,這樣的錯(cuò)誤在 ESLint 中當(dāng)然是檢查不出來(lái)的,然而在 webpack 的實(shí)時(shí)構(gòu)建中會(huì)報(bào)錯(cuò):

這個(gè)事情的困難在于兩點(diǎn):

如何通過(guò) problemMatcher 把這個(gè)錯(cuò)誤給抓出來(lái)?

如何找到錯(cuò)誤對(duì)應(yīng)的行號(hào)?(如果可能的話(huà),還有列號(hào))

webpack的錯(cuò)誤輸出格式并不是完全統(tǒng)一的,而且有些還沒(méi)有行號(hào) -- 一方面可能是 webpack 的 bug ,另一方面 vue 文件在構(gòu)建的時(shí)候會(huì)拆成 template, script 和 style 三個(gè)方面進(jìn)行構(gòu)建,報(bào)錯(cuò)的行號(hào)可能對(duì)不上。

最終我的解決方案是對(duì) webpack 的錯(cuò)誤重新格式化輸出,然后匹配:

首先,重新格式化輸出需要 format-webpack-stats-errors-warnings 這個(gè)包(偶新寫(xiě)的)

npm install --save-dev format-webpack-stats-errors-warnings

然后,到 build/bin/build.jsbuild/bin/watch.js 中在 webpack 構(gòu)建完成的回調(diào)函數(shù)中增加這個(gè)格式化后的輸出:

更多使用介紹見(jiàn) github

最后,在 .vscode/tasks.json 中,每個(gè)任務(wù)下添加 problemWatcher:

// ...
{
    "taskName": "build",
    // ...
    // build 任務(wù)的:
    "problemMatcher": {
        "owner": "webpack",
        "fileLocation": [
            "relative",
            "${workspaceRoot}"
        ],
        "pattern": {
            "regexp": "^!>(w+): (S+)?:(d+),(d+)(?:~(?:(d+),)?(d+))?: (.*)$",
            "severity": 1,
            "file": 2,
            "line": 3,
            "column": 4,
            "endLine": 5,
            "endColumn": 6,
            "message": 7
        }
    }
}

{
    "taskName": "watch",
    // ...
    // watch 任務(wù)的:
    "problemMatcher": {
        "owner": "webpack",
        "fileLocation": [
            "relative",
            "${workspaceRoot}"
        ],
        "pattern": {
            "regexp": "^!>(w+): (S+)?:(d+),(d+)(?:~(?:(d+),)?(d+))?: (.*)$",
            "severity": 1,
            "file": 2,
            "line": 3,
            "column": 4,
            "endLine": 5,
            "endColumn": 6,
            "message": 7
        },
        "watching": {
            "activeOnStart": true,
            "beginsPattern": "^s*Webpack begin run",
            "endsPattern": "^s*Build complete at"
        }
    }
    // ...
}
// ...

注:在 watch 任務(wù)中,為了匹配何時(shí)開(kāi)始和何時(shí)結(jié)束,我在 webpack 構(gòu)建的 run 和 watch 時(shí)增加了一個(gè) console.log("Webpack begin run") 的打印,而在構(gòu)建完成后增加了一個(gè) console.log("Build complete at ..") 的打印。

OK,終于基本搞定了 vscode ,可以愉快地開(kāi)發(fā) vue 應(yīng)用了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82106.html

相關(guān)文章

  • 能讓你開(kāi)發(fā)效率翻倍的 VSCode 插件配置(上)

    摘要:如果編輯器在編碼時(shí)實(shí)時(shí)給出反饋,對(duì)開(kāi)發(fā)者個(gè)人而言才是最高效的,在提交時(shí)做強(qiáng)制檢查只是從團(tuán)隊(duì)的視角保證編碼風(fēng)格的規(guī)范性和一致性。 工欲善其事必先利其器,軟件工程師每天打交道最多的可能就是編輯器了。入行幾年來(lái),先后折騰過(guò)的編輯器有 EditPlus、UltraEdit、Visual Studio、EClipse、WebStorm、Vim、SublimeText、Atom、VSCode,現(xiàn)在...

    feng409 評(píng)論0 收藏0
  • 能讓你開(kāi)發(fā)效率翻倍的 VSCode 插件配置(上)

    摘要:如果編輯器在編碼時(shí)實(shí)時(shí)給出反饋,對(duì)開(kāi)發(fā)者個(gè)人而言才是最高效的,在提交時(shí)做強(qiáng)制檢查只是從團(tuán)隊(duì)的視角保證編碼風(fēng)格的規(guī)范性和一致性。 工欲善其事必先利其器,軟件工程師每天打交道最多的可能就是編輯器了。入行幾年來(lái),先后折騰過(guò)的編輯器有 EditPlus、UltraEdit、Visual Studio、EClipse、WebStorm、Vim、SublimeText、Atom、VSCode,現(xiàn)在...

    AlanKeene 評(píng)論0 收藏0
  • 手摸手,帶你用vue擼后臺(tái) 系列一(基礎(chǔ)篇)

    摘要:詳細(xì)具體的使用可以見(jiàn)文章手摸手,帶你優(yōu)雅的使用。為了加速線上鏡像構(gòu)建的速度,我們利用源進(jìn)行加速并且將一些常見(jiàn)的依賴(lài)打入了基礎(chǔ)鏡像,避免每次都需要重新下載。 完整項(xiàng)目地址:vue-element-admin系類(lèi)文章二:手摸手,帶你用vue擼后臺(tái) 系列二(登錄權(quán)限篇)系類(lèi)文章三:手摸手,帶你用vue擼后臺(tái) 系列三(實(shí)戰(zhàn)篇)系類(lèi)文章四:手摸手,帶你用vue擼后臺(tái) 系列四(vueAdmin 一...

    xiaotianyi 評(píng)論0 收藏0
  • 提高 JavaScript 開(kāi)發(fā)效率的高級(jí) VSCode 擴(kuò)展!

    摘要:使用高亮類(lèi)似的擴(kuò)展更強(qiáng)大的高亮擴(kuò)展,具有更多功能。為了檢查和檢查響應(yīng),使用了之類(lèi)的工具。在這里獲取這兩個(gè)擴(kuò)展自動(dòng)閉合標(biāo)記和自動(dòng)重命名標(biāo)記。類(lèi)似的擴(kuò)展顯示提交歷史的精美圖表等等。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! Quokka.js Quokka.js 是一個(gè)用于 JavaScript 和 TypeScript 的實(shí)時(shí)運(yùn)行代碼平臺(tái)。這意味著它會(huì)實(shí)時(shí)運(yùn)行...

    zhigoo 評(píng)論0 收藏0
  • 在Typescript項(xiàng)目中,如何優(yōu)雅使用ESLint和Prettier

    摘要:對(duì)于項(xiàng)目的編碼規(guī)范而言,主要有兩種選擇和。此外由于性能問(wèn)題,官方?jīng)Q定全面采用,甚至把倉(cāng)庫(kù)作為測(cè)試平臺(tái),而的解析器也成為獨(dú)立項(xiàng)目,專(zhuān)注解決雙方兼容性問(wèn)題。最近在我的項(xiàng)目的編碼規(guī)范中全量的用代替了針對(duì)其中遇到的問(wèn)題做一個(gè)記錄。 ??對(duì)于Typescript項(xiàng)目的編碼規(guī)范而言,主要有兩種選擇ESLint和TSLint。ESLint不僅能規(guī)范js代碼,通過(guò)配置解析器,也能規(guī)范TS代碼。此外由...

    chemzqm 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

pekonchan

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<