В предыдущей статье мы описали как сделать простое расширение которое интерпретирует файл (в том случае мы добавили возможность приложению открывать файлы .gltf, .dae и .obj).
В этой статье мы разберем какие еще можно делать расширения, в чем между ними разница и где их применять.
В платформе на данный момент реализовано 3 типа расширений - File, WorkDir и App. Давайте с каждым из них разберемся подробнее.
Это самый простой и понятный тип.
Файл это набор байт который мы можем прочитать различными программами на ПК. Например у нас есть файл index.html, как разработчик я могу открыть его с помощью своего IDE (например Visual Studio Code или WebStorm), но в операционной системе есть текстовые редакторы которые которые также смогут открыть такой файл. На OSX это может быть pages в Windows можно воспользоваться блокнотом. Если у вас установлен офисный пакет например Microsoft Office или LibreOffice этот файл можно открыть с помощью программы Word.
Также и наши расширения с типом file не привязаны к какому-то конкретному расширению или типу файла. С помощью настроек в config.json вы можете задать какие типы файлов по умолчанию сможет открывать ваше расширение.
{
"file": {
"ext": [".html", "htmlx"]
}
}По мимо этого вы можете задать в каком режиме оно будет работать: чтение (read), редактирование (write), редактирование и чтение (read_and_write)
{
"mode": "read_and_write"
}Более сложным типом является work_dir, он похож на файл, но интерпретирует не один конкретный файл, а целую дерикторию.
Он по умолчанию работает на чтение и редактирование.
С помощью таких расширений можно создавать целые приложения которые будут манипулировать своей структурой файлов. Идеально подойдет для всевозможных дашбордов, списков задач или например wiki документации.
Особый тип расширения, он не связан с файловым хранилищем, такое расширение встраивается в общее меню и открывается вне редактора. Также им нельзя поделится с внешними пользователя.
С помощью app можно создавать расширения которые могут взаимодействовать не только с внутреним API платформы, но и подключать внешние сервисы добавив например в настройки подключение через HTTP Proxy.