Я изучил jQuery, я должен возвратиться и изучить “надлежащий JavaScript”?

Я знаю, что Вы просите библиотеку. Если Вы не можете найти один (:: испуг:: Вы думали бы, что это было решенной проблемой!), вот схема для решения:

необходимо быть в состоянии записать генератор кода [1] для сериализации деревьев/графиков без (времени выполнения), предварительно обрабатывающего справедливо просто.

необходимо ли будет проанализировать структуру узла (typedef обработка?), и запись включенные значения данных в прямо вперед виде, но обработке указатели с некоторой осторожностью.

  • Для указателя на другие объекты (т.е. char *name;), который Вы знаете , отдельно ссылаются, можно сериализировать целевые данные непосредственно.

  • Для объектов, которые могли бы быть, умножают refernced, и для других узлов Вашего дерева необходимо будет представить структуру указателя. Каждому объекту присваивают номер сериализации, который является тем, что выписано оперативный из указателя. Поддержите структуру перевода между текущим положением памяти и числом сериализации. При обнаружении с указателем посмотрите, присваивают ли ему уже номер, в противном случае дайте его один и очередь, которые возражают для сериализации.

Чтение назад также требует node-#/memory-location шаг перевода и могло бы быть легче сделать в двух передачах: повторно создайте узлы с числами узла в слотах указателя (неверный указатель, быть предупрежденными) для обнаружения, куда каждый узел помещается, затем обойдите структуру, снова чинящую указатели.

я ничего не знаю о tpl, но Вы могли бы быть в состоянии осуществить контрейлерные перевозки на нем.

формат on-disk/network должен, вероятно, быть структурирован с некоторой информацией о типе. Вам будет нужна искажающая имя схема.

[1] КОРЕНЬ использование этот механизм для оказания очень гибкой поддержки сериализации в C++.

Последнее дополнение: мне приходит в голову, что это не всегда столь легко, как я подразумевал выше. Считайте следующее (изобретенным и плохо разработанным) объявлением:

enum {
   mask_none = 0x00,
   mask_something = 0x01,
   mask_another = 0x02,
   /* ... */
   mask_all = 0xff
};
typedef struct mask_map {
   int mask_val;
   char *mask_name;
} mask_map_t;
mask_map_t mask_list[] = {
   {mask_something, "mask_something"},
   {mask_another, "mask_another"},
   /* ... */
};
struct saved_setup {
   char* name;
   /* various configuration data */
   char* mask_name;
   /* ... */
};

и предполагают что мы initalize struct saved_setup объекты так, чтобы mask_name точки в mask_list[foo].mask_name.

, Когда мы идем для сериализации данных, что мы делаем с struct saved_setup.mask_name?

необходимо будет заботиться в разработке структур данных и/или принести некоторую определенную для случая аналитику к процессу сериализации.

13
задан Gordon Gustafson 15 March 2010 в 21:01
поделиться

18 ответов

No.

The move to frameworks is driven by years of frustration over the browser-dependencies and sheer dislike for many of the original decisions made in the design of Javascript. Note that you are still working in Javascript though so it isn't really fair to say "learn Javascript" so much as "explore the areas of Javascript now handled by JQuery."

With respect to your attractiveness to a prospective employer, I'm pretty certain that JQuery would be a better skill to list on a resume than Javascript (I know it would in our shop). If you think about it, employers who care enough to do good client-side development will expect prospective employees to have experience with tools like JQuery. Those who don't care as much about client-side development simply won't make client-side skills - including Javascript - a priority. Indeed, if you are going to spend your time learning more about the client side, I'd recommend learning another client-side framework (e.g. YUI or Ext). Not only will it make you more valuable, it will almost certainly require a certain degree of exposure to more of Javascript's idioms due to differences in the frameworks.

Update - Rohan makes a good point about learning Javascript: that it may help you code more efficiently and effectively in JQuery. I agree in the abstract but I would personally be a bit hesitant to put too much effort in this area. As a long (long) time developer, I've learned to be very focused on the payoff from investments of time and effort. There is much to learn in the world, and only so much time to learn it. The time I spent learning how to write ISAPI dlls, for example, has paid very little compared to the investment.

Update 2 - A few people are making the argument that JQuery is slower than raw Javascript. Is anything ever new? This same argument about "raw" development versus frameworks has been going on for decades!

In this case it is especially perplexing, though. In my experience, people who adopt a client-side framework actually end up delivering client-side functionality. Those that don't tend to get locked into server-side solutions because of the inherent difficulty of handling DOM incompatibilities across browsers, Javascript idiosyncrasies, etc. Thus, recommending Javascript "for speed" misses the whole dynamic where a pure Javascript site is very likely to be slower because developers end up falling back on Server-side code just to stay productive.

14
ответ дан 1 December 2019 в 17:14
поделиться

Вы должны знать, что он абстрагирует от вас, но вам не нужно изучать все это. jQuery для «чистого» javaScript подобен ASP.net для «чистого» HTTP. Вы должны знать основные концепции (особенно потому, что это помогает отлаживать и решать некоторые действительно сложные ошибки и проблемы), но вам не нужно становиться гуру в этом.

0
ответ дан 1 December 2019 в 17:14
поделиться

Да!

Использование уровня библиотеки или абстракции означает, что вы будете «абстрагированы» от базовой логики языка, даже когда вам нужно выполнить любую простую задачу. Библиотеки созданы для ускорения задач программирования и разработки, а не для того, чтобы всегда зависеть от них.

0
ответ дан 1 December 2019 в 17:14
поделиться

I think it is certainly worth the time to learn the core language. If you only know the framework, then you're locked into the framework's way of doing things.

While the frameworks offer much more powerful and cleaner code in many cases, sometimes it is overkill and there is a much simpler solution to a problem in the core language.

0
ответ дан 1 December 2019 в 17:14
поделиться

Хорошо знать, как хорошо программировать на JavaScript, потому что знание jQuery не защитит вас от написания небезопасного и неэффективного кода. Это просто даст вам несколько инструментов для ускорения написания кода.

1
ответ дан 1 December 2019 в 17:14
поделиться

Я в значительной степени нахожусь в лагере «не беспокойтесь, пока не понадобится». Фактически, я считаю своего рода преждевременной оптимизацией погружаться в основной язык, если в этом нет необходимости. Хотя вам действительно может потребоваться выжать каждую миллисекунду из скрипта, пока он пригоден для использования, я бы сказал, не беспокойтесь.

Даже в этом случае jQuery позволяет вам перемещаться, чтобы освободить место с помощью оптимизации селектора и тому подобного.

Конечно, это мог быть я говорю от боли, причиненной "правильным" javascript за все те годы до появления этих замечательных фреймворков :)

2
ответ дан 1 December 2019 в 17:14
поделиться

I think not knowing it can definitely be a professional disadvantage down the line. For example, I had a job where we used jQuery exclusively, and when I recently moved to a new job, they use YUI exclusively. If I didn't know "raw' JavaScript, I would have a much harder time picking up a new framework.

4
ответ дан 1 December 2019 в 17:14
поделиться

Это не относится к Javascript, но изучение понятий более низкого уровня часто может помочь при написании кода более высокого уровня. Речь идет об изучении «почему», а также «как».

Так что, если у вас есть время и мотивация, я бы порекомендовал это.

4
ответ дан 1 December 2019 в 17:14
поделиться

Not where it overlaps

You already need to know some "pure" javascript for things like string and array manipulation, right? Beefing up on that stuff could be good.

And there may be specific cases - like making bookmarklets - where knowing how to find a DOM element with straight JS would be useful.

But for most production code, a good JS framework is so much better that I think using pure JS is silly.

Learn what you can actually use, but if it's purely academic, I'd say spend that time learning another, truly relevant, skill.

5
ответ дан 1 December 2019 в 17:14
поделиться

Это не имеет значения, если вы помните Закон дырявых абстракций .

0
ответ дан 1 December 2019 в 17:14
поделиться

actually, yes. After a few years of jQuery, it's good to learn JS so that you know whats going on behind the abstraction layer that jQuery sets up. It will help you work better with jQuery or any other framework you might move to.. also it'll help you modify those frameworks if such a need ever arises.

5
ответ дан 1 December 2019 в 17:14
поделиться

Yes.

More often than not jQuery is slower at performing tasks. If you know how to do it in plain JS you can come back and optimize the slower parts of your page.

10
ответ дан 1 December 2019 в 17:14
поделиться

Unless you want to make JS a core competency, I think you're good.

2
ответ дан 1 December 2019 в 17:14
поделиться

Это зависит. Если вы спрашиваете о манипуляциях с DOM , у них есть много причуд и несоответствий между браузерами. Хотя это может быть полезно знать, в большинстве случаев ваша структура ограждает вас от того, чтобы беспокоиться о них. Изучать все самостоятельно - это полезно, но сложно.

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

25
ответ дан 1 December 2019 в 17:14
поделиться

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

2
ответ дан 1 December 2019 в 17:14
поделиться

ИМО, вы уже ответили на этот вопрос, сказав: «Я разработчик на стороне сервера». Вы тоже хотите сделать внешний код? Если так, изучение JavaScript (и фреймворка) выделит вас. Лично я думаю, что это делает вас более сильным разработчиком, если у вас есть базовое понимание противоположной области, над которой вы работаете - вы можете делать лучшие предположения и кодировать вызовы при работе над групповым проектом, когда понимаете, над чем работают фронтенд-ребята. (или, возможно, предложите им решение для работы).

Как все говорят - это зависит от ваших долгосрочных целей и от того, каким разработчиком вы хотите, чтобы вас считали.

1
ответ дан 1 December 2019 в 17:14
поделиться

Для javascript я всегда использую фреймворк (jQuery / mootools), будет ли это профессионал недостаток для меня в будущем?

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

Стоит ли тратить время на обучение? прямой javascript, или большинство разработчики переходят на фреймворки в любом случае?

Я бы сказал, что каждый JS-разработчик использует ту или иную библиотеку, но они все равно должны знать язык, который они используют. Библиотека / фреймворк - это просто библиотека кода, построенная на языке. Вам все еще нужно знать тонкости языка. Например, знаете ли вы, в чем разница между == и ===?

Кроме того, если есть проблема с библиотекой, которую вы используете, и вам нужно вникнуть в нее, разве знание языка не поможет?

Если у вас есть время, я настоятельно рекомендую что-то вроде этого, видео от Дугласа Крокфорда на Javascript.

2
ответ дан 1 December 2019 в 17:14
поделиться

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

Если вы хотите написать некоторые из этих пакетов или переработать их. Обязательно нужно знать хороший синтаксис и хорошее кодирование.

Если вы хотите получить всю мощь новых элементов HTML5, взаимодействовать со своими JSON AJAX blobs и начать передачу большого объема управления данными на стороне клиента, управление локальными базами данных, запуск Workers выполняет множество задач в фон и создание реальных приложений javascript, вы просто держите jQuery там, где он есть: мощную библиотеку среди прочего, которую вы будете использовать для управления DOM.

0
ответ дан 1 December 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: