Подтвердить что ты не робот

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

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

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

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

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

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

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

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


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

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

4b9b3361

Ответ 1

Выполняется эта работа:

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

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

Ответ 2

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

Ответ 3

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