Jquery - это библиотека или фреймворк javascript? [закрыто]

121

Здесь jquery упоминается в категории фреймворков: http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks

Jquery - это библиотека или фреймворк javascript?

рахул дагли
источник
40
Библиотека одного человека - это каркас другого человека.
nnnnnn
1
Здесь это не по теме, потому что все ответы одинаково верны: «Какой твой любимый ______?» , Кроме того, какое имеет значение, все ли мы это библиотека или фреймворк?
EJoshuaS

Ответы:

169

Библиотека. Согласно домашней странице , с которой я согласен.

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

GregL
источник
55
+1. Библиотека - это то, что вы вызываете из своей программы. Фреймворк - это то, что вызывает вашу программу.
Тило
1
Для сравнения библиотеки и фреймворка см. «Инверсия управления» stackoverflow.com/a/3057818/2144912
cheshireoctopus
30

jQuery: меньше пишите, делайте больше, библиотека JavaScript .

Dunhamzzz
источник
14
Хотя я согласен, само название / слоган ничего не доказывает. Существуют тысячи так называемых «фреймворков», которые на самом деле представляют собой библиотеки.
kapex 07
@Kapep, но обратный случай встречается реже: не многие фреймворки называют себя «библиотеками». Думаю, термин «структура» звучит более сексуально для некоторых…
Франклин Ю
19

Конечно, это библиотека javascript. Но что касается того, быть фреймворком или нет, я просто думаю, что это не фреймворк. Взгляните на определение программного фреймворка в Википедии :

Это набор программных библиотек, обеспечивающих определенный интерфейс прикладного программирования.

А jQuery - это всего лишь одна библиотека. После этого говорится:

Фреймворки содержат ключевые отличительные особенности, которые отделяют их от обычных библиотек:

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

Так что, думаю, это не фреймворк.

Saeed
источник
9

Согласно веб-сайту angularjs

  • библиотека - набор функций, которые полезны при написании веб-приложений. Ваш код отвечает за вас, и он обращается к библиотеке, когда
    считает нужным. Например, jQuery.
  • frameworks - конкретная реализация веб-приложения, где ваш код заполняет детали. За все отвечает фреймворк, который вызывает ваш код, когда ему нужно что-то конкретное для приложения. Например, дюрандал, уголь и т. Д.
Harke
источник
5

Framework и libarry не обязательно являются взаимоисключающими терминами. Фреймворк обычно представляет собой библиотеку или набор библиотек.

Строго говоря, jQuery - это библиотека, но до некоторой степени она соответствует определению программной среды. Хотя многие утверждают, что jQuery недостаточно строго соответствует определению фреймворка программного обеспечения, факт остается фактом: ни один другой фреймворк JavaScript также полностью не соответствует определению фреймворка.

Одной из определяющих характеристик программной среды является то, что ее код защищен от изменений. В JavaScript это явно не так. Любые библиотеки или фреймворки, которые могут быть вызваны в ваш клиентский код, можно изменять, хотя их изменение противоречит передовой практике. Следовательно, если допустимо называть Bootstrap или AngularJS фреймворком, нет причин, по которым jQuery нельзя назвать фреймворком. Эта ссылка содержит более подробное объяснение того, как jQuery соответствует критериям, которые можно назвать фреймворком.

Возможно, лучшим объяснением того, почему jQuery является скорее фреймворком, чем библиотекой, является тот факт, что как разработчик вы можете отказаться от использования каких-либо его функций, подобных фреймворку. Вы можете, например, смешать простой оператор jQuery со стандартным оператором JavaScript в одной строке. AngularJS и Bootstrap обычно не позволяют этого делать. Следовательно, точный ответ, является ли jQuery фреймворком или нет, - «это зависит от того, решили ли вы использовать его в качестве фреймворка или нет».

Федар Сазанавец
источник
2

Я согласен со всеми ответами здесь, что сам jQuery действительно является библиотекой, а не фреймворком. Как указано в ответе Саида, одной из ключевых отличительных черт является инверсия управления. Однако вы можете использовать функциональность jQuery для создания собственной структуры.

Примеры: есть проекты, построенные на основе jQuery, которые определены как фреймворки: jQuery Mobile: оптимизированная для сенсорного управления веб-платформа , JavaScriptMVC и sammy.js и многие другие.

Существуют также другие библиотеки, построенные поверх jQuery, например jQuery UI.

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

Durandal
источник
1

Если мы говорим об инверсии управления, о которой говорят почти все в вышеупомянутой ветке, тогда jQuery - это РАМКА.

У него есть IOC, например, когда мы пишем функцию $ (document) .ready {} ... это контейнер, который вызывает этот метод, и мы просто помещаем наш код в фигурные скобки. Мы не вызываем этот метод и, следовательно, "инверсия управления"

Таким образом, jQuery является РАМКОЙ.

pinkman
источник
1
М-м-м, в большинстве больших библиотек для каких-то целей есть хотя бы какой-то неопределенный метод обратного вызова. Вы можете написать много кода jQuery, даже не полагаясь на него ready().
Натан Тагги
@NathanTuggy Итак, почему даже подробное обсуждение Framework vs Lib говорит о IOC. Если оно есть, оно есть. Зачем говорить о «полагаться» или «не полагаться».
Pinkman
Потому что IoC в стиле фреймворка характеризуется необходимостью его использования. Нет возможности использовать его по желанию, определенным образом, а ля карт. В рамках, у вас нет выбора: управление является перевернутым.
Натан Тагги