предисловие
Дружеское напоминание: в этом руководстве представлен только метод подсказки vscode! Я не буду делать другие редакторы!
использовалvscodeа такжеelement-uiНебольшие партнеры компонента обязательно испытают это, его компонент может автоматически подсказывать имя и подсказывать, что его можно передать вAttributes
Ниже скриншот использования
Прилагается иллюстрация передачи значения компонента el-dialog.
Видно, что подсказываемые им значения в принципе могут совпадать. отличный отsnippets, самым большим преимуществом этого метода является введение требуемых значений по запросу, напримерalignЭти значения могут даже намекать на то, какие значения можно вводить. Но этот полезный метод в дополнение кelement-uiПомимо компонентов, я не видел, чтобы какие-либо другие компоненты имели такую форму подсказки.Для того, чтобы изучить, почему это может подсказать, я также скачалelement-uiИсходный код , я также написал библиотеку компонентов со ссылкой на его метод написания, а также рассмотрел подсказку, сгенерированную его файлом ts. После серии попыток я потерпел неудачу. Этот процесс проходил с перерывами в течение полугода, и у меня никогда не было никаких мыслей. До недавнего времени я думал о том, имеют ли установленные мной плагины правоelement-uiподдерживается.
После постоянного отключения и включения моего плагина я наконец нашел плагин, который запрашивает код:Vetur, который пишетVueКод должен иметь плагин.
Давным-давно я былVeturпознание есть толькоVueВыделение тега - это просто напоминание, я никогда не думал, что онelement-uiПоддержка советов. Позже, просмотрев его документ, я обнаружил, что он действительно был прав.element-uiподдерживать
После долгой и упорной работы я наконец нашел решение, так что давайте перейдем к делу.
1. Теги/атрибуты
Tagsа такжеAttributesПо сути, это два разных json-файла, вотelement-uiизelement-tags.jsonа такжеelement-attributes.jsonсказать. Поскольку конкретной документации не найдено, следующие инструкциитолько для справки! !
element-tags.json
GitHub.com/элемент пользовательского интерфейса/О…
Это легко понять по этикетке, которая определяет названия этикеток различных компонентов. Есть 4 атрибута, которые могут быть включены в меткуИмя свойства | эффект |
---|---|
attributes | Свойства, которые могут вызывать подсказки |
description | описание компонента |
subtags | Верхний компонент (кажется, что это значение не влияет на фактическое использование) |
defaults | Непонятно, что делает это свойство |
element-attrbiutes.json
GitHub.com/элемент пользовательского интерфейса/О…
Этот файл видно из названия файла, это файл для описания свойств. Есть только 3 общих атрибутаИмя свойства | эффект |
---|---|
options | Запрос по умолчанию для атрибутов, которые можно выбрать |
description | Описание недвижимости |
version | номер версии |
Большинство свойств здесь общедоступные, но некоторые свойства могут иметь одинаковое имя, но разные описания функций.Что мне делать?
На самом деле это можно решить
Например, здесь пригодитсяcenterАтрибут, можно добавить формат 'название компонента/' перед атрибутом, чтобы разные компоненты могли запрашиваться с одним и тем же именем, а описание менять по разному (слабо жаловаться, ихel-stepsпохоже неправильно)2. Как настроить его в компонент
На самом деле, просто посмотритеelement-uiБиблиотека компонентов, по сути, ничего не видит, из-за чего мне потребовалось много времени, чтобы изучить и понять. Правда в том,Veturдляelement-uiподдержал. надgithubадресelement-uiбыстрый файл,VeturНапрямую зависит от этих двух файлов, поэтому вelement-uiЭти два файла не нужно размещать в компоненте. Но маленькие разработчики вроде нас не всегда могут проситьVeturРазработчики плагинов делают поддержку наших компонентов. К счастью, глядя наVeturПрочитав исходный код и обратившись к зарубежным материалам, я обнаружил, что наша личная команда разработчиков тоже может делать подсказки по коду.
Прежде всего, необходимы два вышеуказанных файла.Для атрибутов использования компонентов в библиотеке компонентов необходимо сначала написать набор правил. После создания правил поместите эти два файла в проект. Вроде создал новый прямо в проектеveturимя папки и поместите в нее эти два файла. тогда просто нужноpackage.jsonДобавьте несколько строк кода в файл
"vetur": {
"tags": "vetur/tags.json",
"attributes": "vetur/attributes.json"
},
Конечно, если вы укажете расположение файла, как я,filesсвойства должны быть добавленыveturКаталог
После выполнения этих шагов упакуйте его локально или загрузите наnpmСреди них переустановите файл и перезапустите его.vscodeПосле редактора вы можете обнаружить, что запрос кода выполнен успешно.
3. Что делать, если у меня нет библиотеки компонентов?
На самом деле, этот метод является первым методом, который я нашел. теперь, когдаVeturпара плагиновelement-uiподдержка компонентов, и снова используются плагиныjsНаписано, почему я не могу напрямую модифицировать его исходный код?
1. Первая находкаVeturРасположение плагина на компьютере
mac 地址:/Users/[user]/.vscode/extensions/octref.vetur-0.24.0
WindowsСистему не пробовал, ведь поиск Baidu позволяет быстро найти место установки плагина.
2. Введитеsever/dist/modes/template/tagProvidersпапка, найтиexternalTagProviders.jsа такжеexternalTagProviders.d.tsдокумент
externalTagProviders.js
Сначала вы можете определить две переменныеnewTagsа такжеnewAttributes(Конечно, вы можете выбрать другое имя), вы можете напрямуюrequireПолучите ваши местные правила
const newTags = require("本地地址")
const newAttributes = require("本地地址")
экспортировать еще одинnewTagProviderПеременная, конкретное написание может относиться кelementTagProvider
exports.newTagProvider = getExternalTagProvider('new', newTags, newAttributes);
Примечание: первый параметр'new'Вы не можете воспринимать это случайно, вам нужно использовать его в следующих шагах.
externalTagProviders.d.ts
Добавить в файл раздел экспортируемой подсказки ts (вероятно, эта роль? ts не очень хорошо учится)
export declare const newTagProvider: IHTMLTagProvider;
3, найдено в том же каталогеindex.jsфайл, нашелexports.allTagProviders, добавьте ранее экспортированные нижеnewTagProvider
exports.allTagProviders = [
htmlTags_1.getHTML5TagProvider(),
vueTags_1.getVueTagProvider(),
routerTags_1.getRouterTagProvider(),
externalTagProviders_1.elementTagProvider,
externalTagProviders_1.onsenTagProvider,
externalTagProviders_1.bootstrapTagProvider,
externalTagProviders_1.buefyTagProvider,
externalTagProviders_1.gridsomeTagProvider,
++externalTagProviders_1.newTagProvider
];
подgetTagProviderSettingsв методеtryВ операторе добавьте метод, чтобы определить, следует ли загружать подсказку
if (dependencies['new']) {
settings['new'] = true;
}
существуетdependenciesсреди'new'представляет собойpackage.jsonНазвания некоторых зависимостей, если у вас действительно нет библиотеки компонентов, то можно просто заполнитьVueкакие,eslintАх, предпосылка в том, что у вашего проекта есть зависимости. второйsettingсреди'new'Включен ли представленный параметр. Это значение должно совпадать с параметром, который я предложил на втором шаге, чтобы он вступил в силу.
После сохранения изменений перезапуститеvscodeТакже появились редактор и подсказки по коду.На этом все готово.
(пс:vscodeсогласно сF1затем введите команду>Reload Window, текущий редактор можно перезапустить)
4. Пишите в конце
Как студент-естественник, я действительно не знаю, как организовать язык. Это моя первая статья. Я написал как можно больше подробностей. Если есть какая-то часть, которую я не понимаю или чувствую, что мое письмо не очень хорошо или неправильно, каждый может упомянуть об этом, я смиренно приму это.
Спасибо вам всем!