Подмодуль (ы) организации приложения Dart

Этот вопрос состоит из двух частей. Первое может быть обобщено Public Image Limited: " Это то, что вы хотите / это то, что вы получаете ".

Я оставлю вопрос простым, указывая на учебник:

Я " решил ", что хотел бы рассматривать различные элементы как активы проекта (так сказать). Поэтому я создал подпапку: named: components, которая находится под папкой $ / web /, в соответствии с:

Что-то вроде этого:

enchilada/
   :
  web/
    index.html
    main.dart
    style.css
    components/
        tut_stopwatch.html
        tut_stopwatch.dart

Когда я сделал это: редактор дротиков очень запутался. Итак, во-первых, мне нужно указать " что я хочу ", а затем описать " что я получаю " [получил]

Я хочу:

  • Дарт, чтобы позволить мне разместить подмодули в подчиненных папках.
  • В этом случае пользовательские элементы, такие как "tut_stopwatch", с соответствующими настройками для изменения пути (что я и сделал).
  • В идеале, я бы предпочел, чтобы Дарт мог интегрировать подчиненные модули на нескольких уровнях.
  • Вы можете рассмотреть пользовательский элемент пользовательского интерфейса, например " панель ", которая является " контейнером " для нескольких вложенных подкомпонентов.

Я получаю:

  • Множество ошибок компиляции. Эти ошибки цикличны: они "разрешаются", а затем "вновь появляются".
  • Я закрыл Dart Editor [1.2.0-release], Dart SDK [1.2.0] и перезапустил - проблема сохраняется.
  • " Ошибка " сосредоточена на полимере, а именно:
 Target of URI does not exist: 'package:../polymer/polymer.dart'
 Annotation can be only constant variable or constant constructor invocation
 Classes can only extend other classes
 Annotation can be only constant variable or constant constructor invocation
  • Я думаю, что не нахождение " полимера " является симптомом. Циклы редактора дротиков: find <-> not_find

Причина этого поведения, кажется, заключается в том, что я переместил два файла:

  1. tute_stopwatch.html и
  2. tute_stopwatch.dart...

В [sub-] компоненты / папку, как показано (выше). Ошибка связана с импортом полимера в файл:

  • components / tute_stopwatch.dart

Код следующим образом (ошибки сборки Dart в качестве комментариев):

import 'package:polymer/polymer.dart';

@CustomTag('tute-stopwatch')                  // <-- Target of URI does not exist: 'package:polymer/polymer.dart'
class TuteStopwatch extends PolymerElement {  // <-- Annotation can be only constant variable or constant constructor invocation
  @observable String counter='00:00';         // <-- Classes can only extend other classes
                                              //     Undefined class 'PolymerElement'
  TuteStopwatch.created() : super.created();

    :
} // TutStopwatch class

Следует отметить, что Dart Editor делает ссылку Windows Junction на пакеты / папку в каждой подпапке. Это будет символическая ссылка на Linux или Mac. Таким образом, путь к файлу пакетов должен функционировать нормально.

Я ищу стратегию, чтобы получить то, что я хочу? Иметь подпапки для разных модулей или " функций " с Dart и Dart Editor в разработке? Заранее спасибо... / ш


v02 ... Added code for import polymer error.
v01 ... Original query.

2 ответа

Я решил проблему, в которую верю. Я надеюсь, что люди, которые найдут лучший выход из такого рода тупика, также предложат лучшие альтернативы. Это " решение " (?) Весьма нестабильно, и хотя приложение работает правильно (как написано), у меня все еще есть ошибки на вкладке " Проблемы редактора дротиков ".

По крайней мере, я знаю, что это создает приложение, которое работает в соответствии с кодом, который я читаю. Я не думаю, что у меня есть синтаксическая ошибка со строкой:

import 'package:polymer/polymer.dart';

Демонстрационный код работает, и Dart Editor сообщает об ошибке. Так что да, я согласен, " сообщения не имеют смысла ", и они не правы; потому что код прекрасно работает с некоторыми уникальными значениями теста (см. ниже). Имхо, у редактора дротиков есть проблема. Если кто-то может подтвердить это, мы можем сообщить об ошибке.

Выход из этой проблемы был таков:

  1. Закройте редактор дротиков
  2. Удалить каталог build /
  3. Перезапустите редактор дротиков
  4. Запустите ваше приложение.

Для тестирования я внес изменения в бот-файлы "компонентов", чтобы гарантировать, что ничто из старой сборки не создает побочных эффектов (пример: определение пользовательского элемента).

  • tut_stopwatch.html... Изменен цвет.
  • tut_stopwatch.dart... Изменен приращение таймера.

ВОЛЯ! Встроенный компонент демонстрационного секундомера работает с " розовым " цветом и шагом " 3 секунды ".

Я хочу связать это с этим вопросом:

В проектах среднего и более крупного размера взаимосвязи и взаимодействия не ограничиваются только чистой командой. Я думаю, что некоторая видимость и лучший контроль над сборкой будут улучшением.

У меня есть ZIP-папка с папкой проекта для этого упражнения. Если кому-то нужна копия, я могу отправить ее по электронной почте. Синтаксически я не внес никаких изменений в демонстрационный код, кроме как для исправления ошибки ":host". Я только что переместил 2 файла в папку компонентов /.

алоха

Слишком долго для комментария, поэтому я публикую его как ответ:

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

Если DartEditor показывает странные сообщения об ошибках, вы можете выполнить "Reanalyze Sources" в контекстном меню каталога вашего приложения в DartEditor.
Если это не изменит ошибки, ошибки в вашем коде.

Я никогда раньше не видел, чтобы каталог сборки влиял на ошибки в вашем веб-каталоге.

Дарт очень простителен, поэтому неудивительно, что приложение запускается, когда DartEditor показывает ошибки / предупреждения / подсказки, потому что анализатор, работающий в DartEditor, не работает.

Другие вопросы по тегам