Подмодуль (ы) организации приложения 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
Причина этого поведения, кажется, заключается в том, что я переместил два файла:
- tute_stopwatch.html и
- 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 сообщает об ошибке. Так что да, я согласен, " сообщения не имеют смысла ", и они не правы; потому что код прекрасно работает с некоторыми уникальными значениями теста (см. ниже). Имхо, у редактора дротиков есть проблема. Если кто-то может подтвердить это, мы можем сообщить об ошибке.
Выход из этой проблемы был таков:
- Закройте редактор дротиков
- Удалить каталог build /
- Перезапустите редактор дротиков
- Запустите ваше приложение.
Для тестирования я внес изменения в бот-файлы "компонентов", чтобы гарантировать, что ничто из старой сборки не создает побочных эффектов (пример: определение пользовательского элемента).
- tut_stopwatch.html... Изменен цвет.
- tut_stopwatch.dart... Изменен приращение таймера.
ВОЛЯ! Встроенный компонент демонстрационного секундомера работает с " розовым " цветом и шагом " 3 секунды ".
Я хочу связать это с этим вопросом:
В проектах среднего и более крупного размера взаимосвязи и взаимодействия не ограничиваются только чистой командой. Я думаю, что некоторая видимость и лучший контроль над сборкой будут улучшением.
У меня есть ZIP-папка с папкой проекта для этого упражнения. Если кому-то нужна копия, я могу отправить ее по электронной почте. Синтаксически я не внес никаких изменений в демонстрационный код, кроме как для исправления ошибки ":host". Я только что переместил 2 файла в папку компонентов /.
алоха
Слишком долго для комментария, поэтому я публикую его как ответ:
Я прочитал ваш ответ, но это не имеет особого смысла.
Я работаю полный рабочий день с Дартом в течение нескольких месяцев (большую часть времени с Polymer), и я не видел ничего подобного.
Если DartEditor показывает странные сообщения об ошибках, вы можете выполнить "Reanalyze Sources" в контекстном меню каталога вашего приложения в DartEditor.
Если это не изменит ошибки, ошибки в вашем коде.
Я никогда раньше не видел, чтобы каталог сборки влиял на ошибки в вашем веб-каталоге.
Дарт очень простителен, поэтому неудивительно, что приложение запускается, когда DartEditor показывает ошибки / предупреждения / подсказки, потому что анализатор, работающий в DartEditor, не работает.