如何用vscode開發(fā)Vue應(yīng)用

來自:SegmentFault,作者:張京
鏈接:https://segmentfault.com/a/1190000019055976

現(xiàn)在用VSCode開發(fā)Vue.js應(yīng)用幾乎已經(jīng)是前端的標(biāo)配了横浑,但很多時候我們看到的代碼混亂不堪乾忱,作為一個前端工程師,單引號雙引號亂用抖苦,一段有分號一段沒有分號毁菱,有的地方有逗號有的地方?jīng)]有逗號,空格回車都對不齊锌历,還說自己做事認(rèn)真贮庞,這不是開玩笑的事情。


image.png

我們今天從頭開始究西,完整地講述一下一個重度代碼潔癖患者該如何用vscode開發(fā)vue窗慎,以及如何把一個已經(jīng)可以宣判死刑的全身各種格式錯誤幾萬條的項目整容成標(biāo)準(zhǔn)美女。

從安裝開始

為了準(zhǔn)確起見,我們把vscode里所有插件全部禁用遮斥,把用戶設(shè)置清空峦失,以讓它盡可能恢復(fù)成原始的樣子:


image.png

作為代碼潔癖患者,對于系統(tǒng)的版本要求一定也是最苛刻的术吗,不管什么時候尉辑,都讓我們把所有的系統(tǒng)能升級的都升級到最高版本:

npm install -g @vue/cli

然后,我們開始創(chuàng)建項目:

vue create hello-world

在這里较屿,一定要選擇第一項:babel + eslint隧魄,這兩個是必不可少的。我見到有些人嫌eslint麻煩吝镣,居然在項目建立好之后手工把eslint關(guān)掉的堤器,簡直無語。


image.png

安裝完畢:


image.png

我們先不急著執(zhí)行末贾,執(zhí)行代碼是最容易的事情闸溃,我們先打開代碼看一下:
image.png

好吧,至少我們需要先安裝vetur插件拱撵。這幾乎已經(jīng)確定是開發(fā)vue項目的標(biāo)配了辉川,即使我不說,vscode也會強烈建議你安裝它拴测。


image.png

裝上vetur以后多少有點人樣了乓旗。接下來我們來試一試能不能自動格式化,這部分才是潔癖患者的最愛集索。胡亂加幾個空格屿愚,然后保存試試看:
image.png

不能格式化,連個提示都沒有务荆!


用lint格式化

就算vscode里的vetur不能幫我們自動格式化妆距,好在package.json命令里還有一個lint命令,我們看看lint命令能不能幫我們自動格式化:


image.png

lint居然說沒有錯誤函匕!明明就是多了很多空格的錯誤好吧娱据,為什么?

這是因為缺省的vue-cli沒有為我們安裝@vue/prettier插件盅惜,我們先來手工安裝一下:

yarn add -D @vue/eslint-config-prettier

然后在package.json或者.eslintrc.js或者其它什么你設(shè)置eslint的地方中剩,給它加上:

"extends": [
      "plugin:vue/essential",
      "eslint:recommended",
      "@vue/prettier"
    ],

特別是最后這一個@vue/prettier,非常重要抒寂。然后再執(zhí)行yarn lint结啼。多余的空格被自動干掉了,但是我們發(fā)現(xiàn)有一些地方同時也被篡改了:


image.png

所有的單引號被變成雙引號了屈芜,原本行尾沒有的分號被加上了分號妆棒。這是為什么呢?因為我們雖然引入了prettier,但是還沒有對prettier做設(shè)置糕珊,我們在項目的根目錄下創(chuàng)建一個.prettierrc.js文件动分,然后在其中加入:

module.exports = {
  semi: false,
  singleQuote: true
}

再次執(zhí)行yarn lint,現(xiàn)在我們看到lint已經(jīng)能夠起作用了红选。它不但能把我們多余插入的空格刪掉澜公,并且能按照規(guī)則把雙引號變成單引號,把行尾多余的分號刪掉喇肋。當(dāng)然坟乾,關(guān)于行尾加不加分號這是一個哲學(xué)命題,你可以根據(jù)你個人的喜好自行決定蝶防。在這里甚侣,我們權(quán)且按照vue-cli的標(biāo)配執(zhí)行。


image.png

到這一步很關(guān)鍵间学,假設(shè)你拿到一個爛的不再爛的vue項目殷费,里面有幾千個.vue文件,幾萬個各種格式錯誤低葫,也都能通過yarn lint這一行命令把它們?nèi)啃拚^來详羡!

在vscode里格式化

事情還沒有完,我們注意到雖然yarn lint命令能在編寫完代碼之后幫我們格式化嘿悬,但是既然我們是用vscode進(jìn)行開發(fā)实柠,我們當(dāng)然希望能在vscode里直接看到對于錯誤的標(biāo)注。

這時候我們需要在vscode里再安裝一個插件eslint善涨。

你以為安裝上eslint插件就行了嗎窒盐?不行的。因為eslint并不知道我們的.vue文件里面包含了js語法钢拧,所以還需要打開我們的vscode設(shè)置文件蟹漓。

注意:這里一定要設(shè)置到項目的設(shè)置里,而不要只是設(shè)置到你自己個人的設(shè)置里娶靡,否則你團隊的小伙伴隨便一改又亂掉了。正確的方法是在你項目的文件夾下有一個.vscode文件夾看锉,而vue最討厭的地方是它居然會把這個文件夾放到.gitignore里姿锭,這個錯誤你必須要糾正過來,也就是說從.gitignore文件里把.vscode刪掉伯铣。切切呻此。

在你項目的settings.json里文件里添加以下代碼:

{
  "eslint.autoFixOnSave": true,
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    {
      "language": "vue",
      "autoFix": true
    }
  ],
}

這時候所有錯誤都被標(biāo)注出來了,注意看左側(cè)腔寡,一定要讓這個settings.json文件是綠色的焚鲜,而不能是灰色的,如果是灰色的,請檢查你的.gitignore文件:


image.png

因為我們在settings.json文件里設(shè)置了autoFixOnSave忿磅,所以不管多么亂的格式糯彬,只要一按Ctrl+S保存,自動就幫我們把代碼格式整理好了葱她,是不是很方便呢撩扒?

和Prettier的沖突

有些時候我們的vscode里插件裝的比較多,譬如還安裝了prettier插件吨些,因為我們不只開發(fā)vue項目搓谆,可能還有其它類型的js項目特別是傳統(tǒng)js項目,需要用到prettier進(jìn)行美化豪墅,而prettier的一些功能是會和eslint相沖突的泉手,比如說我們在全局設(shè)置了prettier的formatOnSave,這個功能就會和eslint的autoFixOnSave打架偶器,為了避免這個矛盾斩萌,我們通常還會在本項目的settings.json文件里再多加幾個選項,類似于這樣:

 "editor.tabSize": 2,
  "editor.formatOnSave": false,
  "prettier.semi": false,
  "prettier.singleQuote": true

有了這些設(shè)置状囱,基本上prettier就不會和eslint打架了术裸。

小結(jié)

以上就是用vscode開發(fā)vue程序的標(biāo)配,并不像網(wǎng)上有些文章說的那么簡單亭枷,不是只需要配一個eslint就能解決的事情袭艺,這里還用到了vetur,eslint和prettier叨粘,把幾個工具綜合用好猾编,才能真正達(dá)到我們的錯誤隨時可見,保存自動修改升敲,更正既往錯誤的目的答倡。希望每個前端工程師寫出的代碼都如出一人之手,漂亮簡潔干凈驴党。
我們的目標(biāo)始終如一:0錯誤0警告瘪撇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市港庄,隨后出現(xiàn)的幾起案子倔既,更是在濱河造成了極大的恐慌,老刑警劉巖鹏氧,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渤涌,死亡現(xiàn)場離奇詭異,居然都是意外死亡把还,警方通過查閱死者的電腦和手機实蓬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門茸俭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人安皱,你說我怎么就攤上這事调鬓。” “怎么了练俐?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵袖迎,是天一觀的道長。 經(jīng)常有香客問我腺晾,道長燕锥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任悯蝉,我火速辦了婚禮归形,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鼻由。我一直安慰自己暇榴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布蕉世。 她就那樣靜靜地躺著蔼紧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狠轻。 梳的紋絲不亂的頭發(fā)上奸例,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音向楼,去河邊找鬼查吊。 笑死,一個胖子當(dāng)著我的面吹牛湖蜕,可吹牛的內(nèi)容都是我干的逻卖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昭抒,長吁一口氣:“原來是場噩夢啊……” “哼评也!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灭返,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盗迟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后婆殿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诈乒,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡罩扇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年婆芦,在試婚紗的時候發(fā)現(xiàn)自己被綠了怕磨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡消约,死狀恐怖肠鲫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情或粮,我是刑警寧澤导饲,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站氯材,受9級特大地震影響渣锦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氢哮,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一袋毙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冗尤,春花似錦听盖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至背零,卻和暖如春腰吟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捉兴。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工蝎困, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人倍啥。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓禾乘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親虽缕。 傳聞我的和親對象是個殘疾皇子始藕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容