menu
Меню
Drakon.Tech logo
Drakon.Tech
Начать работу
Документация по Drakon.TechПрограммирование на языке ДРАКОНОсновы программирования в Drakon.TechПродвинутые темы программированияasync/awaitАвтоматное программированиеМодули и зависимостиСовместная работаРабота с системами контроля версийПримеры игрThe source codeLegacy tutorials (JavaScript 0.2)

Модули и зависимости

Ru | En

Исходный код: Modules

Модуль в Drakon.Tech может вызывать функции из других модулей и библиотек. Внешний объект, который модуль может использовать, называется зависимостью.

Как добавить зависимости в модуль

  1. Щёлкните правой кнопкой мыши на модуле и выберите "Свойства".
  2. Щёлкните на кнопке "Зависимости".
  3. Введите зависимости, на каждой строке по одной. Каждая зависимость превратится в глобальный объект, видимый во всех функциях модуля.

Пример: создадим три модуля, mod1, mod2, и mod3.

  • mod1 будет зависеть от модулей mod2 и mod3.
  • mod3 будет зависеть от mod1 (да, циклические зависимости — это нормально).

В зависимостях модуля mod1, мы пишем:

foo
bar

В зависимостях модуля mod3, мы пишем:

moo

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

Модуль mod1 знает только то, что есть два глобальных объекта, foo и bar.

Вот так мы использвуем зависимости внутри модуля mod1:

foo.someFunctionFromMod2();
bar.someFunctionFromMod3();
 

Как привязать зависимости к модулям

  1. Создайте приложение.
  2. Перейдите на вкладку "Модули" и добавьте все необходимые модули. Имейте в виду, что разные приложения могут повторно использовать один модуль.
  3. Назначьте зависимостям модули.
  4. Выберите стартовый модуль. В стартовом модуле должна быть экспортированная функция с именем main.

Данное приложение сгенерирует примерно такой код:

var instanceOfMod1 = mod1(); // Создаём экземпляр mod1
var instanceOfMod2 = mod2(); // Создаём экземпляр mod2
var instanceOfMod3 = mod3(); // Создаём экземпляр mod3
instanceOfMod1.foo = instanceOfMod2; // Связываем зависимость foo с mod2
instanceOfMod1.bar = instanceOfMod3; // Связываем зависимость bar с mod3
instanceOfMod3.moo = instanceOfMod1; // Связываем зависимость moo с mod1
instanceOfMod1.main(); // Запускаем приложение. Функция main() должна быть определана в mod1.
// В функции main() должен быть установлен флаг "export".
 

Назначение приложений — генерировать такой связующий код. Это инструмент внедрения зависимостей (dependency injection).

Приложения позволяют запускать модули прямо в браузере и наслаждаться всеми благами отладки в Инструментах разработчика.

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

Другая возможность — добавить ссылку на JavaScript-файл непосредственно в HTML во время разработки и отладки.

Как использовать зависимости в приложениях на NodeJS

Так как модуль не знает, на что указывают его зависимости, мы можем соединить зависимости с чем угодно. Например, мы можем связать зависимости с модулями npm или другими модулями, которые были созданы вне Drakon.Tech.

В этом примере модуль helloexpress использует фреймворк Express.

В нашем приложении NodeJS:

const express = require('express');
const app = express();
 
const helloexpress = require('./helloexpress'); // Включаем helloexpress
const hello = helloexpress(); // Создаём экземпляр модуля helloexpress
hello.app = app; // Чтобы это работало, в модуле helloexpress должна быть зависимость "app".
hello.startServer(); // Предполагается, что в helloexpress есть экспортированная функция startServer()
 

Внутри helloexpress теперь есть глобальный объект app, указывающий на Express.

Исходный код: Modules
close
Закрыть
Drakon.Tech logo
Drakon.Tech - начало
Программирование на языке ДРАКОНОсновы программирования в Drakon.TechПродвинутые темы программированияThe source codeLegacy tutorials (JavaScript 0.2)