Проверьте код Dart и dart2js на одной странице
Я пытаюсь везти на Дарт. У меня есть приложение, которое загружает файл Dart и сгенерированный Javascript:
<script type="application/dart" src="/bones/build/web/quiz/quiz1.dart">
</script>
<script src="/bones/build/web/quiz/quiz1.dart.js">
</script>
Когда я открываю эту страницу в Dartium, запускаются и Javascript, и код Dart (мне нужен только один).
Как мне запустить только файл Dart, а не Javascript при открытии в Dartium, и запустить Javascript при открытии в Firefox или Chromium?
Должен ли я создать две страницы, одну для Dart и одну для Javascript? Это означает, что мне придется редактировать два файла, когда я хочу что-то изменить. Мне нехорошо.
С уважением, Хендрик Ян
---- РЕДАКТИРОВАТЬ ----
Теперь я понимаю, что может быть важно, чтобы это приложение было написано на PHP с использованием фреймворка Laravel.
2 ответа
Я нашел следующее решение, которое работает для меня. Вместо ссылки на сгенерированный файл Javascript (как я сделал в своем вопросе), я ссылаюсь на dart.js
который загрузит сгенерированный Javascript в случае, если Dart не поддерживается в браузере, например так:
<script type="application/dart" src="/bones/build/web/quiz/quiz1.dart">
</script>
<script src="/bones/build/web/packages/browser/dart.js">
</script>
Это позволяет мне увидеть результат моей работы в Dartium, а также в Firefox и Chromium.
Вам не нужно ничего делать, пусть pub build
/pub serve
обработать, как теги сценария включены на страницу входа.
Проблема в том, что вы не можете создать развертываемый код Dart. dart2dart
является экспериментальным и еще не поддерживается (см. Запуск Dart WebApp на Apache Server для получения дополнительной информации о dart2dart
). Если вы используете pub serve
Браузер с поддержкой Dart запускает код Dart, а браузер, который не поддерживает Dart, запускает код, созданный для JavaScript.
Dartium также только для разработки, и поэтому нет браузера, который обрабатывает код Dart. Насколько я знаю, команда Dart пытается подготовить dart2dart, когда Chrome поддерживает Dart.
Но для разработки использую pub serve
это просто прекрасно, и вам не нужно делать ничего особенного.