Является ли простой JavaScript с JavaScript, чем использование фреймворков, таких как jQuery или MooTools?

Мне интересно, стоит ли полагаться на такие фреймворки, как jQuery или MooTools, или нам нужно просто использовать обычный JavaScript?

Помимо исключения повторного изобретения колеса, добавляются ли они какие-либо конкретные значения?

Поскольку рамки открыты для общественности, может ли быть возможность использования каких-либо дыр в безопасности, которые могут появиться (конечно, непреднамеренно:)) в рамках?

Существуют ли какие-либо другие моменты, которые следует учитывать при выборе рамки или иначе?

Ответы

Ответ 1

  • Рамки разрешают кросс-браузерные ошибки, которые обычно будут стоить часов вашего времени, поэтому вы можете сосредоточиться на функциональности, а не беспокоиться о некоторых ошибках браузера на краю. Вместо того, чтобы тратить 4-5 часов на решение проблемы, время с семьей.

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

  • Переводчики и браузеры становятся все быстрее и быстрее, поэтому я не особо думаю, что это огромная проблема, связанная с загрузкой всей библиотеки. Кроме того, благодаря Google и др. Мы получаем очень быстрые cdns, и в настоящее время многие сайты используют один и тот же точный URI, чтобы вытащить script в, что означает, что более высокая скорость script становится кешированной и повторно использована на другом сайте.

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

  • Конкуренция - это хорошо, результат тестов slickspeed привел к гораздо более быстрым селекторным двигателям, таким как Sizzle. Разработчики, не беспокоясь о банальных ошибках DOM, ежедневно создают более сложные библиотеки, что означает, что разработчики начального уровня имеют доступ к очень мощным плагинам.

Что касается безопасности, jQuery, например, определит, способен ли браузер разбирать JSON изначально, и если да, полагайтесь на это. Обычно любой современный браузер будет иметь это, и это намного безопаснее, чем eval... поэтому jQuery пытается сначала использовать безопасные и более безопасные методы. Он будет использовать только eval, если не существует доступного метода JSON.parse.

Важно помнить в jQuery, хотя помните, что вы все еще кодируете в Javascript. Обычно люди слишком усердствуют в методах, покрытых сахаром, и обертывают все в $, я думаю, важно знать, что вы все равно можете сделать this.href вместо $(this).attr('href'), если вы хотите, например, абсолютно нормализованный uri.

Ответ 2

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

Но кроме того, библиотеки JavaScript обеспечивают лучшую кросс-браузерную поддержку. Это очень полезно, так как быстро просмотрите QuirksMode.

Рамки JavaScript делают многое проще. Посмотрите на документацию jQuery, и вы увидите, как легко это делает много необычных вещей.

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

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

Ответ 3

Это зависит от того, для чего вы используете JavaScript. Если вы хотите показывать и скрывать панели, анимацию, прикреплять события к нескольким элементам, делать Ajax и т.д., Тогда вам нужно рассмотреть cross-browser.

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

Так что это зависит от того, что вы хотите от JavaScript.

Ответ 4

Я никогда не использовал MooTools, поэтому не могу комментировать это, но jQuery упрощает многое.

  • Выбор коллекций объектов по классам, имени, частичному идентификатору и т.д.
  • Упрощение вызовов Ajax.
  • Обработчики событий Wireup обрабатывают onclick, mouseover, mouseout и т.д. и назначают элементам на основе общих селекторов, чтобы логику можно было повторно использовать.
  • Тонны переходов и другие визуальные материалы, чтобы довести до конца.

Есть намного больше, но он обычно упрощает/ускоряет разработку. Единственное, на что нужно обратить внимание, - это то, что вы используете тонну селекторов в одной функции (цикл, который выполняет итерацию по DOM 40 + раз), более эффективно использовать ванильный JavaScript.

Таким образом, я бы посоветовал кодировать интерфейс с помощью фреймворка, а затем оптимизировать неэффективные части путем подкачки в ванильном JavaScript.

Кроме того, я не вижу, как jQuery или MooTools могут быть угрозой безопасности, поскольку они являются клиентскими, а не серверными. Не забудьте всегда проверять входы на стороне сервера в дополнение к любой проверке на стороне клиента и правильно параметризовать SQL-запросы, которые создаются на стороне сервера.

Ответ 5

Фреймворки предоставляют кросс-браузер-API для JavaScript, поэтому большую часть времени они очень полезны, даже если они приходят с небольшой потерей скорости. Но JS-Engines быстро получают почти каждое обновление, так что это не проблема. Также есть очень много плагинов для фреймворков, поэтому они не только предоставляют API, но и новые кросс-браузерные функции. Но это зависит от того, что вы хотите сделать.

Ответ 6

Я не придаю большого значения аргументу "Открытый исходный код - слишком уязвим к проблемам безопасности". Я вижу преимущество многих Хороших Парней, читающих код и выявляющих такие проблемы. Если это проблема, нам нужно будет отказаться от Linux, Apache, MySql и большинства библиотек Java.

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