Прототип VS jQuery - сильные и слабые стороны? - PullRequest
64 голосов
/ 15 апреля 2010

Я не хочу открывать другую ветку " Yet Another Js VS Js ".

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

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

Ответы [ 14 ]

105 голосов
/ 15 апреля 2010

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

Однако я обнаружил несколько причин, по которым это плохо (ТМ)

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

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

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

45 голосов
/ 15 апреля 2010

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

jquery отмеченные вопросы : 531,752
вопрос с тегом прототипа : 2,465
Обновлено 22.09.2014, 14.12.2011 jQuery - 135 641 / прототип - 2,327

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

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

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

19 голосов
/ 18 апреля 2010

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

13 голосов
/ 27 марта 2011

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

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

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

9 голосов
/ 15 апреля 2010

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

  • "делай больше, пиши меньше ..."
  • сообщество jQuery больше (следовательно, больше плагинов и ресурсов)
6 голосов
/ 11 октября 2011

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

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

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

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

Как,

4 голосов
/ 15 апреля 2010

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

Посмотрите на:

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

3 голосов
/ 09 февраля 2012

jQuery использует селекторы и фильтры в стиле CSS, основанные на синтаксисе CSS. С точки зрения дизайна, это имеет много преимуществ. Я очень люблю и хорошо разбираюсь в CSS, поэтому jQuery лично для меня как дома. Если вы ищете синтаксис, чтобы ваш общий опыт написания кода был более приятным, и вы большой поклонник / опытный в CSS, можно с уверенностью сказать, что вы предпочтете jQuery альтернативам. Я прошел базовый курс по Prototype , и мне было скучно до слез. Я только что закончил "Основы jQuery" на Lynda's , и мне это очень нравится, потому что он тесно связан с CSS. Я программировал на vanilla JavaScript около 10 лет, и я всегда находил его чрезвычайно сухим; и для меня это избыточный код (не слишком много денег). Хотя это было очень полезно для меня на протяжении многих лет. Из того, что я видел до сих пор, jQuery - это то, что JavaScript ДОЛЖЕН БЫТЬ с самого первого дня. Но опять же, для улучшения требуется много времени, испытаний и усилий. Так что JQuery выигрывает для меня.

3 голосов
/ 15 апреля 2010

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

2 голосов
/ 27 ноября 2010

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

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

...