AngularJS только для одностраничных приложений (SPA)?

179

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

Это Node.js проект. Наш первоначальный план состоял в том, чтобы использовать Express и спуститься по этому маршруту, но мы решили, что прежде чем мы начнем этот этап, лучше всего рассмотреть, что там есть. Наше приложение имеет несколько областей, которые, по нашему мнению, не подходят для одностраничной модели, поскольку они связаны с перспективой приложения, но не с одной точки зрения.

Мы видели некоторые из фреймворков, которые мы могли бы использовать для создания клиента, например Backbone.js, Meteor и т.д., а также AngularJS.

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


ОБНОВЛЕНИЕ 17 июля 2013 года Чтобы держать людей в курсе, я буду обновлять этот вопрос, когда мы пройдем этот процесс. На данный момент мы собираемся собрать все вместе, и мы увидим, насколько хорошо это работает. Мы обратились к нескольким людям, которые более компетентны с AngularJS, чем мы, и поставили вопрос о разделении более крупных приложений, которые используют контекст, но могут быть слишком большими, работая на одной странице.

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

ОБНОВЛЕНИЕ 18 июня 2016 г. Проект упал с обрыва, поэтому мы так и не смогли сделать слишком много. Недавно мы подняли его, но больше не используем angular и вместо этого используем React. Мы по-прежнему используем архитектуру, описанную в предыдущем обновлении, где мы используем приложения с явным и самосодержимым, поэтому, например, у нас есть маршрут /chat в экспресс, который обслуживает наше приложение для чата React, у нас есть еще один маршрут /projects, который подает заявку на проекты и так далее. То, как мы смотрим на это, - это каждое приложение - это совокупный корень с точки зрения его набора функций, он должен быть автономным, чтобы он считался приложением сам по себе. Технически, вся информация там, ее просто базовый экспресс и любой вкус клиентской поддержки приложений, которые вы хотите использовать.

  • 5
    Так как все прошло? Я пытаюсь выяснить, как переместить 50-страничное приложение ASP.NET в чистое приложение HTML + Javascript + REST, и я действительно не понимаю, как это будет работать в качестве SPA.
  • 1
    Мы должны были перейти на что-то еще. Из обсуждений, которые у нас были и будут снова, когда это начнется снова, является то, что SPA может быть очень сфокусированным винтиком в гораздо большей машине. Таким образом, переводя наш экземпляр на ваш (мы использовали чистый узел с экспрессом), если вы хотите остаться в семейном стеке (.Net), вы можете использовать MVC в качестве скаффолда и использовать угловые в представлениях, чтобы добавить динамический материал (каждую функцию). , если вы не можете сжать свое приложение, реализация 50 страниц логики на одной странице может затопить.
Показать ещё 8 комментариев

5 ответов

205
Лучший ответ

Совсем нет. Вы можете использовать Angular для создания различных приложений. Маршрутизация на стороне клиента - всего лишь небольшая часть.

У вас есть большой список функций, которые будут вам полезны за пределами маршрутизации на стороне клиента:

  • двусторонняя привязка
  • шаблонный
  • форматирование валюты
  • плюрализация
  • элементы управления многократным использованием
  • Управление RESTful api
  • Обработка AJAX
  • модульность
  • инъекция зависимостей

Сумасшедший думать, что все это "можно использовать только в одном приложении для одной страницы". Конечно, нет.. что, как сказать "JQuery только для проектов с анимацией".

Если это соответствует вашему проекту, используйте его.

  • 42
    Еще один момент, о котором следует упомянуть, заключается в том, что Angular даже не требуется использовать для полных страниц - его можно интегрировать в существующую систему для создания компонентов, то есть сложного виджета или плагина внутри унаследованного приложения.
  • 2
    @Blesh, спасибо за ответ, это имеет смысл, но мы пытаемся найти «как» мы используем его для создания многостраничных приложений, поэтому вопрос был опубликован, это действительно другой вопрос, так что ваш ответ был принято, но, например, можем ли мы использовать angular.js с express.js или что-то в этом роде - пустая трата времени и лишних сложностей.
Показать ещё 11 комментариев
16

Я боролся с "как" сначала с помощью Angular. Тогда однажды меня рассвело: "Это STILL javascript". Существует множество примеров на всех уровнях Angular (один из моих фаворитов вместе с книгой https://github.com/angular-app/angular-app). Самое важное, что нужно помнить, - загрузить файлы js так же, как в любом другом проекте. Все, что вам нужно сделать, это убедиться, что разные страницы ссылаются на правильный объект Angular (контроллер, просмотр и т.д.), И вы отключены и запущены. Надеюсь, это имеет смысл, но ответ был настолько прост, что я не обратил на это внимания.

7

Может быть, мой опыт будет полезен кому-то. Мы логически разделили наш проект. Один SPA, который мы используем для фида, еще один для работы с картой, другой для редактирования профиля пользователя и т.д. Например, у нас есть три приложения: фид, пользователь и карта. Я использую его в разделенных URL-адресах, например:

https://host/feed/#/top/
https://host/user/#/edit/1/
https://host/map/favorites/#/add/

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

В самом деле, вы можете очень легко создать сочетание приложений SPA, например, канал будет url с приложением angularjs, пользовательским приложением с реакцией и отобразит приложение backbone.js.

В ответ на ваш вопрос:

Angular не только для SPA, Angular играют хорошо и быстро для SPA-приложений, но никто не беспокоится о создании приложения MPA из множества SPA-приложений. Но, думая о вашей архитектуре url, не забывайте о доступности своих приложений для SEO.

Я также поддерживаю идею:

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

1

Если вам нужно всего несколько страниц с привязкой данных клиентов, я бы пошел с Knockout и Javascript Namespacing.

Нокаутом отлично, особенно если вам нужна несложная обратная совместимость и есть довольно прямые страницы вперед. Если вы используете сторонние компоненты, пользовательские привязки Knockout просты и удобны в работе.

Javascript namespacing позволяет вам сохранять свой код раздельным и управляемым.

var myCo = myCo || {};
myCo.page = {
    init: function(){ ... },
    ...
}

И в теге script после загрузки других скриптов

<script>
    myCo.init();
</script>

Ключ в том, что вы используете любой инструмент, который вам нужен, когда вам это нужно. Нужна привязка данных? Нокаут (или все, что вам нравится). Нужна маршрутизация? sammy.js(или что вам угодно).

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

0

Я бы сказал, что Angular переполнен, если вы просто хотите создать SPA. Конечно, если вам уже удобно развиваться, продолжайте. Но если вы новичок в этой области и только нужно разработать SPA, я бы пошел с чем-то более простым с рядом своих собственных привилегий. Я рекомендую посмотреть Vue.js или Aurelia.io.

Vue.js использует двустороннюю привязку данных, MVVM, многоразовые компоненты, простую и быструю запись, меньше кода для записи и т.д. Он сочетает в себе одни из лучших функций Angular и React.

Aurelia.io, честно говоря, я мало что знаю. Но я заглянул, и, похоже, альтернатива стоит посмотреть, как показано выше.

Ссылки:
https://vuejs.org/
http://aurelia.io/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню