Де jQuery вписується в такі рамки, як JavaScriptMVC, BackboneJS, SproutCore та Knockout?


14

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

Однак ...

Наступний виклик, здається, постає у вигляді різних систем контролерів: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (список продовжується).

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

Відстежувати все це стає все складніше і складніше ...

І тепер, моє завдання, схоже, полягає в оцінці / визначенні стратегічного напряму для використання якоїсь форми або MVC, або MVVM на стороні клієнта ... але у мене так багато питань.

  • Де JQuery вписується в різні рамки контролера, згадані вище?
  • Чи використовується JQuery поряд з кожним чи деякі з них мають власну " JQuery- стильову версію"?
  • Чи потрібні такі інструменти, як RequireJS, якщо ви реалізуєте одну з різних схем контролера, згаданих вище?
  • Чи вигідні можливості defineта thenвбудовані JQuery тепер витісняють згаданий вище навантажувач AMD?
  • Хто з них видається найбільш модульним? (див. примітки нижче)

ПРИМІТКИ.
Одне, чого я не хочу в будь-якій майбутній структурі, - це вимога використовувати величезну кількість функцій, які я не використовую. Це означає, що я скоріше використовую рамки, які є справді модульними. Наприклад, щоб використовувати інтерфейс jQuery, ви повинні взяти багато інших основних бібліотек, які ви фактично не можете використовувати.

Я буду експериментувати з кожним, але деякі реальні відгуки були б чудовими. Я бачив деякі "подібні" запитання, але жодне дійсно не відповіло на вищесказане.

Спасибі заздалегідь!

Відповіді:


11

jQuery інструмент нормалізації перехресного браузера. Це дає вам наступне

  • DOM комунальні послуги
  • Система подій
  • Аякс
  • Анімації
  • ES5 утиліти
  • якась інша річ

Backbone / knockout / yada / yada - це бібліотеки, схожі на MVC, які допомагають вам структурувати та писати модульні програми. Вони потрібні лише тоді, коли ви хочете їх структури.

RequireJS / yada / yada - навантажувачі модулів. Якщо ви хочете написати модульну програму, вам потрібна форма завантажувача модулів.

Де JQuery вписується в різні рамки контролера, згадані вище?

Як вже було сказано, jQuery нормалізує браузери. Кадрів контролера немає. Вам не потрібен jQuery, але вам потрібен спосіб нормалізації браузерів.

Чи JQuery використовується поруч із кожним, чи деякі з них мають власну версію "Стиль JQuery"?

У магістралі / нокауті / JavaScriptMVC не передбачена нормалізація браузера, тому для цього вам потрібен інструмент. Я не впевнений у SproutCore, здається, у ньому багато.

Чи потрібні такі інструменти, як RequireJS, якщо ви реалізуєте одну з різних схем контролера, згаданих вище?

Вони потрібні, лише якщо ви пишете для написання модульних програм. Так майже так.

Існує три аромати модульних застосувань

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

Чи визначають, а потім і можливості, вбудовані в JQuery, тепер витісняють згаданий вище навантажувач AMD?

Ні. Функція визначення, введена в jQuery, дозволяє використовувати її з завантажувачем AMD без упаковки jQuery. Вам ще потрібен навантажувач AMD. Можливість "тоді" - це лише деякий цукор відкладених jQuery.

Хто з них видається найбільш модульним? (див. примітки нижче)

Це сумнівне питання. Моя особиста думка полягає в тому, що всі ці рамки, включаючи jQuery, роздуті, а не модульні.

Ви хочете модульно, написати власну бібліотеку, написати власну архітектуру.

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


Дякую Рейносу ... Я завжди можу розраховувати на тебе за чудову відповідь!
В'язень ЗЕРО

@Marjan Я чекаю на інших, хто також може піклуватися про те, щоб подати будь-яку інформацію.
В'язень ZERO

@PrisonerZERO: взагалі немає проблем з цим. Як ви здалися задоволеними відповіддю Рейноса, мій коментар був про всяк випадок, якщо ви не знали про прийняття відповіді (я не перевірив ваш профіль, і ваш представник припускає, що ви тут досить новий користувач)
Marjan Venema

2

Я відповім на JavaScriptMVC, оскільки я працюю:

Де JQuery вписується в різні рамки контролера, згадані вище?

JavaScriptMVC залежить від jQuery і широко використовує його.

Чи JQuery використовується поруч із кожним, чи деякі з них мають власну версію "Стиль JQuery"?

JavaScriptMVC не має конкуруючих функцій з jQuery. Це не так, як у Backbone, яка має власну систему подій. Але все, що додають хребет або хребет, дуже мінімальні.

Чи потрібні такі інструменти, як RequireJS, якщо ви реалізуєте одну з різних схем контролера, згаданих вище?

JavaScriptMVC поставляється із системою управління залежностями -> красти. Ви можете використовувати JavaScriptMVC з RequireJS, але крадіжка насправді набагато потужніша та приблизно однакова за розмірами, завантажена користувачем.

Хто з них видається найбільш модульним? (див. примітки нижче)

Це не викликає сумнівів. JavaScriptMVC надзвичайно модульний. Ви використовуєте лише те, що вам потрібно. Порівняно з хребтом або хребтом, ви можете використовувати частини M, V або C окремо. При зібранні разом це лише на 1 кілометрів більше, ніж Backbone (при використанні jQuery і Underscore). Ви можете побачити різні розміри базових компонентів тут: https://github.com/jupiterjs/javascriptmvc/isissue/26

Але JavaScriptMVC набагато потужніший (з точки зору функцій) проти хребта або хребта. Наприклад, шаблонні обробники подій запобігають практично всі витоки пам'яті. Ось підказка, яка ховається під час натискання вікна:

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

Це абсолютно критично для підходу MVC, коли ваші органи управління слухають зміни в моделі, наприклад:

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

  }
})

Контролер автоматично відв’яже всі ці зовнішні обробники подій.

Кілька інших переваг лише частин MVC:

  • $ .Class - це дуже потужна система класів
  • $ .View і $ .Model підтримує відстрочку
  • $ .Controller може "відновити" обробники подій
  • $ .Model підтримує асоціації, getter / setters, параметри за замовчуванням, валідації

Тепер JavaScriptMVC набагато більше, ніж просто деталі MVC (які є частиною підпроекту jQueryMX). Це має:

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

Тепер від того, чим користуватися, багато що залежить. Багато що залежить, якщо ви робите "додаток" або "сторінку". Додаток, який потребує тестування, управління залежностями, де ви дбаєте про витоки пам’яті, я б подивився на JMVC або SproutCore.

Якщо ви склеюєте кілька основних віджетів разом, я б подивився на хребет або хребет.


"Магістраль або хребет, ви можете використовувати частини M, V або C окремо." За винятком того, що кожен з М, V і С є настільки ж великими, як хребет і хребет.
Райнос

Що це не так. Хребта становить 5 к, але це підкреслює залежність. Я не впевнений, що таке хребет. Але ось розбивка: Клас: 1k, Контролер: 1.74k, Модель: 2.8k, $ .View: 1.6k, $ .String: .5k. За загальну суму 8,6 к. Це на 3 кб більше, але набагато більше корисних функцій.
Джастін Мейєр

Чи використовуєте ви JavaScriptMVC з чимось на зразок елементів кедового інтерфейсу Kendo? Які ще елементи управління?
В'язень ЗЕРО

Так, будь-яка бібліотека інтерфейсу на основі jQuery повинна чудово працювати (доки вона використовує систему подій jQuery для подій).
Джастін Мейєр

Слід зазначити, що Backbone може використовувати Zepato замість jQuery, що робить його набагато менше, ніж комбіновані залежності JMVC MVC з jQuery. Але, ви втрачаєте зовсім небагато без jQuery.
Джастін Мейєр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.