Если вы уже используете фреймворк, вы никогда не должны писать "простой ванильный" JS? - PullRequest
12 голосов
/ 02 апреля 2011

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

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

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

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

Ответы [ 6 ]

7 голосов
/ 02 апреля 2011

Ответ будет во многом зависеть от того, над чем вы работаете. В общем, вы гарантируете, по крайней мере, незначительное снижение производительности для служебных функций, если вы используете среду для достижения чего-то, что может быть достигнуто с помощью «ванильного» JavaScript. Это снижение производительности обычно является номинальным и может быть проигнорировано, если принять во внимание другие преимущества вашей среды (скорость разработки, более чистый код, простота обслуживания, повторно используемый код и т. Д.).

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

3 голосов
/ 02 апреля 2011

Всегда есть чему поучиться, когда вы решаете проблемы с использованием чистого JS, в отличие от внешнего кода, который делает это за вас.В конечном счете, это более удобно для обслуживания, потому что это ваш код.Это не изменится.Вы знаете, что он делает.Вот где ценность решения ваших собственных проблем действительно вступает в игру.Если вы исследуете MDC , MSDN и ECMAScript spec , кросс-браузерный сценарий станет намного проще в обработке.Конечно, у Microsoft есть свои идеи и свой DOM, но в этом и есть веселье (читай: вызов).

Кросс-браузерные сценарии в чистом JS действительно повышают вашу способность решать проблемы наряду с вашим пониманием языка.Если есть вещи, которые вас смущают, тогда jQuery может смешаться и, так сказать, преодолеть ментальный разрыв.Здорово ездить на роскошном транспортном средстве, но какая польза от этого, если вы не знаете, как заменить шину, когда она ровная?Лучшие разработчики jQuery - это те, кто хорошо знает JavaScript и знает, когда использовать jQuery, а когда использовать простой JS.

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

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

1 голос
/ 02 апреля 2011

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

Что касается другого фактора, то он действительно зависит от того, что вы пытаетесь сделать.

1 голос
/ 02 апреля 2011

Насколько я понимаю, jQuery фактически не поддерживает карту домена в памяти, а просто использует кросс-браузерные методы для прогулки по дому. В некоторых браузерах что-то обычно будет быстрее, чем в других (например, селектор на основе классов в Firefox будет быстрее, чем в IE, потому что IE не имеет встроенной функции для getElementsByClassName, а Firefox делает). Если вам не нужны методы фреймворков для выполнения каких-либо задач, я бы сказал, что вы можете использовать нативный JS, поскольку это, как правило, то, что вы выбрали для фреймворка.

0 голосов
/ 02 апреля 2011

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

Посмотрите по этой ссылке: http://www.webkit.org/perf/slickspeed/ который запускает тест скорости.Это более старая версия jQuery, но результаты с точки зрения сырой скорости говорят сами за себя.

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

0 голосов
/ 02 апреля 2011

Я работал над проектом с большим количеством javascript.Я обнаружил, что почти каждый раз, когда в моем коде возникала кросс-браузерная ошибка, это было в месте, где у меня был такой код:

var element = $(selector);
// lots of code ...
element[0].someVanillaOperation();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...