(Оригинальная дата публикации: 12.04.2013) Выбор фреймворка JavaScript MVC — тяжелая работа.
Необходимо учитывать множество факторов, и количество вариантов может быть огромным.
Просто посмотрите проект ТоДоMVC (о нем на русском языке) .
Я работал с 4 фреймворками: Angular, Backbone, CanJS и Ember. Поэтому я решил провести сравнение, чтобы помочь вам решить, какой из них использовать.
Я выделю несколько факторов, которые вы можете использовать, чтобы сделать свой выбор.
Каждый фактор будет иметь оценку от 1 до 5 (чем больше, тем лучше).
Я старался быть беспристрастным, но, конечно, оценки основаны на личном опыте.
Функции
Есть действительно важные особенности фреймворков, которые обеспечивают основу для приложений.
Выполняет ли он привязку просмотра? Двунаправленная привязка? Фильтры? Имеет вычисленные свойства? Грязная атрибутика? Проверка формы? (И т. д.) Это может быть очень длинный список.
Ниже приведено сравнение того, что я считаю действительно важными функциями MVC: Функции Угловой Магистраль CanJS Эмбер Наблюдаемые й й й й Маршрутизация й й й й Посмотреть привязки й - й й Двунаправленная привязка (Двусторонние крепления) й - - й Частичные просмотры й - й й Список выбранного просмотра (Просмотры отфильтрованного списка) й - й й *) Наблюдаемые : объекты, изменения которых отслеживаются.
*) Маршрутизация : привязка URL-адреса меняется при изменении отслеживаемых объектов.
*) Посмотреть привязки : использовать виды, которые автоматически изменяются при изменении наблюдаемого объекта.
*) Двусторонние крепления : наличие автоматического изменения представлений, например, в полях ввода.
*) Частичные просмотры : Представления (визуализации шаблонов), включающие другие представления.
*) Представления отфильтрованных списков : отображение просмотров на основе определенных условий.
Итак, мои оценки реализации суммы функций: Рейтинги Угловой Магистраль CanJS Эмбер Функции 5 2 4 5 Важно отметить, что Backbone может выполнять большую часть этих функций вручную или с помощью плагинов.
Но я учел основные доступные функции.
Гибкость
Существуют сотни замечательных плагинов и библиотек, которые выполняют специализированные функции.
Как правило, они делают это лучше, чем инструменты из стандартного набора поставки.
Важно иметь возможность интегрировать их с выбранной платформой MVC. Магистраль — максимально гибкая структура, с минимумом соглашений и рамок.
При использовании Backbone вам придется принимать множество решений самостоятельно.
CanJS Почти такой же гибкий, как Backbone, поскольку позволяет легко интегрировать другие библиотеки с минимальными усилиями.
Если хотите, вы даже можете использовать другой механизм рендеринга.
Я без проблем использовал Rivets в CanJS. Хотя, я рекомендую использовать стандартные инструменты фреймворка.
Эмбер И Угловой все еще несколько гибок, но вы обнаружите, что иногда вам приходится бороться с инфраструктурой, если вам не нравятся некоторые ее функции.
Есть некоторые вещи, которые вам просто нужно принять, работая с ними.
Рейтинги
Угловой
Магистраль
CanJS
Эмбер
Гибкость
3
5
4
3
Порог входа и документация
Угловой Поначалу это быстро создает вау-эффект. Он легко позволяет выполнять сложные задачи, например двунаправленную синхронизацию.
Но после того, как вы изучили основы, порог обучения становится выше: открывается сложная структура с большим количеством функций.
Чтение документации затруднено из-за специфического жаргона и небольшого количества примеров.
Магистраль - Довольно легко учиться.
Но вскоре вы обнаружите, что вам не хватает понимания того, как лучше всего структурировать свой код. Вам нужно будет посмотреть или прочитать несколько учебников, чтобы ознакомиться с лучшими практиками.
Вы обнаружите, что вам, вероятно, также потребуется изучить библиотеку плагинов, например Marionette или Thorax. Поэтому я не думаю, что Backbone легче изучить, чем CanJS. CanJS – самый простой из этой группы с точки зрения обучаемости.
Только что из canjs.us вы будете знать почти все, что вам нужно для продуктивной работы.
Есть, конечно, и другие способы обучения, но у меня возникла редкая необходимость обратиться за помощью.
Эмбер также имеет высокий порог обучения, как и Angular. Я считаю, что учиться легче, но вначале требуется много вложений, чтобы научиться делать базовые вещи.
Эмбер не хватает раннего вау-фактора.
Рейтинги
Угловой
Магистраль
CanJS
Эмбер
Порог входа и документация
2
4
5
3
Производительность разработки
После достаточного изучения фреймворка серьезное значение начинает иметь продуктивность работы с ним — его внутренние договоренности, магия, доступная скорость действий.
Угловой - если вы его хорошо знаете, нет сомнений, что вы сможете с ним очень продуктивно работать.
Но я думаю, что Ember пошла дальше в этом плане.
Магистраль требует написания очень большого количества стандартного кода.
Что, казалось бы, совершенно не нужно и оказывается прямой угрозой производительности труда.
CanJS — не блестит и не разочаровывает. Но благодаря низкому порогу входа получить результаты можно очень рано.
Эмбер , действительно здорово в этом отношении.
Потому что это список соглашений, которые многое делают автоматически.
Вам просто нужно изучить и применять соглашения, и Ember будет работать правильно.
Рейтинги
Угловой
Магистраль
CanJS
Эмбер
Производительность разработки
4
2
4
5
Сообщество
Легко ли найти помощь, документацию и экспертов? Магистраль .
Сообщество огромно.
Очень активен в StackOverflow и IRC. Десятки учебников и пособий.
Угловой , Эмбер .
Довольно крупные сообщества, также активные в StackOverflow и IRC, но меньшего размера.
CanJS .
Сообщество небольшое по сравнению с другими, но, к счастью, оно довольно активное и полезное.
Я не нашел причин считать меньший размер сообщества CanJS недостатком.
Рейтинги
Угловой
Магистраль
CanJS
Эмбер
Сообщество
4
5
3
4
Инфраструктура (экосистема)
Что такое инфраструктура (или экосистема) плагинов или библиотек? И здесь Backbone дает всем фору — для него есть куча плагинов.
Экосистема Angular начинает интересоваться такими вещами, как Angular UI. Я думаю, что экосистема Ember развивается меньше, хотя должна быть лучше в силу своей популярности.
CanJS имеет менее развитую инфраструктуру, чем другие.
Рейтинги
Угловой
Магистраль
CanJS
Эмбер
Инфраструктура
4
5
2
4
Размер
Это может быть важным фактором для мобильной разработки.
Угловой Магистраль CanJS Эмбер Размер 80 тыс.
18К 33 тыс.
141 тыс.
Магистраль является самой маленькой и часто упоминается.
Но это еще не все.
Угловой Магистраль CanJS Эмбер Зависимости Единственная библиотека, которая не требует зависимостей Требуется как минимум Underscore и Zepto. В Underscore есть небольшой шаблонизатор, но вам понадобится более лучший, например Mustache. Вместе - 61К Требуется как минимум Zepto - 57К.
требуется jQuery и Handlebars. У нас есть 269 тыс.
Рейтинги
Угловой
Магистраль
CanJS
Эмбер
Размер
4
5
5
2
Производительность
Я не думаю, что производительность будет решающим фактором при выборе платформы, поскольку для большинства приложений все они достаточно производительны.
Но это, конечно, зависит от того, что вы делаете с фреймворком.
В играх больше внимания уделяется производительности.
Я сам видел и проводил множество тестов производительности с этими библиотеками ( один пример ).
Но я не совсем уверен в достоверности этих тестов.
Довольно сложно убедиться, что тест проверяет правильные вещи в правильном направлении.
Судя по тому, что я видел в тестах и читал, CanJS, похоже, имеет преимущество, особенно в привязке представлений к данным.
С другой стороны, я думаю, что Angular менее продуктивен на том основании, что он выполняет грязную проверку объектов.
Это может быть не так быстро, как другие.
Рейтинги
Угловой
Магистраль
CanJS
Эмбер
Производительность
3
4
5
4
Зрелость
Это зрелый фреймворк, зарекомендовал себя ли он в продакшене, сколько сайтов его используют? Магистраль есть много сайтов с его использованием.
Его кодовая база существует уже 2 года без серьезных изменений, что очень хорошо с точки зрения зрелости.
Эмбер - не слишком новый, но в процессе доработок существенно менялся, а последняя стабильность измеряется парой месяцев.
На этот раз я не считаю структуру зрелой.
Угловой кажется более стабильным и проверенным, чем Ember. Но не так сильно, как Backbone. CanJS - может показаться, что решение непроверенное, ведь сайтов с ним не так много.
Но это существует гораздо дольше.
Это «выдержка» из библиотеки JavaScriptMVC, существующей с 2008 года и имеющей большой опыт встроенного использования.
Рейтинги
Угловой
Магистраль
CanJS
Эмбер
Зрелость
4
5
4
3
Защита от утечек памяти
Это важный фактор для долго открытых одностраничных приложений.Вы не хотите, чтобы это стало проблемой.
К сожалению, это происходит легко, особенно при самостоятельном создании обработчиков событий DOM. Угловой , CanJS и Ember эффективно решают проблемы, как если бы вы использовали только лучшие практики.
Backbone требует, чтобы вы выполняли эту работу, своевременно удаляя обработчики.
Рейтинги
Угловой
Магистраль
CanJS
Эмбер
Защита от утечек памяти
5
3
5
5
Личные вкусы
Это, пожалуй, самый важный фактор при выборе фреймворка.Если хочешь.
декларативный HTML шаблонизатор строго придерживаться традиционного шаблона SmallTalk MVC жесткий каркас тогда они выбирают. Угловой Магистраль CanJS Эмбер Кроме того, сейчас популярны Ember и Angular. Невозможно судить о вкусах.
Окончательный подсчет
Теперь сложим все это в итоговую таблицу для расчета.Пожалуйста, помните, что это всего лишь мое мнение.
Пожалуйста, дайте мне знать, если вы считаете, что я неправильно составил таблицу веса.
Если вы придадите одинаковое значение каждому фактору в этой жесткой конкуренции, то почти ни один фреймворк не выиграет.
От переводчика: у автора есть встроенная прямо в текст расчетная таблица (типа Excel/Calc), в которой читатель может одним кликом отключить или изменить вес каждой строки.Теги: #angular #backbone #CanJS #ember #MVC #JavaScript #OOPУ нас есть.
мы можем посмотреть здесь на таблицу с равными коэффициентами и изменить.
на странице JsFiddle по ссылке .
Рейтинги Угловой Магистраль CanJS Эмбер Функции 5 2 4 5 Гибкость 3 5 4 3 Порог входа и документация 2 4 5 3 Производительность разработки 4 2 4 5 Сообщество 4 5 3 4 Экосистема 4 5 2 4 Размер 4 5 5 2 Производительность 3 4 5 4 Зрелость 4 5
-
Интрузивная Локализация
19 Oct, 24 -
Как Я Создал Лучшую Палитру Цветов
19 Oct, 24 -
Колдун Яндекс.такси В Результатах Поиска
19 Oct, 24 -
Комментировать Или Не Комментировать?
19 Oct, 24 -
Почему Мои Финансы Зависят От Билайн?
19 Oct, 24