dart:io и dart:html взаимоисключающие

Я столкнулся с ситуацией, аналогичной этой главе где я хотел бы иметь dart:io и dart:html в одном приложении. Я знаю, что dart:io — это серверная библиотека, а dart:html — клиентская. Моя ситуация следующая. У меня есть программа для вывода огромного количества текста в файл журнала. Я обнаружил, что Dart отлично справляется с манипулированием текстом. Я хотел взять текст файла журнала, манипулировать им, поместить некоторую информацию в текстовые поля с заголовками для удобства чтения и т. д. и просмотреть страницу.

У меня нет намерений размещать это в сети. Это только для моего рабочего компьютера. Мне просто нужны возможности загрузки файлов dart:io и красивое отображение dart:html. Предыдущий пост был в апреле, и разработка Dart идет быстро. Есть ли теперь другой способ делать то, что я хочу?

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


person Phlox Midas    schedule 15.11.2012    source источник
comment
Что вы имеете в виду, когда говорите о красивом отображении dart:html?   -  person Shannon -jj Behrens    schedule 15.11.2012
comment
TextAreas и TextFields, среди прочего.   -  person Phlox Midas    schedule 15.11.2012
comment
Я думаю, что есть разница между созданием строки для HTML-элемента и фактическим созданием этого элемента с использованием DOM. Это одна из причин, по которой, вероятно, не имеет смысла иметь dart:html на сервере; на сервере нет DOM. Конечно, может быть интересно использовать DOM на сервере для представления HTML-страницы, а затем сериализовать ее в HTML, но похоже, что это похоже на то, что делает html5lib (хотя я этим не пользовался).   -  person Shannon -jj Behrens    schedule 15.11.2012
comment
Меня просто беспокоит, что мне приходится работать со строками, а не с элементами. Я менее склонен делать ошибки при использовании объектов, например. myTextField.value = foo вместо ‹input type=text value=foo /›. У меня есть средство проверки типов, которое помогает при использовании объектов. С ним также легче работать и читать.   -  person Phlox Midas    schedule 15.11.2012
comment
Я слышу тебя. Вы пробовали использовать html5lib? Если да, то каков был ваш опыт?   -  person Shannon -jj Behrens    schedule 18.11.2012


Ответы (2)


Вы можете рассмотреть возможность использования этой библиотеки html5lib в приложениях на стороне сервера для создания вывода HTML. Тогда это просто вопрос открытия файла в браузере. Это также можно автоматизировать, вызвав запуск процесса, который запускает браузер и указывает на созданный вами HTML-файл.

Работа над html5lib все еще продолжается, но я уверен, что они хотели бы услышать ваши отзывы.

person John Evans    schedule 15.11.2012

Я согласен с тем, что если все, что вы хотите сделать, это создать статическую веб-страницу, то лучше всего использовать такую ​​библиотеку, как html5lib. Однако, если вам нравится делать что-то большее, я думаю, что лучше всего думать о дротике на стороне сервера как о модели, а о стороне клиента как об «остальном». Остальное зависит в основном от того, нравятся ли вам MVC, MVP,...

Я был близок к разработке настольного приложения в дартс, но до сих пор не нашел достаточно интересного примера, чтобы начать работу. Я думал о том, как бы я это сделал, и я считаю, что, соединив две стороны (модель и «остальные») с помощью веб-сокета, создав простой протокол сериализации (например, json), вы можете легко создать rpc с оболочкой на стороне клиента, использующей noSuchMethod() в качестве прокси, а на стороне сервера вы используете зеркала. Вы можете создавать обратные вызовы другим способом, если вам нравится использовать веб-сокет. Я полагаю, что Гилад упомянул аналогичную технику rpc между изолятами в своем докладе. из конференции разработчиков HTML5.

В любом случае, вы получите как dart:io, так и dart:html в одном и том же «приложении», но приложение будет состоять из серверной и клиентской сторон. Это то, что я попробую для своего следующего настольного приложения, каким бы оно ни было :)

person Tobias Ritzau    schedule 20.11.2012