Каждый раз, когда вы меняете работу и меняете шахту, вам приходится переустанавливать различные среды и устанавливать новую.vscode
Должен получить плагин, ноvscode
Вы действительно разбираетесь в плагинах? Сегодня мы поговорим о наиболее часто используемых в разработке плагинах, называемых фрагментами кода.snippets
, вы также можете создать плагин и опубликовать его на рынке приложений.
Что такое сниппеты
кодирование маленького театра
(Сюжет чисто выдуманный, если есть сходство, считайте, что я вас копирую)
Цян - превосходный осадный лев в компании. Четкий звук постукивания по механической клавиатуре и слегка отведенная назад линия роста волос являются символом его личности. Превосходная система знаний во внешнем интерфейсе позволяет ему справляться с различными потребностями продуктов и продуктов каждый день. . . .
Обладая более чем 20-летним стажем работы одной рукой, А Цян каждый раз может уложиться в срок, чтобы завершить свою работу, и он прочно удерживает позицию лидера в области передовых технологий.
Еще один день, как обычно, команда проекта пришла на новый передний осадный лев по имени Ayong. Объем волос Ayong потрясающий. Он никогда не использовал механическую клавиатуру для разработки кода, и он был погружен в визуализацию на первом месте в течение многих лет.
Цян был спокойным на поверхности, но он был довольно завистла от объема волос Yong. Так как он сидел за столом позади него, он, естественно, заинтересовался этим новым интерфейсом Yong.
Через неделю А Цян благодаря внимательному наблюдению обнаружил, что А Йонг очень быстро начал работу с кодом и перешел на формальную стадию разработки менее чем за два дня. На разработку функций этой недели ушло еще два дня. Маленькая зеленая иконка на пре-релизе — символ победы Айонга. заставил Ацяна уйти, крупного мужчину с головой, полной беспокойства.
А Цян подумал про себя: пора взять на себя инициативу в атаке.
Цян начал каждый день приносить А Чжэнь любовный завтрак, а также намеренно или ненамеренно общался с А Йонгом, начиная с ухода за волосами, а затем и до итерационных особенностей различных интерфейсных фреймворков. Через неделю А Цян наконец раскрыл секрет высокой эффективности А Йонга:
Он установил все видыsnippets
плагин и запомните сокращения.
Вынужденный не может дождаться, чтобы надетьsnippets
Плагин, я обнаружил, что он действительно более эффективен, сделал глоток чая лайчи Пуэр, прищурился на рекламу пересадки волос недалеко от окна, и уголки рта слегка приподнялись.
сегмент кода
code snippets
Также известный как фрагмент кода, он используется для ввода некоторых определенных кодов шаблонов, чтобы ускорить процесс кодирования, например:tsrfc
то естьtypescript react function component
Аббревиатура , за которой следует некоторая описательная информация.
Выберите первый вариант в раскрывающемся списке, и появится информация о шаблоне, как показано ниже.
snippets
Он также привязан к языку разработки, а разные языки могут иметь разныеsnippets
,Напримерcomputed
параметры будут толькоvue
в результате,react
Нет, чтобы не запутаться,vscode
Механизм заключается в том, чтобы делать разные сопоставления для разных языков, встроенные в конфигурацию.snippets
час,vscode
Это даст вам приоритет для выбора языка, который вы хотите применить.
Вообще-то в предыдущей статье есть абзац(портал) представлен в местномvscode
Конфигурация в среде разработкиsnippets
, это самый простой обычайsnippets
метод, но есть и недостатки:
Первая проблемаsnippets
Конфигурация представляет собой файл json, как показано на следующем рисунке.body
Единственным приемлемым форматом является либо однострочная строка, либо массив строк, поэтому при копировании и вставке общих кодов вам необходимо выполнить цикл преобразования формата.
Вторая проблема заключается в том, что если я поменяю машину для разработки, то некоторые шаблонные конфигурации, которые у меня накопились, будут повторно введены, и придется различать разные языки, что очень хлопотно мигрировать.
Рынок плагинов
vscode
Рынок плагинов очень богат. На нем вы можете не только найти стандартную подсветку языка, поддержку тем, проверку кода и другие плагины для разработки, но вы также можете почистить leetcode и поиграть в Xiaobawang.
так что используйтеvscode
Плагин способ поддерживатьsnippets
Это очень хороший способ, вvscode
На рынке плагинов есть разные языки.snippets
Поддержка, ниже приводится результат поиска.
Например, нажмите наreact
Связанныйsnippets
Плагин, в его подробном описании будут различныеprefix
Соответствующий список информации шаблона, вы можете запомнить некоторые сокращения после его использования.
Кроме показанного вышеreact snippets
Кроме того, исходя из моего собственного опыта разработки, ниже перечислены несколько часто используемых интерфейсныхsnippet
:
- HTML Snippets
поддерживать всехHTML5
Функции
Ключевое слово для поиска: `html-фрагменты
- JavaScript (ES6) code snippets
служба поддержкиES6
js плагин для синтаксиса
Ключевое слово для поиска: javascriptsnippets
- Vetur
мощныйVue
плагины, не толькоsnippets
, а также различную подсветку синтаксиса, проверку формата и т.д.
Ключевое слово для поиска: ветур
- Ant Design Snippets
Вы правильно прочитали,antd
тоже есть своиsnippets
Ключевое слово для поиска: antd-фрагменты
- Flutter Widget Snippets
Flutter
Существует множество встроенных компонентовsnippets
Это хороший выбор для управления
Ключевое слово для поиска: флаттер-фрагменты
пользовательский плагин
Плагины, использующие рынок плагинов, в основном универсальны, что означает, что вам нужен сопоставленный список для просмотра соответствующего кода шаблона, но если вы не найдете то, что вам нужно на рынке плагиновsnippets
плагин, то вы можете создать плагин и опубликовать его самостоятельно, так что вам не нужно беспокоиться об изменении среды, и вам не нужно помнить некоторыеprefix
.
Шаг 1 Установите строительные леса и соберите проект
npm install -g yo generator-code // 安装全局脚手架
yo code // 运行脚手架
После запуска скаффолдинга необходимо заполнить некоторые конфигурации, например, какой тип плагина выбрать, как показано на рисунке ниже, здесь нужно выбратьNew Code Snippets
, а затем некоторыеname
, description
, language
и другая информация
После того, как все настройки будут выполнены, будет сгенерирован проект, который можно разрабатывать и отлаживать сразу, структура проекта такая же, как и у нашей обычной front-end разработки.npm
Ошибка режима, язык разработки также ts или js, как показано на следующем рисунке:
нажиматьF5
Он будет ввести новое окно, которое является IDE для отладки, а запись в нем вступит в силу.snippets
конфигурация.
Шаг 2. Настройте сниппеты.
Посмотреть проектpackage.json
найдетcontributes.snippets
Атрибут, который содержит сопоставление языка и конфигурацию связанных сниппетов, нажмите на негоsnippets.code-snippets
Файл обнаружит, что это пустой файл json.Если вы хотите записать содержимое, формат внутри точно такой же, как и в конфигурации JSON, упомянутой выше.
Затем возникает проблема, на самом деле это все еще настройка этого json-файла, упомянутого выше.body
Проблема до сих пор не решена, ее довольно сложно настроить, пожалуйста, не паникуйте, вы действительно можете написать здесь оператор скрипта, чтобы преобразовать наш обычный код.
Сначала я смотрю на структуру каталога,example
Путь заполнен шаблонным кодом,snippets.json
мой окончательный выходной файл json, основной код сценария преобразования находится вcompiler.js
внутри.
братьreact
изuseCallback
Например 🌰, первые три строки — это дополнительная информация комментария, которая преобразуется в конфигурации, следующий код — содержимое шаблона,${}
Описание упакованного кода представляет собой редактируемую строку шаблона, значение по умолчанию — после двоеточия, а число представляет порядок редактирования, напримерmemoizedCallback
После редактирования нажмите клавишу Tab, чтобы перейти к следующему.doSomething
.
компилятор.js выглядит следующим образом:
const fs = require('fs')
const path = require('path')
// example 目录的绝对路径
const exampleDir = path.resolve(__dirname, 'example')
// 输出json配置目录
const outputDir = path.resolve(__dirname, 'snippets')
// 初始化代码片段json
const snippetsMap = {}
const readDir = (rootDir) => {
const fileList = fs.readdirSync(rootDir)
if (fileList.length > 0) {
fileList.forEach(fileName => {
const filePath = path.join(rootDir, fileName)
const statInfo = fs.statSync(filePath)
// 如果是目录继续遍历
if (statInfo.isDirectory()) {
readDir(filePath)
} else if (statInfo.isFile()) {
handleFile(filePath, fileName)
}
})
}
}
// 处理文件
const handleFile = (filePath, fileName) => {
let name = fileName.split('.')[0]
let prefix = fileName.split('.')[0]
let des = ''
const bodyList = []
const fileInfo = fs.readFileSync(filePath, 'utf8')
const lineSplits = fileInfo.split('\n')
// 逐行区分,对名称,描述,prefix做提取处理
lineSplits.forEach(line => {
const nameReg = /\/\/\s+@name:\s*(.*)/
const prefixReg = /\/\/\s+@prefix:\s*(.*)/
const desReg = /\/\/\s+@description:\s*(.*)/
if (nameReg.test(line)) {
name = line.match(nameReg)[1]
} else if (prefixReg.test(line)) {
prefix = line.match(prefixReg)[1]
} else if (desReg.test(line)) {
des = line.match(desReg)[1]
} else {
bodyList.push(line)
}
})
snippetsMap[name] = {
prefix,
body: bodyList.length > 1 ? bodyList : bodyList[0],
description: des
}
}
readDir(exampleDir)
fs.writeFile(path.join(outputDir, 'snippets.json'), JSON.stringify(snippetsMap, null, 2), (err) => {
if (err) throw err;
console.log('write success')
})
компилятор.js делает несколько вещей:
- траверс
example
Все файлы под - Извлеките некоторую аннотационную информацию и используйте ее как
name
илиdescription
- вывод записывается в
snippets.json
step3 Опубликуйте плагин
Для публикации плагинов требуется инструмент командной строки ---vsce
npm install -g vsce
Мой способ здесь состоит в том, чтобы упаковать его в.vsix
Файл загружен, и команда упаковки выглядит следующим образом
vsce package
идти после упаковкиAzure
можно загрузить с официальной консоли
Azure
Возможно, вам потребуется сначала создать новую организацию, вы можете обратиться к следующим документам:
я поддерживалreact
Связанныйsnippets
плагин, поиск по ключевым словамreact-tsx-hooks-snippets
Ты можешь найти:
Каждый может представить мне проблему на github для улучшения~~
адрес проекта на гитхабе:GitHub.com/tin is son/hot ah…
конец
Сниппеты — это средство, помогающее нам повысить эффективность, только повысив эффективность, мы сможем избавиться от 996. Я надеюсь, что каждый сможет гибко использовать их в своей работе и внедрять собственные плагины для сниппетов.
Это не легко создать, я надеюсь найти больше похожих + следить за Erlian, который постоянно обновляется! ! !
P.S. В тексте есть ошибки, прошу меня поправить.
Прекрасное прошлое 📌
- Проверьте это, прежде чем Vue3 построит колеса «крючки».✨
- Откройте React-Redux с помощью хуков✨
- Как написать React Hooks на TypeScript✨
- Инструмент отладки React: React DevTools✨
- Правильная позиция Vue3 для использования TypeScript✨
- Один из первых пользователей Vue3: React Hooks VS Composition API✨
Публичный номер: внешний малый DT
Справочная статья 📚: