Магистраль JS не очень JQuery, как? - PullRequest
0 голосов
/ 02 марта 2011

Backbone JS настоятельно рекомендует использовать jQuery. Тем не менее, это не делает вещи очень JQuery. Например, jQuery устраняет необходимость в новом операторе, его использует магистраль.

С другой стороны, я ищу каркас, основанный больше на наследовании прототипов, чем на классическом наследовании (новый). jQuery не подпадает под эту категорию, это просто архитектурный стиль, к которому я склоняюсь.

Существуют ли какие-либо фреймворки, использующие наследование прототипов, или это ваш собственный шаблон моста?

Ответы [ 5 ]

12 голосов
/ 09 марта 2011

Backbone и jQuery решают разные проблемы ... Backbone, по сути, дает вам структуру для создания тяжелых приложений Javascript ... Он дает вам Модели, Коллекции, Представления и Контроллеры (хотя, основываясь только на дне игры с ним) Мне кажется, что для маршрутизации используются контроллеры, а представления похожи на классический контроллер)

Backbone зависит от jQuery (или Zepto, если вы так склонны), чтобы помочь ему выполнять такие вещи, как запросы AJAX.

Вы правы - это не очень похоже на jQuery, но оно дает вам что-то совсем другое ...


UPDATE

Начиная с версии 0.5.0 магистраль переименовала контроллеры в маршрутизаторы, что должно сделать вещи немного более очевидными для людей, пришедших из MS MVC / Rails и т. Д. *

«Мы воспользовались возможностью, чтобы уточнить некоторые имена в выпуске 0.5.0. Контроллер теперь маршрутизатор»

http://documentcloud.github.com/backbone/#Router

4 голосов
/ 24 мая 2011

Я полностью согласен с ответом, предоставленным Полом, и также хотел бы повторить, что ваш вопрос неоднозначен по своей сути.

Jquery в высшей степени ориентирован на домены и предоставляет вам отличные возможности для работы на DOM.Будь то изменение стилей, загрузка удаленного контента в некоторую часть документа, реагирование на события браузера ... почти во всем, что основное внимание уделяется DOM.Для такого рода функций, когда вы работаете с содержимым документа, наследование прототипа и, что более важно, стиль доступа к виджетам через DOM (ознакомьтесь с API-интерфейсами JQueryUI), работает достаточно хорошо.Если вы идентифицируете виджеты как объекты javascript, то вы должны также отслеживать объекты ... что вам в случае стиля программирования следует JQueryUI и т. Д., Вам не нужно, потому что вы можете получить доступ к любому виджету, присутствующему вDOM путем навигации по структуре DOM или просто по его идентификатору (который, по сути, действует как глобальный идентификатор элемента).

backbone.js в целом создан для другой цели.Само введение ясно говорит о том, что оно основано на философии, согласно которой привязка ваших данных к DOM - это плохо.Когда вы создаете приложение, структурированное в соответствии с соглашениями backbone.js, вы по сути всегда концентрируетесь на объектах javascript, которые могут быть каким-то образом связаны с DOM.Вы определяете модели, которые взаимодействуют с источниками данных сервера, модели, которые запускают события при манипулировании содержимым данных, коллекции, которые помогают управлять большими наборами данных ... независимо от того, что вы всегда работаете с объектами javascript, которые не встроены в структуру документа,Для такого сценария более привычно думать в терминах традиционной объектно-ориентированной модели.Если у вас есть объект, рабочий процесс мало чем отличается от того, что вы привыкли использовать с помощью jQuery, потому что магистраль тоже, как и jQuery, поддерживает шаблон наблюдателя.Таким образом, точно так же, как вы можете привязывать обработчики событий к элементам DOM с помощью JQuery, вы присоединяете обработчики событий к пользовательским событиям, отправляемым моделями, сборщиками и т. Д. Таким образом, эти два хорошо объединяются.

Что касается других платформ, вы можете воспользоваться Knockout, который предоставляет привязки данных и наблюдаемые объекты и т. Д. И не требует использования нового ключевого слова для создания экземпляров, скорее, экземпляры создаются путем вызова функций из koпространство имен, которое может удовлетворить ваши вкусы.KO располагает обширной документацией и примерами кода, которые вы можете изучить, чтобы решить, соответствует ли он вашим вкусам.Я не могу больше комментировать KO, потому что у меня ограниченные знания об этом, но что касается backbone.js, я очень настоятельно рекомендую вам не отказываться от фреймворка только потому, что вам не нравится способ реализации некоторых вещей.Он делает элегантно и надежно то, что должен, и поддерживает невероятно малую площадь.

2 голосов
/ 21 октября 2011

Я думаю, что вы страдаете от неправильного понимания наследования прототипа и того, что вы действительно хотите в рамках.Если вы изменяете прототипы, но никогда не используете ключевое слово new, то вы никогда не создаете новые объекты.Если вы ищете среду для абстрагирования от создания объектов, это другая тема, хотя вам не следует бояться использовать ключевое слово new;Это большая часть JavaScript.

На самом деле вы можете использовать синтаксис new с jQuery, а когда вы его не используете, jQuery снова вызывает себя с синтаксисом new вместе с аргументамиВы перешли на это.Это чистый синтаксический сахар и не имеет большого значения ни для чего.

"С другой стороны, я ищу каркас, основанный больше на наследовании прототипов, чем на классическом наследовании (новый)."

Backbone построен на прототипном наследовании по методу extend, который встроен во все модели, коллекции и представления.Это совершенно без проблем, проще в использовании и добавляет такие вещи, как super - хук в родительский прототип - что может быть сложнее сделать с простым JS-прототипированием.

1 голос
/ 13 июля 2012

"Я ищу фреймворк, основанный больше на прототипе наследование, чем классическое наследование новый оператор ".

В Javascript нет «классического» наследования. На самом деле нет другого стандартного способа создания прототипа, кроме использования 'new', может быть, jQuery просто предоставляет метод, который выполняет 'new' внутри.

var jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
},
1 голос
/ 22 августа 2011

Backbone.js содержит стандарт кодирования для веб-приложений, управляемых ajax, которым не нужно обновлять страницу для обработки данных.

jQuery предлагает набор инструментов, которые помогут вам выполнить основные задачи, не беспокоясь о браузере, в котором вы запускаете код.

Они не имеют ничего общего.Это похоже на сравнение молотка (jQuery) с набором инструментов (backbone.js).Молоток - это только часть ящика с инструментами, а не наоборот.

Итак, да!Backbone.js не похож на jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...