Для реализации плагина поддержки WeApp в IDE JetBrain я попытался написать грамматику BNF, но это оказалось слишком сложной задачей. Полное изучение этого вопроса требует времени, которого у меня нет из-за занятости на работе. Поэтому пришлось приостановить этот проект.
Хотя у JetBrains есть множество официальных документов по разработке плагинов, проекты слишком масштабны. В процессе изучения и исследования за последние дни я обнаружил, что расширение существующей поддержки языка может быть затруднительным. На самом деле, поддержка WeApp требует расширения только для xml (wxml), css (wxss) и js. К сожалению, мне не удалось найти подходящий путь для расширения поддержки.
За последние два дня я пытался написать файл с грамматикой BNF для wxml, что привело меня к полному изнеможению.
Официальная документация IDEA по разработке плагинов поддержки языка включает две основные части:
Практическое руководство## Журнал обновлений### 18 декабря 2018
Сегодня обнаружил, что у JetBrains есть еще один community js-библиотек для определения, который помогает улучшить определения библиотек для некоторых js-фреймворков. Можно добавить несколько библиотек в настройках Preferences | Languages & Frameworks | JavaScript | Libraries
. В этом интерфейсе настроек есть возможность прямого скачивания, и он предоставляет список определений из открытого проекта на GitHub, среди которых есть три, которые могут быть связаны с WeChat Mini Programs:
Эта функция поддерживается только в версии Ultimate. В WebStorm я тестировал все три библиотеки, и они работают, но определение weapp-api не так полно, как определение wexin-app.### 19 декабря 2018 Наконец нашел подходящее решение для добавления API WeChat-приложения в плагин, добавив его напрямую в поддержку JavaScript. Сначала нужно найти
JavaScriptLanguage
в директории плагинов IDEA, затем найтиJavaScriptLanguage.jar
в поддиректорииlib
. Лучше всего добавить этот jar-файл в библиотеку SDK, чтобы использовать его при разработке плагина. Вplugin.xml
добавить:
<depends>JavaScript</depends>
...
<extensions defaultExtensionNs="JavaScript">
<predefinedLibraryProvider implementation="com.ytw88.weappsupport.WeappJSPredefinedLibraryProvider"/>
</extensions>
depends
не является обязательным, это позволяет плагину работать только на платформах, поддерживающих JavaScript.extensions
добавляет реализацию для extensionPoint: predefinedLibraryProvider
JavaScript.В соответствии с официальной документацией, можно использовать Messages.showInfoMessage("Сообщение", "Заголовок")
для отображения диалогового окна, а также использовать logger
для вывода логов, хотя окно для отображения логов пока не найдено.#### Регистрация файла как известного типа
Если использовать FileTypeManager.getFileTypeByExtension
в FileTypeFactory.createFileTypes
, это может привести к циклической зависимости и исключению, что не позволит запустить IDE. Необходимо найти плагин в директории /User/Library/Application Support/xxxxx/
и удалить его, чтобы IDE могла запуститься. В настоящее время Wxml-файлы регистрируются как Html-файлы, что достигается путем прямого использования HtmlFileType в WxmlFileTypeFactory (так как конструктор HtmlFileType не является public/protected, и, следовательно, невозможно его наследовать). Для wxss-файлов решение заключается в наследовании WxssFileType от CssFileType. В будущем можно будет выделить время для улучшения поддержки синтаксиса Wxml, например:* <import ...>
Обновление определений wxapi
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )