Угловатый.js и ASP.NET MVC 4 [закрыто]


У меня есть ASP.NET проект MVC 4, и я застрял на архитектурном решении о том, какую структуру JavaScript или библиотеку использовать Angular.js или стук.js. В настоящее время я склоняюсь к использованию углового.js над нокаутом.js, но не хочу, чтобы узнать на полпути во время разработки проекта я сделал ошибку.

вот некоторые справочная информация:

  • нам нужна двусторонняя привязка данных модели
  • нам нужна возможность проверить вид. Я хочу иметь возможность делать сквозной блок тестирование. Кроме того, мы используем непрерывную интеграцию.
  • функция"сохранить изменения". т. е. если пользователь вносит изменения на странице, нам нужна возможность обнаружить любые изменения и предложить пользователю сохранить их изменения, прежде чем они перейдут от страницы
  • "уведомления" функциональность. т. е. пользователь будет входить в систему около 8 часов и должен будет получать уведомления и обновляться об изменениях, внесенных другими пользователями (ошибки, изменения статуса данных и т. п.)
  • нам нужна к "будущему доказательству" наше приложение. В настоящее время бизнес-подразделение не решило, нужно ли нам поддерживать мобильные устройства, но я знаю, что это всего лишь вопрос времени.
  • наша команда состоит из разработчиков с различным уровнем опыта от очень младших до старших разработчиков.
  • В настоящее время наши модели сложны и могут получить еще больше
  • мы также должны рассмотреть RAD, повторное использование кода и ремонтопригодность

Я прочитал отличный ответ здесь и смотрел интервью Скотта Аллена об угловом здесь

Так как мы не можем изменить наш текущий ASP.NET архитектура MVC 4 для использования чего-то на стороне сервера, например Web API, у меня есть некоторые проблемы при попытке реализовать Angular.js с MVC 4. Это приведет к тому, что у нас будет две модели: одна на сервере и одна на клиенте?

Я не ищу "что лучше" обсуждение углового и нокаута, потому что я думаю, что у них обоих есть свои плюсы и минусы. Я ищу фактический код для реализации JavaScript-фреймворка или библиотеки в ASP.NET приложение MVC 4. Мне нужно решение, что я могу жить с 2+ лет :)

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

3 73

3 ответа:

мои 2 цента.

преамбула - я работал как с угловым, так и с нокаутом. Я нахожусь на своем 3 - м нетривиальном переднем конце, построенном с помощью MVVM / MVC lib.

Я начал с нокаута, потому что его MVVM очень похож на механику wpf/silverlight. И это хорошо работает. Учебники и документация на высшем уровне. Все ваши кодеры смогут работать с нокаутом.js в течение нескольких дней или если они использовали mvvm под .net, то в течение нескольких часов.

, эти дни я использую angular и, вероятно, буду придерживаться его по следующим причинам.
  • угловой-это полная структура-нокаут действительно только о 2 способ связывания. вам еще нужны другие библиотеки, такие как позвоночник.js/jquery чтобы сделать остальную часть вашей работы.

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

  • угловое лечит нормальные переменные JS как наблюдаемые в пределах его $ scope объект. это означает, что вы не должны объявлять их особым образом

Я не угловой фанат, я все еще думаю, что они могли бы больше перейти к архитектуре MVVM вместо "фанковой" гибридной архитектуры MVVM/MVC, которую они в настоящее время имеют.

самая большая проблема с angular-это документация. По сравнению с нокаутом, это печально. Это добавит дополнительное время и затраты на получение ваших кодеров до скорость. Как только они там, однако, это в настоящее время лучший выбор ИМХО.

рад видеть, что эти вопросы представляли интерес для сообщества ;) просто для полноты вот что я в итоге сделал:

Я пошел с AngularJS и ASP.NET MVC 4 и был рад, что я это сделал. Хотя, угловой имеет крутую кривую обучения, но его стоит из-за силы директив.

  • нам нужна двусторонняя привязка данных модели-в некоторых случаях мне нужно было установить некоторые начальные значения, поступающие от контроллера MVC. Я использовал атрибут ng-init для выполнения этот.
  • нам нужна возможность проверить представления - я следил за AngularJS docs тестирование
  • функция"сохранить изменения" - я реализовал это с помощью директивы в Angular
  • функциональность"уведомления" - я реализовал это с помощью toastr.js и и директивы (schweet)
  • нам нужно "будущее доказательство" нашего приложения - я не знаю планов Google для AngularJS, но после работы с AngularJS я не вижу, что это происходит в любом месте в любое время вскоре и ожидалось, что он станет более широко принят :)

У меня нет большого вклада в AngularJs, но я хочу предоставить некоторые мысли о нокауте.

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

вы не упомянули, реализуете ли вы spa-подобную функциональность (т. е. навигацию по хэш-тегам) или вы в первую очередь с использованием MVC на стороне сервера (например бритвы). Если вы просто ищете быструю привязку данных на уровне каждой страницы, я бы даже пересмотрел это. Для меня оба они (angular или knockout) предназначены для улучшения опыта разработки на стороне клиента-не столько серверный подход, такой как MVC.

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

Что касается мощности и надежности привязки данных, я верю в нокаут. Я использую его широко, и очень полюбил его. Если вам нравится ощущение нокаута, вы можете посмотреть в Дюрандаль. Durandal-это достойный фреймворк, способный удовлетворить потребности многих " спа " веб-проектов. Это клиентская платформа, построенная поверх нескольких проверенных библиотек, включая Knockout. Это немного (много) более легкий, чем угловой, и, возможно, легче пользователь.

мы строим довольно большой ASP.Net веб-сайт MVC использует Durandal с нокаутом в сочетании с дополнительным фасадом, чтобы затянуть вещи с точки зрения разработки и интеграции с ASP.Net MVC является прямым вперед. Я не рекомендую пытаться использовать серверные нокаутирующие вещи, которые там есть; я просто нахожу, что это ограничивает реальную мощность шаблона MVVM.