@defect00
Идущий за мечтой.

Как систематизировать изучение JS?

Добрый день!
Начал изучать js после php, есть базовые понимания в программировании.
Но суть вопроса в том, что JS сам по себе язык очень обширный, и изучение его до хорошего уровня может занять далеко не месяц...
Моя цель - клиентский джс. На данный момент изучаю основы языка. Что как работает, базовые команды \ функции и тд. Изучаю по книге О`Райли JavaScript подробное руководство + сайт https://learn.javascript.ru/ и сайт с оф. документацией.
В каком направлении двигаться, как изучать язык, как построить последовательность обучения?
Думаю, основная цель - понимать клиентский js, с написанием собственной "библиотеки" для своих проектов и использовать Vue JS.
  • Вопрос задан
  • 1699 просмотров
Решения вопроса 1
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Существенные грабли, которые очень важно осознать - PHP синхронный, в целом, язык, а JS, в целом, асинхронный. Поэтому тут многие подходы из PHP либо работают плохо, либо не работают вообще.

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

Еще нужно осознать, что в JS всё (ну или почти всё) есть объект, а, так же, как работает прототипное наследование и замыкания, как работает так называемый Event Loop в совокупности с Call Stack.

Научиться мыслить цепочками вызовов т.к. многие методы в JS поддерживают chaining. Например
const s = '1234567890';
const onlyEvens = s.split('').filter(e => (+e % 2) !== 0).join('');


или даже так

const onlyEvens = '1234567890'.split('').filter(e => (+e % 2) !== 0).join('');


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

Вообще мне хорошо мозги на место поставил курс по ES v5 Javascript: Understanding Weird Parts ну или примерно то же самое но на русском у ZORAX. У Кантора тоже все великолепно разложено по полочкам, но он просто жесть какой нудный (имхо).

А потом просто очень много практики, лично я тупо решал всё подряд на кодварс.

А еще чтобы лучше что-то понять, начни объяснять это другим. :) Я так однажды замыкания объяснил кому-то, что аж сам понял... :D

P.S.: Раз ты говоришь что у тебя есть опыт в программировании, возможно тебе будет не актуально, но я все равно скажу, т.к. всегда говорю это - алгоритмы и структуры данных, без них никуда, от слова совсем.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Stalker_RED
@Stalker_RED
Если это не первый язык, то основы синтаксиса вы быстро освоите.

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

Приведение типов немного отличается от PHP, надо привыкнуть.

Дальше всякие специфические js штуки, типа замыканий и странноватого this, с ними можно долго возиться.

Асинхроность отдельным пунктом.

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

И затем фремворки и библиотеки.

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

Учебник https://learn.javascript.ru/ неплох, но можно почитать и бумажную книгу какую-то.

Отдельные темы неплохо расписаны на mdn, но все-же это в первую очередь крутой справочник, а не структурированный учебник.

Основы языка можно потренировать на codewars. Очень круто, если решаешь задачу не подглядывая, а потом сравниваешь свой код с топовыми ответами и разбираешься почему у них 7 строчек, а у тебя 30. Но надо вовремя остановиться и не увлечься написанием всякой нечитаемой фигни.
Ответ написан
@dimoff66
Кратко о себе: Я есть
По шагам:
1. Базовые конструкции языка
2. Функции работы со строками, массивами и объектами
3. Работа с DOM
4. Функции и замыкания
4. ООП посредством функций
5. ES6 (все полностью)
6. Любой фреймворк
Ответ написан
Комментировать
yurakostin
@yurakostin
Front-end developer
Ссылок, собственно, дофига..

https://learn.javascript.ru/
https://github.com/getify/You-Dont-Know-JS
jstherightway.org
largescalejs.ru
shop.oreilly.com/product/9780596517748.do
https://habr.com/company/ruvds/blog/337042/

У Кантора вполне себе систематизированный учебник. Именно с него я начал, когда понял, что jquery для меня недостаточно.
Но дело не только в том, что вы читаете учебник. Я уже 100500 раз, наверное, это говорю, но:
1. Вы должны решать все задачи, которые есть в списке задач к главам.
2. Важно ещё пытаться применить полученные знания где-то: в своей работе, или в какой-то выдуманной задаче. То есть, например, нужно использовать `Array.prototype.filter` столько раз, чтобы не возникало больше вопросов "как оно работает?", чтобы руки "помнили".

Разумеется, это всё нужно для того, если вы хотите во фронт. Пласт информации огромный. Сам js, браузерные API, и прочее-прочее..

Может быть, что всё выше - оффтоп, но дело в том, что нет систематизированного подхода, как мне кажется.
Есть знакомые, которые умеют работать только с DOM-ом и событиями, а как работать с данными в js, что такое замыкания - не знают. А сайт Ильи Кантора им почему-то кажется сложным.

Просто решайте разные задачи: работайте с данными; рисуйте на canvas, svg; манипулируйте DOM-ом; используйте service worker-ы; etc.. Это и будет расширять ваш кругозор..
Но начать я бы советовал всё-таки с учебника Ильи ;)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы