Подтвердить что ты не робот

Если вы уже используете фреймворк, не должны ли вы писать "plain vanilla" js?

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

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

Есть ли какое-то преимущество в использовании фреймворка, поскольку оно уже загружено в память браузера, имеет легкодоступную карту DOM и т.д.? Или простой ваниль js всегда будет анализировать быстрее, потому что он "сырой" и не зависит от структуры?

Или это просто вопрос вкуса?

4b9b3361

Ответ 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, стоит каких-либо издержек на производительность в моей книге.