Как создавать формы в дартс?


person Gero    schedule 13.05.2013    source источник
comment
Вы имеете в виду, как обрабатывать их на стороне сервера?   -  person Zdeslav Vojkovic    schedule 13.05.2013
comment
@ZdeslavVojkovic смотрите мой отредактированный вопрос. Я заинтересован в создании формы, а также в обработке данных на стороне сервера.   -  person Gero    schedule 13.05.2013


Ответы (3)


Вот высокоуровневый ответ на ваш вопрос.

Для обработки данных на стороне сервера вы можете использовать класс HttpServer для запуска веб-сервера. См. эту статью.

Чтобы хранить данные в плоском файле, вам нужно использовать пакет dart:io, чтобы открыть файл и записать в него. См. документацию для File.openWrite().

Для хранения данных в базе данных в pub доступны пакеты для mysql и postgresql.

Существует два разных способа реализации клиентской части. Традиционным способом является использование шаблона для создания HTML с данными в элементах ввода в теге формы, а затем обработайте отправку формы на своем веб-сервере.

Современный способ, на котором сосредоточено сообщество Dart, заключается в написании одностраничного приложения, которое использует HttpRequest для чтения данных и отправки данных на сервер (обычно с использованием json).

person Greg Lowe    schedule 14.05.2013
comment
Вот в чем вопрос. Просто используйте простые html-формы и получите значения на стороне сервера или отправьте форму с ее значениями обратно на сервер в виде json. - person Gero; 15.05.2013
comment
Лучший способ зависит от вашего конкретного варианта использования и личных предпочтений. Я бы, вероятно, выбрал маршрут json/httprequest просто потому, что это то, что делает большинство других людей в сообществе. Более проторенный путь часто бывает проще. Это также быстрее — нет обновления страницы, и вам не нужно выполнять Post-redirect-get, что приводит к дополнительному круговому обходу или двум. - person Greg Lowe; 15.05.2013
comment
Я ненавижу 7 разных дорог в Рим. Я могу представить, что многим разработчикам нужны какие-то быстро разработанные простые формы для ввода данных пользователем, и у них возникнет тот же вопрос. - person Gero; 16.05.2013
comment
Дарт на стороне сервера не имеет такого большого набора зрелых библиотек, как node.js. Пока еще рано, и команда Google в настоящее время сосредоточена на стороне клиента. Если вы хотите создать код на стороне сервера в dart, вам придется провести некоторое исследование и попробовать что-то. Если вы найдете хорошее решение, опубликуйте его здесь ;) - person Greg Lowe; 17.05.2013

На стороне клиента вы можете получать данные с сервера (например, в формате JSON) и использовать их для создания формы. Кажется, это хорошо подходит для веб-компонента, поскольку элементы могут добавляться динамически на основе полученных данных.

Компонент будет привязан к модели, поэтому вы сможете сериализовать объект модели в JSON. при отправке и отправьте его на сервер при отправке или просто отправьте в виде стандартной HTML-формы.

С серверной частью история менее ясна, насколько мне известно, не существует качественных веб-серверных библиотек промышленного качества, но вы можете взглянуть на DartExpress в качестве примера или Stream и другие, более-менее полный. В любом случае вам придется извлечь полезную нагрузку POST из HttpRequest (если она отправлена как JSON) или используйте данные формы, которые также доступны через queryParameters — обратите внимание, что это класс Dart:io.HttpRequest, а не Dart:html.HttpRequest, и он доступен только на стороне сервера.

Упомянутые серверные фреймворки немного упрощают эту часть.

person Zdeslav Vojkovic    schedule 13.05.2013
comment
В моем случае форма всегда была бы одинаковой. Мне нравится идея сериализации. ИМХО Dart нужна одна хорошая библиотека веб-сервера! - person Gero; 14.05.2013
comment
конечно, на данный момент история на стороне сервера сильно отстает от Node. Форма WRT, если она всегда будет одна и та же, я бы, скорее всего, просто написал ее прямо в основном HTML, а не использовал компоненты, но это зависит от сложности. - person Zdeslav Vojkovic; 14.05.2013

Использование веб-интерфейса было бы хорошим выбором. Приложение todomvc прекрасно иллюстрирует, как динамически перехватывать ввод пользователя. Обработка на стороне сервера широко открыта для выбора. У Dart есть возможности на стороне сервера, и вы можете использовать некоторые из существующих библиотек для достижения желаемого.

Другой способ, которым вы можете обрабатывать информацию на стороне сервера, — это напрямую общаться с БД с помощью веб-службы на основе REST, такой как CouchDB. Cloudant предлагает такую ​​услугу и позволяет вам напрямую взаимодействовать с БД от клиента, при условии, что вы можете преодолеть политику того же происхождения. Есть 2 способа сделать это. Включите CORS в экземпляре CouchDB или разместите приложение на сервере с БД, что также возможно с CouchDB.

Серверная часть Dart также поддерживает веб-сокеты, поэтому вы можете легко доставлять предоставленные пользователем данные на сервер с помощью веб-сокетов, а затем выполнять любую обработку на стороне сервера.

Еще один вариант, который я могу придумать, - это обработка и сохранение информации в локальном браузере. Вы можете получить доступ к локальной базе данных или локальной файловой системе браузера из клиента Dart и сохранить все локально. Для статистики вы можете попросить клиента обновить веб-службу по вашему выбору.

person Allan    schedule 13.05.2013