Протестируйте код 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.


person Hendrik Jan    schedule 17.09.2014    source источник
comment
Неважно, что вы используете на стороне сервера. Клиентское приложение Dart представляет собой просто статический контент для вашего серверного приложения и подключается к вашему серверу с помощью HTTP(S) или WebSocket.   -  person Günter Zöchbauer    schedule 17.09.2014
comment
Я, наверное, не понимаю, что вы говорите. Мое собственное решение не использует pub build или pub serve для включения тегов script, а использует файл dart.js, который обрабатывает это за меня. Смотрите мой собственный ответ о том, что я использую сейчас.   -  person Hendrik Jan    schedule 17.09.2014


Ответы (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.

person Hendrik Jan    schedule 17.09.2014
comment
Это правильный способ сделать это. файл dart.js содержит всю логику, необходимую для определения того, поддерживается ли виртуальная машина Dart браузером и будет ли использоваться соответствующая версия кода. - person Michael Fenwick; 17.09.2014

Вам не нужно ничего делать, пусть pub build/pub serve позаботится о том, как теги сценария будут включены в страницу входа.

Проблема в том, что вы не можете создать развертываемый код Dart. dart2dart является экспериментальным и еще не поддерживается (дополнительные сведения о dart2dart см. в разделе Запуск Dart WebApp на сервере Apache). Если вы используете pub serve, браузер с поддержкой Dart запускает код Dart, а браузер, не поддерживающий Dart, запускает код, созданный для JavaScript.

Dartium также предназначен только для разработки, поэтому нет браузера, который бы обрабатывал код Dart. Насколько я знаю, команда Dart пытается подготовить dart2dart, когда Chrome поддерживает Dart.

Но для разработки с использованием pub serve это нормально, и вам не нужно делать ничего особенного.

person Günter Zöchbauer    schedule 17.09.2014
comment
Спасибо. Я посмотрю на сборку паба и обслуживание паба. Приложение написано на PHP (Laravel), и я не знаю, как совместить это с процессом сборки. Должен был включить это в мой вопрос, теперь добавил его к моему вопросу. - person Hendrik Jan; 17.09.2014