Обслуживание веб-страницы с Redstone

Я занимаюсь разработкой веб-приложения с использованием Dart с использованием Redstone и полимера. Поскольку Dart обеспечивает разработку на стороне сервера и клиента, мне интересно, каков хороший шаблон для веб-приложения (особенно для Dart)?

Опция 1:

  1. Есть сервер, скажем, /bin/server.dart

    1.1. получить запрос и ответить с помощью JSON

    @app.Route("/user/:id", methods: const [app.GET])
    getUser(int id) { ... }
  1. есть клиент, то есть web/user.html и web / user.dart

    2.1 в user.dart сделать запрос к серверу

    2.2 получить JSON и сформировать правильный user.html

Вариант 2:

  1. Есть сервер / бин / сервер

    1.1 получить запрос и ответить HTML-страницей, аналогичной

    @app.Route("/")
    helloWorld() => "Hello, World!";

Если в первом случае я более или менее знаю (и понимаю), как заставить вещи работать, в то время как я нахожу действительно разочаровывающим, что я не использую преимущества совместного использования кода сервером-клиентом Дарт: мне нужно кодировать и декодировать обратно json чтобы получить те же данные. Есть ли способ избежать этого?

Второй вариант для меня гораздо менее понятен: как бы я обслуживал веб-страницу таким образом? Как бы я заставил Polymer выполнять свою работу?

Ответы на вопросы в тексте и общее объяснение дурного способа разработки веб-приложений очень приветствуются.

2 ответа

Решение

Вы можете увидеть пример приложения Redstone + Polymer здесь: https://github.com/luizmineo/io_2014_contacts_demo

В основном это работает как Option 1: Клиент и сервер обмениваются данными через сервисный API, а данные кодируются в формате JSON. Хотя Редстоун использует shelf_static пакет для обслуживания клиентского кода в браузере.

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

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

Я не думаю, что вариант 2 возможен. Полимер зависит от dart:html, который не разрешен на стороне сервера.

Другие вопросы по тегам