Если вы уже используете фреймворк, не должны ли вы писать "plain vanilla" js?
Это скорее вопрос стиля и предпочтения, чем что-либо, хотя возможно, что могут быть и соображения производительности.
Если вы используете фреймворк (скажем, jQuery ради аргумента, хотя это может быть любая фреймворк), и вам нужно написать новую функцию. Это простая функция, и вы можете легко выполнить ее без использования фреймворка.
Есть ли какое-то преимущество в использовании фреймворка, поскольку оно уже загружено в память браузера, имеет легкодоступную карту DOM и т.д.? Или простой ваниль js всегда будет анализировать быстрее, потому что он "сырой" и не зависит от структуры?
Или это просто вопрос вкуса?
Ответы
Ответ 1
Ответ будет сильно зависеть от того, над чем вы работаете. В общем, вы гарантируете хотя бы незначительное снижение производительности за накладные расходы функции, если вы используете фреймворк для достижения чего-то, что может быть достигнуто с помощью "vanilla" JavaScript. Это ограничение производительности обычно является номинальным и может быть проигнорировано при учете других преимуществ вашей структуры (скорость разработки, более чистый код, простота обслуживания, многоразовый код и т.д.).
Если вам абсолютно необходим самый эффективный код, вы должны попытаться написать чистый JavaScript, который сильно оптимизирован. Если, как и в большинстве сценариев реального мира, вы не беспокоитесь о нескольких миллисекундах в разнице в производительности, придерживайтесь своей Framework, чтобы поддерживать согласованность.
Ответ 2
Всегда есть чему поучиться, когда вы решаете проблемы с чистым JS, а не с помощью внешнего кода для вас. В конечном счете, это более удобно, потому что это ваш код. Это не изменится. Вы знаете, что он делает. То, что ценность решения ваших собственных проблем действительно вступает в игру. Если вы проводите исследование MDC, MSDN, и спецификация ECMAScript, кросс-браузерные скрипты становятся намного проще обрабатывать. Конечно, у Microsoft есть свои идеи и их собственный DOM, но это то, где весело (read: challenge).
Кросс-браузерные скрипты в чистом JS действительно повышают вашу способность решать проблемы вместе с вашим пониманием языка. Если все еще есть вещи, которые вас пугают, тогда jQuery может войти в микс и, таким образом, переместить ментальный разрыв. Это здорово ездить в роскошном автомобиле, но какое использование это, если вы не знаете, как менять шину, когда она плоская? Лучшими разработчиками jQuery являются те, которые хорошо знают JavaScript и знают, когда использовать jQuery, и когда использовать простой JS.
Иногда вам просто нужно засучить рукава и сделать тяжелую работу. Плагин jQuery для всего не существует, и jQuery не может скрыть вас от всех причуд, которые могут предложить различные браузеры. Получение работы с вашим собственным кодом очень полезно, даже если вам пришлось попотеть, чтобы заставить его работать.
Совершенно приемлемо использовать множество различных инструментов для выполнения единственной задачи. Вам просто нужно знать, когда и где их использовать.
Ответ 3
Из моего понимания jQuery он фактически не поддерживает карту dom в памяти и просто имеет перекрестные методы браузера для ходьбы по dom. Somethings будет на самом деле быстрее в некоторых браузерах над другими (например, селектор на основе классов в Firefox будет быстрее, чем в IE, потому что IE не имеет встроенной функции для getElementsByClassName и Firefox). Если вам не нужны методы фреймворка для выполнения вещей, я бы сказал, продолжайте использовать и использовать родной JS, как обычно это будет использовать выбранная вами фреймворк.
Ответ 4
Я бы сказал, сделайте это с помощью рамки, просто потому, что это приведет к согласованности внутри проекта. Если вы используете фреймворк везде даже в малой функции, его будет легче поддерживать.
Что касается другого фактора, это действительно зависит от того, что вы пытаетесь сделать.
Ответ 5
Я работал над проектом javascript-heavy. Я обнаружил, что почти каждый раз, когда у меня была ошибка кросс-браузера в моем коде, это было в месте, где у меня был код вроде этого:
var element = $(selector);
// lots of code ...
element[0].someVanillaOperation();
и что ваниль не была одинаковой во всех браузерах. Что мне нравится в jQuery, так это то, что (большую часть времени) он скрывает различия браузера, и его функции работают одинаково для всех.
Ответ 6
Если вы выбираете элементы по ID, то простой Javascript работает быстрее. Однако он не предоставляет ни одну из тонкостей выбора, которые вы получаете с помощью jQuery - например, выбор нескольких элементов по классам в одном вызове.
Взгляните на эту ссылку: http://www.webkit.org/perf/slickspeed/, которая запускает тест скорости. Это более старая версия jQuery, но результаты с точки зрения скорости raw говорят сами за себя.
Лично я, как правило, использую jQuery для всего: он сохраняет код более чистым и тот факт, что он в значительной степени обойдется с кросс-браузерными проблемами поддержки JS, стоит каких-либо издержек на производительность в моей книге.