2016-04-03 2 views
1

Несколько вопросов о генерации кода с Дартом:Генерация классов во время выполнения/время компиляции с Дартом

  1. Может DART создать класс во время выполнения с Дартом для кода, выполняющегося на Dart VM?
  2. Есть ли какая-либо генерация кода, эквивалентная обработке аннотации Java в момент компиляции/предварительного запуска?

ответ

1

1) Dart VM и dart2js не поддерживают генерацию кода во время выполнения.
Одним из способов является создание кода в файл и загрузка его в новый изолятор (также может быть URI данных). Приложение может связываться с сгенерированным кодом, запущенным в другом изоляте, только путем передачи сообщений.

2) Это то, для чего предназначены transformers, но трансформаторы применяются только к dart2js (или пабе в течение времени разработки), но не для запуска кода на стороне сервера Dart VM.

https://github.com/dart-lang/build (в настоящее время только в предварительном просмотре разработчика) может использоваться для генерации кода для браузера и кода на стороне сервера. Это инструмент, который контролирует исходные файлы и обновляет сгенерированный код при изменении исходного файла.

+0

Я вижу. Я подумал о первом подходе. Есть ли у вас какое-либо понимание накладных расходов на изоляцию и сообщение? Я не мог найти много информации об эффективности изоляции, которая была актуальной – spierce7

+0

Я бы предположил, что она намного медленнее, чем передача значений в одном изоляте, но она по-прежнему остается только в памяти, поэтому намного быстрее, чем сетевой запрос , Для получения правильных результатов вам нужно будет сделать некоторые тесты для вашего конкретного случая использования. Я думаю, что это также сильно зависит от типов отправляемых вами ценностей (примитивных значений, карт или списков или экземпляров пользовательского класса или деревьев экземпляров пользовательского класса. –

0

Теперь я обнаружил, что команда дротика имеет библиотеку для генерации источников. Представляется целесообразным для генерации исходных данных для предварительной компиляции: https://pub.dartlang.org/packages/source_gen

Смежные вопросы