Я довольно эффективен в jQuery, имея реализацию его в нескольких проектах для моей компании. Однако я нашел меня немного потерянным при чтении материала как node.js
.
Я должен вернуться к основам и выучить язык сценариев JavaScript, или я должен просто придерживаться jQuery?
Еще одна вещь я хотел бы спросить: кодирование в плоскости выполнение увеличения JavaScript по сравнению с кодированием с jQuery? Для моего собственного опыта, кодируя тяжелую, сложную комбинацию анимации в jQuery всегда, кажется, поднимает большую сумму памяти компьютера.
Вы должны понимать что происходит, до определенной степени. Не помешает знать, что находится под ним, но иногда знать все тоже не оптимально, например: соответствует ли .innerHTML
? Не полностью, например, в IE. Значит ли это, что вам нужно знать все несоответствия? Нет, если вы позволите jQuery справиться с этим.
Люди говорят, что нужно понимать JavaScript до jQuery, позвольте мне сказать, что я согласен, однако есть ограничения на это, вам не обязательно знать каждую причуду и несоответствие между браузерами, например, именно поэтому мы используем слой абстракции.
Для меня это не отличается от того, чтобы сказать, что вам нужно выучить ассемблер перед C#, вы должны знать, что происходит, как ссылается память, что такое указатель? Думаю, да, но нужно ли знать каждую деталь? Наверное, нет. Мы никогда не продвинемся вперед, если каждый новый программист будет изучать каждый слой, лежащий под ним, вот почему математические теоремы строятся на основе других, известных как истинные, та же концепция.
Вы должны быть в состоянии доверять своему слою абстракции . Всегда ли это так? К сожалению, нет, но jQuery делает очень хорошую работу, чтобы быть настолько последовательным, насколько это возможно, и постоянно совершенствоваться. Что еще более важно, сообщество делает хорошую работу, чтобы сделать несоответствия известными.
Редактировать: Позвольте оговорюсь, если вы можете узнать, что лежит в основе сделайте это (это относится почти к любой абстракции в моей книге, не только к JavaScript), это поможет вам программировать лучше и эффективнее. Если вы знаете, что происходит под абстракцией, вы сможете более оптимально использовать ее преимущества.
Если вас интересует только прикладное программирование (веб-сайты и приложения), то jQuery более чем достаточно. Если же вы хотите разработать JavaScript-фреймворк или библиотеку, то необходимо глубокое знание языка JavaScript.
jQuery - это просто список (очень) полезных функций, написанных на JavaScript.
Вы просто используете библиотеку, не понимая, что за ней стоит и как все работает. В большинстве случаев вам понадобится jQuery только для 20–40% вашего кода, а остальное будет чистым JavaScript, поэтому я рекомендую вам изучить основы . Это хорошие места для начала:
Не обязательно, это все равно что сказать, что хорошо разбираться в Java - это то же самое хорош в байтовом коде, поскольку использует байтовый код.
На самом деле это очень похоже на яблоки и апельсины. jQuery - отличная библиотека, но она фокусируется на манипуляциях с DOM. Это не очень поможет вам в общем кодировании, наследовании прототипов, замыканиях, типах данных и других важных вещах, с которыми вам придется иметь дело при программировании.
node.js не имеет ничего общего с DOM, поэтому он очень ортогонален jQuery, поэтому неудивительно, что у вас возникли проблемы с его пониманием.
Обратите внимание, однако, что знание JavaScript не обязательно означает, что вы будете эффективны с любой доступной библиотекой JavaScript. Каждая библиотека представляет собой своего рода надмножество языка, специфичный для предметной области язык, помогающий решить конкретную задачу, для решения которой была создана библиотека. Вам всегда придется сначала изучить этот DSL, чтобы быть эффективным, но вам будет легче понять внутреннее устройство любой данной библиотеки, если вы хорошо знаете JavaScript.
Я немного неоднозначен по этому поводу. Знание по-настоящему глубокого JavaScript - это великое искусство. Я всегда пребываю в трепетном молчании, когда к столу подходит один из наших постоянных глубоких экспертов по JavaScript. Однако не всем нужны такие глубокие знания - если вы сосредоточены на создании интерфейсов, хорошее знание одной из фреймворков может быть всем, что вам когда-либо понадобится, с очень немногими крайними случаями.
С другой стороны, знание хотя бы основ того, как работает JavaScript изнутри, может быть только полезным. Если вы чувствуете желание взглянуть на это, я бы посоветовал сделать это. Вам не нужно становиться полным гуру в фундаментальном JavaScript, но иметь базовое представление о том, как данные обрабатываются внутри, как события обрабатываются браузером, как управляется память и т. Д. - это хорошо.
Означает ли хорошее владение jQuery хорошим знанием JavaScript?
Нет. Я настоятельно рекомендую выучить основы, а затем еще немного.
jQuery - это просто библиотека. Хотя продуктивно, хорошо разбираться в функциональности, которую предоставляет библиотека, - это не то же самое, что хорошо владеть языком, на котором написана эта библиотека.
Я не говорю, что вам нужно знать, что все побитовые операции преобразуются в 32-битные целые числа со знаком в порядке обратного порядка байтов , но вам нужно знать об основных концепциях, таких как замыкания , о том, как правильно подключать обработчики событий, и об основных концепциях. асинхронного / событийно-ориентированного программирования.
Что, если бы вы перешли на другую работу в компанию, которая использует ExtJs вместо jQuery? Понимание основных концепций языка сделает такие переходы несложными.
Еще одна вещь, которую следует учитывать, - это то, что для каждой библиотеки всегда есть задача, которую она не поддерживает. Если вы всегда будете полагаться на библиотеку, чтобы выполнять тяжелую работу, это в конечном итоге укусит вас за задние части.
Повышает ли кодирование на простом JavaScript производительность по сравнению с кодированием с помощью jQuery?
Библиотеки обычно стремятся быть как можно более универсальными для той области использования, на которую они нацелены. Из-за этого может возникнуть неэффективность в некоторых сценариях, которые в противном случае можно было бы оптимизировать за пределами библиотеки.
Все зависит от того, насколько хорошо вы разбираетесь в JavaScript, выборе / создании / анализе алгоритмов и программировании в целом.Когда вы начинаете думать о том, чтобы работать с максимальной эффективностью, вам действительно нужно уметь разбираться в тонкостях языка. «Хорошее знание» jQuery или любой другой библиотеки в этом отношении, скорее всего, не поможет вам в этом (если только вы не заглянете под капот и не реализуете их методы в манере, специфичной для вашего сценария).
jQuery - это слой абстракции для JavaScript, и по этой причине большую часть времени вы будете делать все это на jQuery, а не на JavaScript. Тем не менее, всегда полезно иметь некоторые знания JavaScript, по крайней мере, для необходимых частей.
По этой причине, если вы увидите любую книгу по jQuery, то в большинстве из них есть глава или индекс, посвященные "Основам JavaScript" или "JavaScript для jQuery".