scripts - tvortsa/trilium GitHub Wiki

Trilium поддерживает создание code notes, то есть заметки, которые позволяют вам сохранить некоторый программный код и выделить его. Особый случай JavaScript code notes который также может быть выполнен внутри Trilium, который может в сочетании с Script API обеспечивая дополнительную функциональность.

Scripting

Чтобы пойти дальше, я должен объяснить базовую архитектуру Trilium - по сути, это классическое веб-приложение - в нем есть два основных компонента:

  • frontend работает в браузере (используя HTML, CSS, JavaScript) - он используется в основном для взаимодействия с пользователем, отображения notes и т.п.
  • backend запускает JavaScript код в node.js runtime - он ответствен за, например, хранение notes, криптографию и т.п..

Итак у нас есть frontend и backend, каждый со своим набором обязанностей, но их общая особенность в том, что они оба запускают JavaScript код. Добавьте к этому тот факт, что мы можем создать JavaScript code notes и связать его с чем-то.

Вариант использования кнопки

Давайте посмотрим на наш демонстрационный скрипт (поставляется с Trilium document) - Task manager. Одна из функций этого скрипта - добавить кнопку в интерфейс Trilium, которая позволит пользователю легко добавлять новые Task (TODO элемент).

Сначала взгляните на красный круг сверху - это то, чего мы хотим достичь - новая кнопка в пользовательском интерфейсе, которая создаст новую заметку, представляющую task/todo элемент.

Красная точка ниже первой обозначает тип заметки, который мы создали для этого скрипта - it's "JavaScript frontend". Это фронтэнд, потому что добавление кнопки в пользовательский интерфейс - это ответственность фронтэнд.

В содержании заметки вы можете увидеть код, который вызывает один из методов API, этот специально предназначен для добавления новых кнопок. Код должен установить несколько свойств кнопки:

  • button title
  • icon которая должна появиться на кнопке
  • дополнительный хоткей, по которому вы можете вызвать кнопку
  • самое главное "action" - что должно произойти при нажатии кнопки

Action обработчик

Сохранение заметки в базе данных является обязанностью бэкэнда, поэтому мы немедленно передаем управление бэкэнду и просим его создать заметку. Как только это будет сделано, мы покажем вновь созданную заметку, чтобы пользователь мог установить заголовок задачи и, возможно, некоторые атрибуты.

Выполнение скрипта

Итак, у нас есть скрипт, который добавит кнопку на панель инструментов. Но как мы можем выполнить это? Одна возможность - нажать на "play" icon (отмечен красным кружком). Проблема в том, что это изменение пользовательского интерфейса связано с временем выполнения Trilium, поэтому, когда мы перезапускаем Trilium, кнопки там не будет.

Мы должны выполнять его каждый раз при запуске Trilium, но, вероятно, нам не нужно вручную нажимать кнопку воспроизведения при каждом запуске.

Решение отмечено красным кружком внизу - эта заметка имеет label @run=frontendStartup - это один из "system" labels который Trilium понимает. Как вы можете догадаться, это приведет к тому, что все такие помеченные заметки скрипта будут выполнены после запуска фронтэнда Trilium.

Больше примеров

Вы можете увидеть больше сценариев с объяснением в Advanced showcases

События

См. Events.

Script API

См. Script API.

⚠️ **GitHub.com Fallback** ⚠️