Angular.js Backbone.js и другие библиотечные js-библиотеки MV *?
Я новичок в веб-приложении и, более конкретно, в этом шаблоне MV*
. Мы создаем веб-приложение, и мы думаем о выходе из jQuery, но не полностью, но мы пытаемся реализовать язык на стороне клиента с поддержкой MVC, MVVM или MVP. В основном то, что отделяет представления от модели. Будучи новичком в этом шаблоне MV*
, я наткнулся на на этом сайте.
В основном это список (почти!) всех клиентских языков/фреймворков, которые поддерживают этот шаблон MV*
, и после посещения его я действительно смущен. Потому что согласно этому сайту..
В конце дня Ember.js является единственной структурой, которая имеет все, что я желаю. Недавно я портировал относительно небольшой Backbone.js приложение к Ember.js и, несмотря на небольшую производительность проблемы, я намного счастливее с полученной базой кода. бытие защищал Иегуда Кац, сообщество вокруг Ember.js также удивительно. Это определенно основа, на которую нужно следить.
Но на SO я нашел этот, и это заставляет меня думать, что angular намного лучше, а на SO снова, this, и this, что заставляет меня думать, что это может быть основой того, что я ищу.
Чтобы ухудшить ситуацию, тесты показывают совершенно другой результат.
Здесь
http://jsfiddle.net/HusVw/1/ Backbone clear winner
http://jsfiddle.net/ericf/NrpcQ/ Backbone winner again
http://jsperf.com/angular-vs-knockout-vs-extjs-vs-backbone/2 angular winner for less data for more its knockout
http://jsperf.com/knockout-js-vs-direct-dom-manipulation/3 Backbone again
http://jsperf.com/angular-vs-knockout-vs-ember/33 no way its ember as the site mentioned
Итак, в основном, это меня полностью сбивает с толку, я не могу решить, что в веб-названии я должен изучить, и что мне следует реализовать на сайте. Как в тестах Backbone
четко выделяется, но я много слышал о knockout
, но ссылки SO, о которых я говорил, говорят о angular
? Я знаю, что это может зависеть от приложения, которое я сейчас разрабатываю, но мне нужен более широкий взгляд, что было бы полезно не только для этого проекта, но и на более длительный срок? В таком случае вы предпочтете, какие рамки? Или я должен просто изучить их все? (Jk, не может действительно сделать это в правдоподобное время.)
Чтобы сделать все больше, я слышал о dart и wiki говорит..
Цель Dart - "в конечном счете заменить JavaScript как лингва франка веб-разработки на открытой веб-платформе".
Итак, если js будет заменен, почему хак я даже рассматриваю возможность изучения этих js-библиотек/фреймворков?
Итак, в основном, все это испортилось, и я совершенно смущен? Может ли кто-нибудь помочь мне решить?
Ответы
Ответ 1
Вероятно, нет объективного ответа, но здесь мои 2 цента:
Магистраль обычно приводит к значительно более коротким базам кода, которые сложнее поддерживать. Подобно анекдоту в ваших ссылках, я работал над одним проектом, где код сократился с 2500 строк с Backbone до 600 строк с помощью Angular. Вероятно, нокаут дал бы столь же маленькие (= хорошие) результаты. Мои коллеги отошли от Backbone to Knockout и были намного счастливее после этого.
Преимущество Backbone заключается в том, что он действительно легкий и дает больше возможностей для структурирования вещей. Это также означает, что вы можете выполнять большую настройку производительности, поэтому это может быть быстрее. Те же самые аспекты также являются его недостатком: вам нужно структурировать вещи самостоятельно, что означает: больше кода, более сложных и потенциально больше ошибок.
Что касается тестов, которые вы упомянули: они вряд ли объективны, поскольку они подчеркивают один очень конкретный вариант использования. Кроме того, они были опубликованы автором самой Backbone, поэтому, очевидно, они показывают, что Backbone в хорошем свете. Для обычных пользовательских интерфейсов производительность не должна быть проблемой независимо от того, какой из 3 (Backbone, Angular, Knockout) вы выберете. Одно предостережение для Angular: если вы хотите динамически отображать более 2000 элементов на своей странице, это может быть проблематично (см. Ответ создателя Angular здесь: Как данные обязательная работа в AngularJS?).
О Дарте: Его цель - быть языком, а не только структурой MV * в пределах языка. Это совершенно другой зверь, и если вам просто нужна структура MV *, Дарт будет излишним. Кроме того, Дарт все еще очень молод и не поддерживается в большинстве браузеров.
Ответ 2
Ну, во-первых, действительно нет никакого "хорошего" ответа на этот вопрос. Все библиотеки MVC хороши, если вы спросите их создателей: p
Тем не менее, я бы рекомендовал вам начать читать примеры в TODO-MVC, чтобы вы могли видеть, сколько кода требуется для простого TO-DO веб-приложение и насколько он сложный. Затем решите, с чем вы согласны.
Моя личная рекомендация - Магистраль. Кроме того, есть несколько дополнительных библиотек, которые будут делать (почти) магические вещи, например Backbone Nested.
Удачи!