本文介紹的是 VSCode Snippet 插件,一種代碼片段配置插件,可以節(jié)省你寫樣板代碼的時間。
你可能之前學(xué)習(xí)過 VSCode Snippet 插件,知道它的作用也學(xué)習(xí)了配置的語法,但是你想不到落地使用的場景。本文也將解決你的這個疑惑~
本文將介紹 VSCode Snippet 的使用介紹、配置語法、引入方式和使用場景?!就扑]學(xué)習(xí):vscode教程、編程教學(xué)】
VSCode Snippet 插件使用簡介
(圖片來自于 VSCode 官網(wǎng))
如 gif 圖所示,當(dāng)你想編寫一段 ajax 代碼時,只需要在編輯器里輸入 ajax,再點擊下 Tab 鍵,就會為你自動生成 ajax 代碼的模板。
Snippet 支持我們配置自己想要的任意代碼片段,因此我們可以把項目中常見的代碼片段抽出來,提高編程效率。同時可以共享給所在的團隊,提高整個團隊的編程效率。
Snippet 配置語法
我們拿 antd 組件庫舉例,比如我們想配置 antd 的 Snippet 代碼片段:
Antd Selet 組件代碼如下:
<Select defaultValue="lucy" style={{ width: 100 }} onChange={handleChange} options={[ { value: 'jack', label: 'Jack', }, { value: 'lucy', label: 'Lucy', } ]} />
對應(yīng)的 Snippet 配置代碼如下:
{ "antd/Select": { "prefix": ["Select"], "body": [ "<Select", " defaultValue={$1}", " style={{ width: ${2|100,200,300,400|} }}", " onChange={${3:handleChange}}", " options={[", " {", " value: $4,", " label: $5,", " }", " ]}", "/>" ], "description": "Antd Select UI 組件" } }
字段含義:
-
prefix 是觸發(fā) snippets 的前綴,可以通過數(shù)組指定多個
-
body 是填入到編輯器的內(nèi)容
-
description 是 snippets 的描述
body 部分可以通過 ${} 的方式指定光標位置、順序、占位字符串、可用的值等
${} 語法簡介:
-
光標跳轉(zhuǎn):
2:
-
占位符:${1: placeholder}
-
可選值:${1|text1,text2,text3|}
-
變量:$變量名
在模版可編輯位置填入內(nèi)容的時候,有的時候需要用到選中的值、剪貼板的值、文件名、日期等,這些信息通過 snippets 中支持的變量來取。
比如:* TM_FILENAME: 文件名* TM_CURRENT_LINE: 當(dāng)前行的內(nèi)容* CLIPBOARD: 剪貼板內(nèi)容* WORKSPACE_NAME:workspace 的名字* WORKSPACE_PATH:workspace 的路徑* CURRENT_YEAR:當(dāng)前年* CURRENT_MONTH:當(dāng)前月* CURRENT_DATE:當(dāng)前日* RANDOM: 隨機數(shù)* RANDOM_HEX: 6 位隨機 16 進制數(shù)* UUID: 唯一 id
可以取這些變量的值來填入到光標位置,方式就是使用
CURRENT_YEAR 的方式。
Snippets 引入方式:
-
方式一:直接在項目中生成 .vscode/xxx.code-snippets 文件,格式為本文描述的 JSON 格式,語法如上述介紹。操作方式:
-
方式二:發(fā)布 VS Code 插件:
Sinppets 插件使用場景:
-
使用一些開源組件庫可以找尋是否已經(jīng)存在 Snippet 插件,例如 antd 的 snippet 插件:github.com/bang88/antd…
-
如果你的項目使用了某個開源的框架/組件庫,這個開源項目沒有配套的 Snippets 插件,那么已經(jīng)學(xué)會封裝 Snippets 插件的你,快快動起勤勞的小手,是時候為你的團隊或者社區(qū)做些貢獻啦~
-
如果你的項目中,基于 antd 等 UI 組件庫,又封裝了一些自己業(yè)務(wù)的公共組件,那么可以給這些業(yè)務(wù)相關(guān)的公共的組件封裝一個 Snippets 插件,提高你團隊的效率
-
除了 JSX 類的組件,一些常用的工具函數(shù)也可以抽象 Snippets 插件代碼片段