AngularJS с экспресс-шаблонами или чистым HTML? За и против?

Express JS использует шаблоны для генерации HTML, а затем сервер отправляет их клиенту в ответ. Могут быть несколько других шаблонов, из которых может быть сгенерирован HTML. Я обнаружил:

В моем приложении мне нужно использовать как ExpressJS, так и AngularJs. Я новичок в обеих технологиях. Изучая angular, я должен был использовать его в чистом HTML. Изучив ExpressJs, я понял, что для использования angularjs мне нужно использовать их в любом из вышеперечисленных шаблонов, которые будут преобразованы в HTML при отправке клиенту.

Теперь я хочу использовать expressjs как мой сервер и angularjs как приложение для клиентской стороны. Для этого, я думаю, у меня есть два варианта.

Вариант 1

Я могу полностью отказаться от использования шаблонов и использовать наш сервер NodeJS для ответа, отправив простые HTML файлы. Затем эти HTML файлы содержат кодировку AngularJS. AngularJS тогда, на стороне клиента, будет действовать как наше приложение. Он потребует от HTML других документов HTML. Или он также может использоваться как AJAX, где мы можем запросить только часть информации, чтобы обновить только часть страницы, а затем обновить всю страницу для незначительных изменений.

Вариант 2

Я могу использовать angularjs внутри шаблонов expressjs (jade или ejs).

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

Ответ 1

Это очень важный вопрос, и администраторы Qaru ненавидят все, что может показаться мнением, но, тем не менее, мой опыт и мнение.

Теперь я сделал несколько приложений, используя исключительно статические файлы (HTML, CSS и JavaScript), с теми, кто вызывает службу на внутреннем сервере для доставки данных. Это уменьшает объем исходного кода, независимо от того, что он (я использовал как Java, так и Node.js), чтобы просто быть набором URL-адресов служб, но он работает очень хорошо.

  • У вас есть фантастическая жесткая линия между обязанностями две системы
  • Очень легко работать и тестировать каждый самостоятельно
  • Ошибки обычно очень четко видны в интерфейсе или в фоновом режиме (все вам нужно посмотреть, какие данные переданы, чтобы знать).
  • Внутренние службы готовы к повторному использованию для поддержки альтернативных пользовательских интерфейсов командной строки или что-то мобильное, если вы хотите
  • Вы можете использовать одну технологию для начала работы (например, Node.js или Ruby on Rails), а затем переключиться на что-то еще позже, если вам нужно. Пока API остается прежним, интерфейс не знает.

Ответ 2

Я лично использую AngularJS с Express/Jade. Настройка на самом деле довольно проста, и я нахожу, что писать Jade гораздо приятнее, чем писать HTML. Я также начал писать свой код Angular в CoffeeScript, так как он снова ускоряет разработку. Если вы хотите сохранить нажатия клавиш, Jade - отличное решение, и его интеграция с Express делает его неинтересным. Если вы не беспокоитесь о том, чтобы быстрее генерировать код, тогда нет никаких проблем с использованием HTML.

Я укажу, что одним из самых больших преимуществ, которые я нашел для использования Jade над HTML, является возможность разработки одной страницы в нескольких файлах, а затем используйте include, чтобы они были согласованы перед компиляцией в HTML. Это позволяет брать более крупные страницы и разбивать их на более управляемые куски. Вместе с шаблоном Angular это может облегчить много разочарований.

На самом деле все это вопрос мнения, но, поскольку я решил дать Джейд выстрел, я не пожалел об этом, и я никогда не сталкивался с ситуацией, когда мой HTML был неправильно отображен при использовании Angular.

Ответ 3

Я пошел с вариантом 1, потому что я не хотел иметь дело с какими-либо потенциальными проблемами, когда jade или ejs неправильно конвертировали шаблон и вмешивались в Angular. Мое приложение, по сути, имеет страницу индекса (которая на самом деле является только основным шаблоном страницы с моими css и js), вышла из Express как jade, а затем angular забирает ее, а все мои шаблоны angular находятся в отдельном месте чем мой нефритовый шаблон.