Прототип VS jQuery - Сильные и слабые стороны?

Я не хочу открывать другой поток Еще один Js VS Js.

Я предполагаю, что в конце Prototype и jQuery являются как JS, так и имеют почти одинаковые методы и функции и нуждаются в почти одинаковых строках кода для идентичных задач.

Для реального богатого интернет-приложения, каковы реальные сильные стороны и какие недостатки в Prototype vs. jQuery?

Ответ 1

Мне сначала понравилась идея прототипа, расширяющего элементы с новыми или измененными методами.

Однако я обнаружил ряд причин: это плохо (TM)

Сделайте некоторые поисковые запросы, и вы, вероятно, найдете другие причины, но основная причина заключается в том, что Prototype не может быть гарантирован "хорошо играть" с другими фреймворками или библиотеками, поскольку другие библиотеки ожидают, что поведение элементов и методов будет "стандарт", и из-за того, что делает Prototype, вы можете найти несколько вещей, которые его нарушают.

Самый последний пример, который я обнаружил, - это зашивание прототипа с помощью JSON и сжатие. Я использовал EasyXDM, и он просто не работал в некоторых случаях, когда была загружена библиотека prototype.js. Поскольку я писал структуру, которая будет использоваться другими, и, таким образом, не имела контроля над содержимым страницы, мне нужно было создать и сделать все в IFRAME, чтобы обеспечить такие вещи, как prototype.js, не играли хаоса с что я пытался сделать.

... поэтому jQuery побеждает для меня, потому что я просто не думаю, что его право на фреймворк автоматически зависает со стандартным поведением DOM и javascript. Вы должны контролировать эти вещи, Prototype отбирает часть этого контроля от вас....

Ответ 2

Я использую jQuery поверх прототипа, просто посмотрите в верхней части этой страницы, почему:

jQuery отмеченные вопросы: 531,752
прототип помеченного вопроса: 2,465
Обновлено 9/22/2014, 12/14/2011 jQuery - 135,641/прототип - 2,327

jQuery - очень краткий, сжатый код. Прототип я нахожу гораздо более многословным, хотя часто эквивалентным во многих областях для функциональности. Однако, если вам нужна помощь при запуске, вы хотите, чтобы большее сообщество. Больше поддержки, больше тех же вопросов, на которые вы уже ответили, и просто в Google, и больше плагинов, код, который вы, вероятно, ищете, чтобы что-то сделать... уже написано.

По тем же причинам, чем больше сообщество, тем больше кода, тем больше сложный код, что означает, что простой материал был написан и многие сложные ситуации решены, возможно, переписывая очень богатое приложение, вы столкнетесь с довольно сложными вопросами или ситуациями... есть больше ресурсов, чтобы помочь вам справиться с этим.

Снова... по той же причине размера сообщества, было обнаружено больше недостатков в рамках и пробелы заполнены, потому что более широкое сообщество тщательно изучало это. Это означает, что, когда вы сталкиваетесь с проблемой, есть вероятность, что кто-то еще сделал это, и был добавлен какой-то метод или параметр, чтобы вы двигались, а не заклинивали, потому что вы попали в то, что фреймворк не смог сделать.

Ответ 3

В настоящее время я переписываю большие блоки с приложения для перехода от Prototype к jQuery. Зачем? Плагины, плагины, плагины, особенно виджеты пользовательского интерфейса. Элементы прототипа UI довольно фрагментированы и очень разрознены, а jQuery имеет очень богатый набор "стандартных" элементов.

Ответ 4

JQuery был создан, чтобы упростить добавление модных эффектов на страницы. Он достиг 100-процентного успеха.

Так как добавление анимаций и случайных вызовов ajax - это то, что обычно требуется и требует людей от библиотеки Javascript, JQuery имеет большое сообщество. Девиз JQuery - "Я добавлю немного блеска и уйду с дороги", и это именно то, что нам, разработчикам, часто нужно.

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

Ответ 5

Я выбрал jQuery над Prototype, потому что:

  • "делать больше, писать меньше..."
  • сообщество jQuery больше (следовательно, больше плагинов и ресурсов)

Ответ 6

Я использовал и то и другое, и то, и другое. Это зависит от ваших требований к проекту. Для меня, похоже, обе платформы пришли из двух разных направлений из-за двух разных требований. Они были созданы из-за необходимости решать проблемы программирования, чтобы ускорить и улучшить создание веб-сайтов/приложений.

При быстром создании веб-сайтов с помощью стандартного инструментария трюков, jquery и его библиотека замечательны. Нет смысла изобретать колесо. Однако я сталкиваюсь с проблемой нечетной версии браузера, когда мой инструмент/трюк не работает, и всегда бывает, что именно клиент имеет эту конкретную версию. Обычно происходит при выпуске/обновлении версии браузера. Итак, мне нужно перейти к новой версии этого файла библиотеки jquery, чтобы обновить все мои сайты, то есть, если сообщество уже заметило и решило эту проблему. Это мой единственный мотив, потому что у меня нет времени, чтобы понять это сам. Это происходит не часто, а происходит.

При работе над более сложными веб-проектами, возможно, сеть сайтов, поддерживаемая с помощью API-интерфейсов back-end, тогда я нахожу прототип отличным. Я в полной мере использую кодирование OO на стороне сервера и очень рад, что я могу сделать то же самое с Prototype. Я чувствую, что у меня есть больше "контроля" над моими приложениями и могу быстро исправить ситуацию, так как я автор. Я слышал, что люди говорят о накладных расходах, расширенных DOM и т.д., Но я не сталкивался с проблемами майора (стук в лес). Кроме того, вся проблема в том, что у вас нет инструкции "для каждого", не является большой проблемой, когда я могу так же легко перебирать одну и ту же переменную с .each(function() {},..) и с меньшим контролем.

Итак, у каждого есть свое место, и вам нужно выбрать свой собственный препарат.

Как,

Ответ 7

Ни один из них не является "лучшим". Все это зависит. Попробуйте их обоих и посмотрите, какой из них вам больше нравится. Я лично использую JQuery из-за простоты использования над прототипом, который довольно продвинутый и имеет более длинную кривую обучения.

Посмотрите:

Прототип против JQuery (на Ajaxian)

Ответ 8

Это еще одна интересная статья о jQuery и MooTools (MooTools и Prototype в основном взаимозаменяемы, по крайней мере, в контексте этой дискуссии): http://jqueryvsmootools.com/

Ответ 9

jQuery использует селектор и фильтры CSS-стиля, которые основаны на синтаксисе CSS. С точки зрения дизайна у этого есть много преимуществ. Я очень люблю и разбираюсь в CSS, поэтому jQuery чувствует себя как дома лично для меня лично. Если вы ищете синтаксис, чтобы ваш многопользовательский опыт кодирования был более приятным, и вы являетесь большим поклонником/профессионалом в CSS, можно с уверенностью сказать, что вы предпочитаете jQuery по сравнению с альтернативами. Я прошел базовый курс в Prototype, и мне было скучно до слез. Я только что закончил "The Essentials of jQuery" в Lynda, и мне это очень нравится, потому что это тесная связь с CSS. Я программировал в ванильном JavaScript около 10 лет, и я всегда считал его чрезвычайно сухим; и для меня это код overkill (не много ударов за доллар). Хотя это было очень полезно для меня на протяжении многих лет. Из того, что я видел до сих пор, jQuery - это то, что JavaScript ДОЛЖЕН быть с самого первого дня. Но опять же, это требует много времени, тестирования и усилий, чтобы улучшить ситуацию. Поэтому jQuery выигрывает для меня.

Ответ 10

Я еще не опытен в jQuery или Prototype. О том, чтобы начать изучать один из них, чтобы добавить в свой инструментарий в качестве старшего разработчика ColdFusion и менеджера проекта. Сначала я беру на себя этот вопрос, который будет выбран новым пришедшим, поскольку это отражает принятие в отрасли, в котором ИМХО является ключевым.

Основываясь на быстром осмотре, и несколько учебников читают обоим, кажется, каждый из них предлагает одни и те же основные возможности. Однако, глядя на доски объявлений и другие проекты, jQuery, похоже, находится в гораздо большем "спросе", а не только навыке, который можно использовать. Для меня jQuery выигрывает здесь с усыновлением и спросом, поддержка сообщества и документация - плюс. Ничто против Prototype, хорошо знать, требует ли проект из-за предварительного существования, потому что какой-то разработчик выбрал его как первый, в который он заглянул.

Ответ 11

Я использовал прототип framework и jquery, и, как и мне, мне лично нравится jquery cuz его noConflict(); я предпочитаю использовать jq noConflict, как это в моих js файлах

(function($){

}(jQuery));

этот способ заставит вас использовать $в качестве селектора jquery для js файла

Ответ 12

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

Подчеркивание - это библиотека утилитной ленты для JavaScript, которая обеспечивает много поддержки функционального программирования, которую вы ожидаете в Prototype.js(или Ruby), но без расширения какого-либо встроенного Объекты JavaScript. Это связь с jQuery tux и Подтяжки Backbone.js.

Ответ 13

Могу ли я также предложить аргумент, что использование одного или другого является ложной дилеммой? Имея большой опыт работы с jQuery, я знаю, насколько это выгодно и насколько быстрее может быть разработка приложений.

Важно отметить, однако, что в некоторых случаях, возможно, более полезно использовать конечные пользователи без какой-либо библиотеки, особенно в тех случаях, когда это не требуется. Хотя это, безусловно, полезно для крупных приложений, оно может быть противоречивым для использования на общем веб-сайте из-за влияния на производительность.

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

Кроме того, при загрузке библиотека немедленно выполняет код для создания глобальных функций и объектов, тем самым потребляя больше памяти, даже если вы никогда их не используете. Некоторые библиотеки также будут добавлять функции и объекты к встроенным прототипам объектов, что также увеличивает использование памяти.

Наконец, в то время как jQuery и многие другие библиотеки часто подвергаются всестороннему тестированию, чтобы обеспечить наименьшее влияние на производительность, код, который вы пишете, хотя и уменьшен в количестве, будет часто медленнее, чем в противном случае. Имейте в виду, что все, что вы можете сделать с библиотекой, которую вы можете сделать с необработанным JavaScript, поскольку в корне они одинаковы.

Ответ 14

Короткий сжатый код с использованием операторов сокращенного стиля имеет тенденцию быть загадочным, так что это не обязательно лучше. Это может забрать от читаемости и понять, что происходит менее ясно. За многие годы программирования я столкнулся с каким-то очень умным загадочным кодом, который был дьяволом, чтобы понять, когда у него были проблемы. Лично мне нравится код, который сам документ и который оптимизирован для конкретных ситуаций. Если ваша цель состоит в том, чтобы максимально использовать наименьшие строки кода, то использование DOM-библиотек, таких как прототип и jQuery, может быть для вас. Я лично считаю, что лучше понять возможности самого языка JavaScript и реализацию DOM браузеров и использовать его для этой задачи, будь то создание виджета пользовательского интерфейса или что-то еще. Я иногда использую библиотеку script.aculo.us для анимационных эффектов, поэтому я нахожу, что загружаю код прототипа библиотеки, так как от него зависит его выполнение. Мое предложение для тех, кто использует любую из библиотек, - это научиться писать JavaScript в стиле OO, прежде чем полностью в зависимости от любой из этих библиотек, а затем включите ту, которая, по-видимому, наилучшим образом соответствует вашим потребностям. Отличная книга для изучения стиля OO JavaScript - это "Шаблоны проектирования Java".