Где jQuery подходит для таких фреймворков, как JavaScriptMVC, BackboneJS, SproutCore и Knockout?

14

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

Тем не мение...

Следующая проблема, похоже, приходит в виде различных каркасов контроллеров: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (список можно продолжить ).

Кроме того, есть несколько отличных инструментов AMD Loader для использования, таких как RequireJS или LabJS и т. Д. Однако в jQuery теперь есть defineи встроенныеthen возможности.

Становится все труднее отслеживать все это ...

И теперь моя задача, похоже, состоит в том, чтобы оценить / принять решение о стратегическом направлении использования какой-либо формы клиентской части инфраструктуры MVC или MVVM ... но у меня так много вопросов.

  • Где JQuery подходит для различных платформ контроллеров, упомянутых выше?
  • Используется ли JQuery рядом с каждым или у некоторых из них есть своя собственная « версия в стиле JQuery »?
  • Есть инструменты , такие как RequireJS все еще необходимо , если вы реализуете одну из различных контроллеров-структур , упомянутых выше?
  • Есть ли в defineи thenзапеченной в возможности JQuery в настоящее время заменяет АМД Loader упоминался выше?
  • Какой из них кажется наиболее модульным? (см. примечания ниже)

ЗАМЕЧАНИЯ.
Одна вещь, которую я не хочу ни в какой будущей платформе, - это необходимость принимать огромное количество функций, которые я не использую. То есть я бы предпочел использовать действительно модульную структуру. Например, чтобы использовать пользовательский интерфейс jQuery, вам нужно использовать множество других базовых библиотек, которые вы на самом деле не используете.

Я буду экспериментировать с каждым, но некоторые РЕАЛЬНЫЕ отзывы будут отличными. Я видел несколько «похожих» вопросов, но ни один из них не ответил на этот вопрос.

Заранее спасибо!

Узник ноль
источник

Ответы:

11

jQuery кросс-браузерный инструмент нормализации. Это дает вам следующее

  • DOM утилиты
  • Система событий
  • Ajax
  • Анимации
  • ES5 утилиты
  • какая-то другая вещь

Backbone / knockout / yada / yada - это MVC-подобные библиотеки, которые помогут вам структурировать и писать модульные приложения. Они нужны только вам, если вы хотите их структуру.

RequireJS / yada / yada являются загрузчиками модулей. Вам нужна какая-то форма загрузчика модулей, если вы хотите написать модульное приложение.

Где JQuery подходит для различных платформ контроллеров, упомянутых выше?

Как уже упоминалось, jQuery нормализует работу браузеров. Контроллерные рамки не делают. Вам не нужен jQuery, но вам нужен способ нормализовать работу браузеров.

Используется ли JQuery рядом с каждым или у некоторых из них есть своя собственная «версия в стиле JQuery»?

Backbone / knockout / JavaScriptMVC не имеют встроенной нормализации браузера, поэтому вам нужен инструмент для этого. Я не уверен насчет SproutCore, там действительно много всего.

Нужны ли такие инструменты, как RequireJS, если вы реализуете одну из различных платформ контроллеров, упомянутых выше?

Они нужны только если вы пишете для написания модульных приложений. Так что в значительной степени да.

Существует три вида модульных приложений

  • async требуют загрузчиков, таких как requireJS
  • для синхронизации требуются такие загрузчики, как modul8
  • используя пространства имен и просто включая файлы
  • пакеты типа эндер

Заменяют ли функции определения и затем встроенные в JQuery теперь AMD Loader, упомянутый выше?

Нет. Возможность определения, встроенная в jQuery, позволяет вам использовать ее с загрузчиком AMD без использования jQuery. Вам все еще нужен загрузчик AMD. Возможность «then» - это просто сахар отложенных jQuery.

Какой из них кажется наиболее модульным? (см. примечания ниже)

Это самоуверенный вопрос. Мое личное мнение таково, что все эти фреймворки, включая jQuery, раздуты и не являются модульными.

Вы хотите модульный, напишите свою собственную библиотеку, напишите свою собственную архитектуру.

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

Raynos
источник
Спасибо Рейнос ... Я всегда могу рассчитывать на тебя за отличный ответ!
Заключенный НОЛЬ
@Marjan Я жду любых других, которые также могли бы представить любой вклад.
Заключенный НОЛЬ
@PrisonerZERO: никаких проблем с этим нет. Поскольку вы, казалось, были довольны ответом Рейноса, мой комментарий был на всякий случай, если вы не знали о принятии ответа (я не проверял ваш профиль, и ваш представитель предполагает, что вы здесь довольно новый пользователь)
Marjan Venema
2

Я отвечу на JavaScriptMVC, так как я помогаю:

Где JQuery подходит для различных платформ контроллеров, упомянутых выше?

JavaScriptMVC зависит от jQuery и широко его использует.

Используется ли JQuery рядом с каждым или у некоторых из них есть своя собственная «версия в стиле JQuery»?

JavaScriptMVC не имеет конкурирующей функциональности с jQuery. Это не так верно для Backbone, который имеет свою собственную систему событий. Но все, что добавляет позвоночник или позвоночник, очень минимально.

Нужны ли такие инструменты, как RequireJS, если вы реализуете одну из различных платформ контроллеров, упомянутых выше?

JavaScriptMVC поставляется с системой управления зависимостями -> Steal. Вы можете использовать JavaScriptMVC с RequireJS, но на самом деле кража гораздо мощнее и примерно одинакового размера, загружаемого пользователем.

Какой из них кажется наиболее модульным? (см. примечания ниже)

Это не самоуверенно. JavaScriptMVC чрезвычайно модульный. Вы используете только то, что вам нужно. По сравнению с позвоночником или позвоночником, вы можете использовать его отдельные части M, V или C. При сборке он всего на 1 Кб больше, чем Backbone (при использовании jQuery и Underscore). Вы можете увидеть различные размеры базовых компонентов здесь: https://github.com/jupiterjs/javascriptmvc/issues/26

Но JavaScriptMVC гораздо более мощный (с точки зрения возможностей) по сравнению с Backbone или Spine. Например, это шаблонные обработчики событий, предотвращающие практически все утечки памяти. Вот подсказка, которая скрывается при нажатии на окно:

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

Это абсолютно важно с подходом MVC, когда ваши элементы управления прослушивают изменения в модели, такие как:

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

Контроллер автоматически отсоединит все эти внешние обработчики событий.

Несколько других сильных сторон только деталей MVC:

  • $ .Class - очень мощная система классов
  • $ .View и $ .Model поддерживают отложенные
  • $ .Controller может «перепривязать» обработчики событий
  • $ .Model поддерживает ассоциации, методы получения / установки, значения по умолчанию, проверки

Теперь JavaScriptMVC - это гораздо больше, чем просто части MVC (которые являются частью подпроекта jQueryMX). Она имеет:

  • jQueryMX - отсутствующие функции jQuery, такие как специальные события, помощники по домам и т. д.
  • Steal - система управления зависимостями. Но он может делать такие вещи, как приложение ajax и сделать его доступным для сканирования в Google.
  • FuncUnit - удивительно мощный фреймворк для тестирования.

Теперь от того, что использовать, многое зависит. Многое зависит от того, делаете ли вы «приложение» или «страницу». Приложение, которое требует тестирования, управления зависимостями, где вы заботитесь об утечках памяти, я бы посмотрел на JMVC или SproutCore.

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

Джастин Мейер
источник
«Позвоночник или позвоночник, вы можете использовать его отдельные части M, V или C». За исключением того, что каждый из M, V и C такой же большой, как позвоночник и позвоночник.
Рэйнос
Это не правда. Магистраль 5k с зависимостью подчеркивания. Я не уверен, что такое позвоночник. Но вот разбивка: класс: 1k, контроллер: 1.74k, модель: 2.8k, $ .View: 1.6k, $ .String: .5k. Всего 8,6 тыс. Это на 3 тысячи больше, но гораздо больше полезных функций.
Джастин Мейер
Будете ли вы использовать JavaScriptMVC с чем-то вроде элементов управления Kendo UI? Какие еще элементы управления?
Заключенный НОЛЬ
Да, любая библиотека пользовательского интерфейса на основе jQuery должна работать отлично (при условии, что она использует систему событий jQuery для событий).
Джастин Мейер
Я должен отметить, что Backbone может использовать Zepato вместо jQuery, что делает его намного меньше, чем объединенные зависимости JMVC MVC с jQuery. Но вы теряете немного без jQuery.
Джастин Мейер