Вопрос по project, dart – Как организовать смешанный HTTP-сервер + веб-клиент Dart Project файлы?

13

Я планирую создать чистое Dart-приложение, в котором HTTP-сервер и веб-клиент будут написаны на Dart. Исходя из Java и Eclipse, в конечном итоге я могу открыть всю иерархию проектов в Dart Editor и запустить сервер, который обслуживает клиентские файлы и отлаживать обе стороны приложения (на стороне сервера с DartVM и на стороне клиента с Dartium ).Я'

Я запустил Dart Editor, и после создания простого приложения командной строки в качестве основы для серверной части я запутался в макете проекта.

Файлы прямого кода на стороне сервера (класс boostrap веб-сервера, классы обработчиков и фильтров) определенно попадают в папку / папку проектов. Зависимости на стороне сервера входят в проект »Файл pubspec.yaml.

Проблема возникает, когда сервер должен получить доступ к файлам клиентского приложения (файлам .dart, статическому источнику страниц и т. Д.), Чтобы передать их в браузер. Самым простым решением было бы создать веб-папку внутри серверного проекта и поместить туда веб-файлы клиента, но таким образом (насколько я понял) зависимости на стороне сервера наследуются в клиенте, потому что мы все еще в той же области действия pubspec. Я неЯ не хочу этого.

Я думал о создании клиентской библиотеки в папке lib / проектов и помещал туда веб-файлы, но я неЯ не знаю, как правильно размещать там полное веб-приложение. Я предполагаю, что я должен поместить HTML и другие клиентские статические файлы в ресурс / подпапку библиотеки. Я'Я боюсь, что яТаким образом, я теряю помощь веб-приложения из среды IDE.

То, что я мог бы также сделать, это поместить клиента в отдельный проект, организовать его как проект веб-приложения Dart с ним ».s очень собственный pubspec.yaml и затем сделать это зависимостью серверного приложения. Я неНе знаю, сможет ли сервер получить доступ к веб-файлам в другом проекте для обслуживания. Вероятно, это лучший способ сделать это, потому что он обеспечивает чистое разделение файлов клиента и сервера.

Может ли кто-нибудь просветить меня, чтоправильный способ сделать это?

Еще несколько объяснений. Скажи яЯ использую отдельный проектный подход, как другие уже предложили в ответах, но я все еще люблю запускать сервер, который может обслуживать клиента на этапе разработки без каких-либо хитростей. Сервердолжен получить доступ к файлам клиента в другом проекте. Это неНеважно, является ли это Javascript или Dart, статические файлы там есть. И во время разработки я хочу обслуживать файлы dart, так как Dartium ускоряет разработку с его помощью ».Возможность прямого запуска дротиков.

С помощью Java и Maven я могу сделать клиентский пакет зависимым от времени выполнения сервером, и я могу просто обслуживать клиентские файлы из classpath. Поддерживает ли Dart доступ к зависимости от паба?Внутренние файлы схожим образом или единственный способ для этого - поместить все в папку активов клиента или взломать относительный путь?

Могу я спросить, почему ты ненравится иметь серверные зависимости в клиенте? В pubspec.yaml определяется только то, какие пакеты должны быть доступны в каталоге пакетов. Если вы неt импортировать что-либо в ваши клиенты Dart исходные файлы это AFAIK не имеет никакого эффекта. Мой второй вопрос: обычно один будет служитьbuild каталог вместоweb каталог. Есть ли причина для использования веб-каталога (помимо разработки)? Günter Zöchbauer
В область применения веб-приложения не имеет смысла включать зависимости только на стороне сервера (например, файловый ввод-вывод). Это'Это также ошибка, так как я могу случайно импортировать в исходный код клиента что-то, что кажется правильным, но не будет работать в среде браузера. Я думаю, что лучше сделать чистую изоляцию этих слоев. Вы'верно, я должен служить каталог сборки /. Но файлы там генерируются из сети / в любом случае, и это 'Он предназначен только для веб-приложений, поэтому проблема остается. NagyI

Ваш Ответ

3   ответа
2

подготовить приложение Dart для развертывания на стороне сервера

Чтобы улучшить опыт разработки, вы можете использовать символическую ссылку в качестве обходного пути, чтобы у вас были файлы клиента, доступные в каталоге пакета сервера.

Я предлагаю создать запрос функции наhttp://www.dartbug.com/new для лучшей поддержки.

Очень хорошая находка! Это именно то, что яЯ смотрю. Это дает понять, что тамНет стандартизированного способа сделать это прямо сейчас. NagyI
2



Ты выиграл'Необходимо сделать клиентский пакет зависимым от серверного пакета.

Серверу нужно только знать, где находится каталог с выводом сборки клиентского пакета.

Какие файлы для обслуживания обычно запрашивает клиент. Клиент запрашивает, например,index.html и все дальнейшие зависимости (.dart, .hmtl, .js, .img, .css, ...) жестко запрограммированы в этом файле, и поэтому серверу не нужно заранее знать какие-либо подробности.

Может быть, Грег Лоуответ на этот вопросЕсть ли препроцессор компилятора в Dart? предоставляет некоторую помощь для этого. Но я нене знаю, как использовать эту опцию при использованииpub build вместо .I 'dart2js Günter Zöchbauer
У меня есть проект игрушки, и яЯ действительно делаю это прямо сейчас. У меня есть приложение / и сервер / папка, и внутри есть два совершенно разных проекта. Тогда в коде сервера яя подаю ../app/web файлы. Это полностью исключает обработку зависимостей паба между сервером и клиентом. Это работает, но кажется ужасным. Во время сборки мне приходится вручную обрабатывать различия между средой разработки и производством. Паб очень мощный, поэтому мне интересно, сможет ли он справиться с такой ситуацией. NagyI
1

которые вы могли бы извлечь выгоду, если вы используете этот подход. Самые очевидныеНет связи между клиентом и сервером, вы получите очень четкое разделение. Другой заключается в том, что ваш сервер может развиваться независимо от клиента. Приложения Dart должны быть скомпилированы в javascript. В конце концов у вас будет приложение-сервер dart, которое будет обслуживать файлы javascript (+ возможно, файлы dart, если вы решите это сделать) Некоторые из пакетов, которые вы используете на стороне сервера, недоступны в dartium - вы неЯ не хочу иметь дело с этим беспорядком зависимости. Ваш сервер может состоять из более чем одного приложения, может быть, ваш сервер будет иметь модуль на Java или какой-либо другой язык. Хранение этих двух проектов по отдельности дает вам гораздо больше гибкости.

Как насчет 3 пакетов? то есть клиентское приложение, серверное приложение и пакет библиотеки для хранения кода, который совместно используется клиентским и серверным приложениями. Greg Lowe
я уверен, что яЯ пойду с отдельным макетом проекта, как вы можете прочитать его в комментариях ГюГюнтер»ответ. Моя проблема сейчас заключается в том, как получить доступ к клиентскому проекту ».s файлы из серверного проекта, чтобы я мог запустить весь проект из серверного проекта и иметь возможность отладить все? Тот'Единственная проблема с отдельным маршрутом проекта. Я'Мы расширили вопрос, чтобы отразить это. NagyI

Похожие вопросы