Работа с Genie в Engee
Страница в процессе разработки. |
Engee предоставляет возможность разрабатывать собственные приложения непосредственно в своей среде с помощью фреймворка Genie. Это позволяет пользователям создавать собственные приложения, веб-интерфейсы и различные интеграционные решения прямо в рабочем пространстве Engee.
Engee — это готовое и настроенное окружение для запуска приложений, созданных с использованием фреймворка Genie. Engee также предоставляет базовый функционал для их модификации. Далее в статье показаны основные принципы работы с Genie, зная которые, вы сможете адаптировать готовые приложения под свои нужды. |
Genie — это фреймворк для разработки веб-приложений для Julia. Подробнее о фреймворке читайте на официальном сайте.
На Genie уже написан и полностью функционирует Редактор цифровых фильтров.
Среда Engee оптимизирована под работу с фреймворком Genie и несмотря на ядро Julia и поддержку работы с Python, не рекомендуется использовать любые другие фрейморки. |
Использование Genie
Чтобы создать собственное приложение в Engee, следуйте следующим инструкциям. Приложение может быть представлено в виде .jl-скрипта или директории с файлом app.jl
. Размещение таких приложений выполняется в пределах директории /user
. Ниже описаны основные шаги для запуска, управления и работы с приложениями на основе Genie.
-
Размещение приложения — созданное приложение необходимо поместить в директорию
/user
. Если приложение представляет собой директорию, то убедитесь, что в ней есть файлapp.jl
. Удалите файлы config и*.toml
, если они присутствуют. Пример размещения:/user/apps/MyGenieApp/ app.jl public/ src/
-
Запуск приложения — для запуска приложения выполните следующую команду:
engee.genie.start("/user/apps/MyGenieApp", devel=true, log_file="/user/apps/MyGenieApp")
здесь:
-
devel
: Опциональный параметр, включает режим разработки, что позволяет видеть изменения без перезапуска. -
log_file
: Путь для сохранения логов приложения. Указывать необязательно.Если указан относительный путь, то команда ищет приложение относительно текущей директории.
-
-
Остановка приложения — для остановки запущенного приложения выполните:
engee.genie.stop("/user/apps/MyGenieApp")
Путь может быть задан относительным или абсолютным.
-
Список запущенных приложений — чтобы проверить, какие приложения работают в данный момент, выполните команду:
engee.genie.list()
-
Просмотр логов приложения — для получения логов работающего приложения используйте команду:
engee.genie.logs("/user/apps/MyGenieApp")
Если при запуске приложения параметр
log_file
не был указан, то команда все равно выведет текущие логи.
Ограничения и особенности использования
-
Невозможна установка новых пакетов, не включенных в сборку Engee. Однако с помощью следующей команды можно посмотреть доступные пакеты:
print(read("/usr/local/genie/Project.toml",String))
-
Приложение, представленное в виде директории с файлом
app.jl
, считается стандартным. Это рекомендуемый способ организации проекта.
Пример создания приложения
Создайте файл app.jl
в директории /user
файлового браузера :
→
В файле app.jl
добавьте код приложения, написанного с помощью фреймворка Genie:
module App
using GenieFramework
@genietools
@app begin
@in N = 0
@out squared = 0
@onchange N begin
squared = N^2
end
end
function ui()
[
cell([
p("Enter a number to calculate its square:")
]),
cell([
textfield("N", :N)
]),
cell([
bignumber("The square of the number is:", :squared)
])
]
end
@page("/", ui)
end
Подробное описание кода приложения
-
Создание модуля:
module App
Это начало модуля
App
. В Julia модули используются для организации кода и его изоляции. Весь код приложения будет находиться внутри этого модуля. -
Подключение библиотеки
GenieFramework
:using GenieFramework @genietools
здесь:
-
using GenieFramework
: Подключение библиотеки для работы с веб-приложениями; -
@genietools
: Макрос, который подготавливает окружение для работы приложения, включая подключение необходимых ресурсов (таких как иконки и стили).
-
-
Объявление реактивного приложения:
@app begin @in N = 0 @out squared = 0
здесь:
-
@app
: Начало блока реактивного кода приложения; -
@in N = 0
: Объявление реактивной переменнойN
, которая будет хранить пользовательское значение; -
@out squared = 0
: Объявление реактивной переменнойsquared
, которая будет содержать квадрат числа. Эта переменная доступна только для чтения.
-
-
Реактивная логика:
@onchange N begin squared = N^2 end
здесь:
-
@onchange N
: Указывает, что при изменении значения переменной N выполняется следующий блок кода; -
squared = N^2
: Обновление значения переменнойsquared
(возводится в квадрат введенное число).
-
-
Определение пользовательского интерфейса:
function ui() [ cell([ p("Enter a number to calculate its square:") ]), cell([ textfield("N", :N) ]), cell([ bignumber("The square of the number is:", :squared) ]) ] end
здесь:
-
function ui()
: Определение функции, которая создает интерфейс приложения; -
cell([…])
: Упаковка элементов интерфейса в структурный блок:-
Первый блок
cell([])
: Отображение текст с инструкцией:"Enter a number to calculate its square"
; -
Второй блок
cell([])
: Поле ввода числа(textfield("N", :N))
;-
"N"
: Подпись поля ввода; -
:N:
Связь поля с переменнойN
;
-
-
Третий блок
cell([])
: Отображение результата (квадрата числа) с помощьюbignumber
;-
"The square of the number is:"
: Подпись; -
:squared:
Связь с переменнойsquared
.
-
-
-
-
Создание маршрута и закрытие модуля
@page("/", ui) end
здесь:
-
@page("/")
: Определяет маршрут для главной страницы приложения(/)
; -
ui
: Указывает, что содержимое страницы будет сгенерировано функциейui
; -
end
: Конец модуляApp
.
-
Далее сохраните файл приложения app.jl
с внесенными изменениями:
И запустите приложение командой:
engee.genie.start("/user/app.jl")
Это приложение позволяет возводить введенное число в квадрат, демонстрируя, как можно создавать собственные приложения прямо в рабочем пространстве Engee.
Если сессия Engee была завершена, а приложение осталось открытым, то система выдаст ошибку: