隨着vscode
以及vue
的愈來愈普及,vetur
這個名字也愈來愈被人熟知。css
vetur
是一個vscode
插件,用於爲.vue
單文件組件提供代碼高亮以及語法支持。html
但是因爲衆所周知的緣由,vue
以及vetur
對於ts
的支持,並不友好。在@vue/composition-api
這個插件 出來以前,vue
2的ts
須要使用vue-prototype-decorator
這個插件,來經過裝飾器的模式進行模擬,可是因爲不是從底層支持,所以vue
2的ts
使用體驗可謂是一塌糊塗。vue
在2020年9月18日,vue3
- one piece
正式發佈。隨之而來的,是一整套從頭至尾使用ts
的新底層以及全新的composition-api
。與此同時,volar
順應而生。react
Volar
是什麼與vetur
相同,volar
是一個針對vue
的vscode
插件,不過與vetur
不一樣的是,volar
提供了更爲強大的功能,讓人直呼臥槽
。git
安裝的方式很簡單,直接在vscode
的插件市場搜索volar
,而後點擊安裝就能夠了。github
如今只有16000多的下載,我以爲是一方面是
vetur
已經很強大了,另外一方面,則是衆多開發者並不知道volar
這個東西。api
Volar
的功能重頭戲來了!markdown
Volar
做爲vue的二代插件,除了集成了vetur
的相關功能,如高亮
、語法提示
等以外,更讓我關注的,是它獨有的功能。編輯器
某些功能如今還沒發佈,不過能夠經過在
github
下載源碼
,來搶先體驗新功能oop
學過vue
語法的應該都知道,在vue
的template
中,須要一個惟一的根標籤,這是vue
決定的,可是在vue
3中,去除了這個限制,只要在template
中,可使用多個根標籤,再也不須要考慮由於惟一根標籤所引發的問題。
說實話這不是
volar
的新功能,是vue3
的,只不過使用volar
以後不會報錯了。
vue
單文件組件,按照功能,存在template
、script
、style
三個根元素。
就像常規的html
文件,在單一文件內功能太多,容易形成文件冗餘。一個數據稍微多點的vue
頁面,就可能有兩三千行代碼。隨之帶來的,就是各類不方便:找數據不方便、上下文切換不方便、開發不方便,等等等等。
爲了解決這些問題,volar
提供了一個快捷方式。
在安裝好volar
以後,進入.vue
單文件組件,會發現右上角多了一個圖標
而後咱們在頁面中寫入template
、script
、style
根元素,點擊一下這個圖標
使人激動的事情發生了,咱們的vue
文件,按照功能,被拆分紅了三個視窗,而且每一個視窗都負責本身的功能,其餘的兩個根元素都被合併了。
也就是說,咱們能夠很是容易的進行區分開template
、script
、style
了,把一個文件拆成三個窗口,當三個文件來用,並且所有由插件來幫你完成,咱們只須要點一下便可。
不得不說,我特別喜歡這個功能。
這個功能如今的
volar
已經有了,只要你在vscode
插件中心下載就可使用了。接下來的幾個功能,是我在volar
源代碼中找到的,都是驚喜。
ref sugar
語法快捷改動支持ref sugar
是一個還在rfc
階段的功能,可是已經持續好久了,如今的vue3
版本已經能夠嚐鮮使用了。具體的用法以及語法我就不展開贅述了,我主要說一下volar
和ref sugar
的結合。
報錯不用管,是
eslint-plugin-vue
的緣由
能夠看到,在使用了ref sugar
以後,script
上面出現了一個ref sugar
的小圖標,而且打了個對勾,那麼咱們點一下那個對勾,看看會發生什麼。
能夠看到,咱們點擊這個小對勾以後,它由本來的ref sugar
語法變爲了普通的script setup
模式。
驚不驚喜,意不意外。
style
裏面的class
引用能夠看到,在.foo
這個類名上面,出現了一個1 reference
的小圖標,表明着當前class
有一次引用,咱們點擊一下這個1 reference
出現了一個彈窗,裏面是當前class
的具體使用位置。
class
追溯咱們建立一個template
根元素,在裏面寫入
<template>
<div class="foo"></div>
</template>
複製代碼
在style
中寫入
<style scoped>
.foo {}
</style>
複製代碼
除了style
中的.foo
上面會出現1 reference
的小圖標以外,在class="foo"
的foo
下面,會出現一道橫線。
對於常用vscode
的開發人員來講,這表明什麼意義就沒必要多說了。
咱們根據提示,按住command
而後點擊,會發現光標本身移動到了style
中的.foo
以前。
哇,awesome!
css module
類型提示css module
通常是react
技術棧用的會比較多一些,就我我的來講,是從沒在vue
裏面使用它的,由於vue
提供了scoped
做用域,不用擔憂樣式衝突,直接使用預處理器會更加簡單方便。
咱們建立以下代碼
<template>
<div :class="$style.foo"></div>
</template>
<style module>
.foo { }
</style>
複製代碼
而後將鼠標移動到$style
上
有點意思,看來vscode
是讓volar
玩明白了。
lang
語法提示vue
可使用lang
屬性來選擇使用的語言,好比template
中的html
和pug
,script
中的ts
,style
中的scss
等。
可是在之前,咱們都是手動輸入的,編輯器,或者說vetur
並無給咱們提供任何提示,有可能你找了好久的莫名其妙的問題,就是由於lang
寫錯了。
可是這一切,在有了volar
以後,都不一樣了
如今咱們在使用lang
進行選擇預處理器的時候,volar
爲咱們提供了明確的提示,告知咱們可使用哪幾種語言來進行編寫。
template
語法轉換vue
默認提供了兩種模板供咱們使用,可是通常都會使用html
,另一種叫作pug
。
相對於html
,pug
更偏向於yml
那種,簡潔程度特別高。
在volar
中,爲咱們提供了html
和pug
互相轉換的功能。
<template>
<div>
<li></li>
<li></li>
<li>
<img />
</li>
</div>
</template>
複製代碼
在咱們書寫template
以後,template
頂部會出現一個小小的pug
圖標,咱們能夠看到此時它是沒有被選中的
這個時候咱們點擊一下這個圖標,讓它選中。
神奇的事情發生了。
咱們寫好的html
模板,被自動轉化成了pug
,再點擊一下,又回到了咱們熟悉的html
從功能三開始,基本都是算內測的新功能,我是機緣巧合之下,將
volar
下到本地進行查看的時候發現的這些。想嚐鮮的能夠本身下載源碼,而後在packages/vscode-vue-languageservice/testCases
目錄下體驗。
但願這些功能能夠儘快發佈!