Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как правильно соединить клиентский JS и серверный JS c базой данных?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Это смотря на чем сервер. Если на Node.JS, то коннектится он при запуске скрипта, а когда получает запрос, то через уже существующий коннект просто сходит в базу, причем, скорее всего, асинхронно, так-что, тут даже лучше будет если не по аяксу данные запрашивать с сервера, а через вебсокеты. Запросил, через какое-то время сервер сам данные пришлет и отработает событие.
    Ответ написан
    Комментировать
  • Как повысить уровень программирования?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    От 10 до 20 тысяч часов практики с постоянным самосовершенствованием, обязательно стараясь не наступать на одни и те же грабли в перспективе, с достаточным количеством здоровой лени, регулярно возвращаясь к своему коду былых лет.

    Код надо стараться писать так, словно после тебя с ним будет работать психопат, который знает где ты живешь. :)
    Ответ написан
    Комментировать
  • Что такое замыкание?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    В целом ты все верно понял. Почитал я тут ответы, термины, термины, термины...

    Я люблю простые объяснения, буквально на пальцах.

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

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

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

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

    Один из основных паттернов, для которых применяются замыкания - ограничение доступа к данным, их изоляция (ограничение их области видимости).

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

    В ответах есть пример со счетчиком, который наглядно демонстрирует этот принцип.
    Ответ написан
    2 комментария
  • Как лучше изучить теорию JavaScript?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Самое сложное для начинающего не понять как делать или что делать, а понять зачем делать.

    Ты читаешь книгу, там очень умный человек объясняет тебе что вот в таких случаях делай вот так и так, а в эдаких - эдак. А ты не понимаешь зачем он этим тебя грузит, т.к. в твоей картине мира эти проблемы еще не существуют.

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

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

    Выработать эти микрорефлексы возможно только активно практикуясь и больше никак.

    Приглашаю тебя на Codewars - www.codewars.com/r/pj8ELg, там ты сможешь бесплатно попрактиковаться вволю, со своей стороны готов оказать тебе посильную наставническую поддержку.
    Ответ написан
    2 комментария
  • Как научиться делать сортировки любой сложности в JavaScript?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Попробуй посмотреть в сторону Lodash/Underscore, там есть масса оптимизированных методов для, в т.ч., и сортировок по нескольким полям в разных направлениях.
    Ответ написан
    Комментировать
  • Как научиться писать самостоятельно код?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Когда я только начинал учиться программированию, то для меня даже документация казалась темным лесом, потому что ну почитал я что делает команда, а зачем она это делает - не понятно...

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

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

    Так же очень полезный навык - декомпозиция. Слона или кита нужно есть частями. Другими словами большую задачу дробим на логически обособленные части, сами части дробим еще, до тех пор, пока каждую маленькую часть не сможем решить кодом размером в 1-2 экрана. Тщательно тестируем на всякие редкие и крайние ситуации. Оформляем этот код в виде модулей, далее собираем как из кубиков "Лего" нужный результат. Тестируем связки компонент, на моем опыте примерно половина времени уходит на продумывание и гугление, от оставшегося времени 90% уходит на дебаггинг и тестирование, и только примерно 5% совокупного времени реально идет на собственно кодинг.
    Ответ написан
    Комментировать
  • Порядок изучения react.js?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Фейсбук подключился к теме быстрого старта с реактом. Не секрет, что, по хорошему, чтобы разрабатывать быстро и удобно, нужно некисло заморочиться с бойлерплейтом, коих тысячи их. Сам прохожу через эту боль активно, и вот на днях, наконец то, хвала яйцам и курицам, наконец вырулил на годную тему (как мне кажется).

    Очень рекомендую. https://www.fullstackreact.com/articles/using-crea...
    Ответ написан
    Комментировать
  • Модульность на фронтенде?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я за React+Webpack
    Ответ написан
    Комментировать
  • Как реализовать быстрый поиск в массиве объектов по значению свойства?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Обходить миллионные массивы при каждом чихе - это жесть.

    Необходима индексация!

    Создаем отдельный массив, ключами которого будут города, а значениями - массивы с ссылками на элементы исходного массива. Таким образом все записи с определенным городом будут доступны одной простой выборкой по ключу из индекса.

    Если исходный массив постоянно меняется, то в прототип необходимо добавить функцию, которая будет отслеживать эти изменения и обновлять индекс.
    Ответ написан
    Комментировать
  • Как разделить даты по месяцам в массиве?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Это не массив дат, это массив строк, похожих на дату.

    Т.к. структура строк идентична и форматирована, и заранее известно где находится значение месяца в каждом элементе массива, то я бы строковыми функциями (javascript.ru/string/substr) вынимал бы значение месяца, проверял, есть ли в результирующем массиве нужный раздел (по номеру месяца), если нет то создавал его пушем, далее в него пушем складывал бы значение.

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

    ЗЫ: Код за тебя я писать не буду, не грусти. :)
    Ответ написан
    Комментировать
  • Задачи по javascript?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Мне нравится как организовано все в кодеварс, там и разминаю мозги на досуге...
    Ответ написан
    Комментировать
  • Как развиваться начинающему web-разработчику?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я в начале 2000-х писал приложение для учета некоммунальных услуг ЖКХ для местного МУПа. Начинался этот проект как тестовое задание для приема на работу.

    Писать можно было на чем угодно, но на тот момент для меня лучшим инструментом казался Clipper 5.x, которым я, как мне тогда казалось, более-менее владел.

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

    Забегая вперед скажу, что автоматизация, в конце концов, удалась, из режима работы 3 человека по 8 часов в день 6 дней в неделю, за 6 месяцев после начала внедрения, вышли в режим 1 человек 2 часа в день 5 дней в неделю... Т.е. 3*8*6*4 = 576 человеко-часов превратилось в 2*5*4 = 40 ч/ч, КПД был увеличен в 14.4 раза.

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

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

    Далее я реализовывал эти пути как разумел и предоставлял тётушкам.

    И о чудо, обычно на этом этапе прорезался дар речи (тётушки, как все нормальные люди, обожают критиковать то, что по их мнению "не так"), и на меня начинал сыпаться поток весьма конкретных и ёмких ЦУ (ценных указаний), которые я подробно документировал и впоследствии претворял в жизнь.

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

    Первые месяцы они вели двойной учет, по старинке в своей огромной бухгалтерской книге, и в программе, и программу проверяли по книге. Через 2-3 месяца они убедились, что в программе "цифры" точнее, ошибки отлавливаются быстрее, меньшими усилиями, и стали уже свою книгу проверять по программе. Через 5-6 месяцев я написал им модуль расчета и распечатки месячного отчета, и они перестали вести свою книгу, просто печатали ее каждый месяц на огромном матричном принтере.

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

    Условно можно разделить основной функционал приложения на 2 фазы - ввод/редактирование/просмотр данных и построение отчетов/выборок. С отчетами и выборками тёмный лес, т.к. требования меняются непредсказуемым образом любое количество раз в году (по началу), а вот с вводом и редактированием данных в целом ситуация стабильная, тем более за предыдущие 3 версии я достаточно хорошо исследовал этот процесс.

    Ввод/редактирование данных осуществляется посредством форм, которые, в общем случае, повторяют структуру таблицы БД, за исключением случаев, когда присоединяются поля из справочников.

    Я вообще по натуре человек ленивый, и вместо того чтобы 100 раз метнуться и что-то по мелочи исправить, я предпочитаю долго запрягать, а потом быстро и беззаботно ехать.

    Первейшая проблема программ на Clipper 5.x это банальное отсутствие таблиц БД, либо слетевшие индексы. Это первое, чем я озаботился. программа при запуске проверяет наличие или отсутствие таблиц и индексов, и чего не хватает - достраивает на лету. Таким образом можно потерять данные, но программа, все равно, работать будет. Чтобы это стало возможным, потребовалось в программе прописать структуры таблиц БД и индексов.

    Вторым этапом, дико устав копипастить на 95% совпадающий код для построения форм, а, потом, когда надо что-то поменять, добавить или исправить, шариться по тоннам на 95% идентичного кода в сотне мест, я решил прибиться к стану метапрограммирования.

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

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

    Причем генератор грамотно отрабатывал множественную вложенность, и каждый вызываемый справочник имел полный функционал CRU (Create, Read, Update), включая фильтрацию по столбцам и сортировку.

    Таким образом я создал мощный и гибкий генератор интерфейсов, а разработка CRU-части приложения сводилась к разработке описания структур таблиц, индексов и метаописания форм.

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

    Для реализации этого функционала пришлось пропатчить стандартный грид TBrowse (он применяется для просмотра таблиц).

    Резюме следующее - для построения грамотной архитектуры необходимо иметь минимальный опыт в пару-тройку тысяч часов бурного кодинга, и успеть собрать основные грабли, успеть устать от боли копипасты и дебаггинга. Так же нужно досконально понимать и видеть целиком предметную область. Тогда из человеческой лени и стремления к идеалу, и будет рождаться некая архитектура, причем у каждого она будет своя, индивидуальная.

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

    P.S.: когда я мигрировал в веб, через некоторое время я снова вынужден был пройти аналогичный путь, в результате которого родился простенький AJAX-фреймворк на стеке PHP+Smarty+DBSimple+jQuery. Сегодня я всеми силами стараюсь от него уйти, хотя для своих задач он достаточно хорош. Был опыт, когда на шареном хостинге за 5 баксов проект на этом фреймворке со скрипом но держал 30-40 тысяч уников в сутки (после ряда оптимизаций) и достаточно хорошо был защищен от топорного взлома через SQL-инъекции благодаря DBSimple...
    Ответ написан
    1 комментарий
  • Лучшие книги для изучения JavaScript в области разработки интерфейсов (Frontend)?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Вот тут подробно и по полочкам весь JavaScript (ES5) разложен. Разумеется для тех, кто понимает инглиш на слух... Увы...

    https://www.youtube.com/watch?v=Bv_5Zv5c-Ts

    Тут начало, первые 3.5 часов, продолжение надо поискать самостоятельно.
    Ответ написан
    Комментировать
  • Кто как делает html формы?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я много, долго и упорно делал на jQuery+Vanilla JS сложные динамические формы, которые строил генератор по мета-данным.

    После одного особо зубодробительного проекта, где в форме была куча нелинейных зависимостей (интеграция потоков данных для циан и внутренней CRM заказчика), когда через некоторое время зависимости нужно было изменять в виду изменившихся условий работы, я познал боль. :)

    К тому же прямые манипуляции на DOM для меня стали еще большим злом.

    В общем от jQuery как основного движка на фронтенде я отказался категорически, сейчас плотно изучаю React+Redux и ище с ними, предварительно проведя исследования по основным мейнстримовым фреймворкам и библиотекам для фронтенда.

    Мне зело симпатишна идея рулить состоянием, а чтобы интерфейс при этом выстраивался автоматически.

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

    В совокупности с ES-2015 это всё становится приятнее и интереснее.

    Да, безусловно, есть там и свои проблемы, тем не менее прогресс не стоит на месте.
    Ответ написан
    Комментировать
  • Как считать пустым элемент даже с пробелами?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я отказался от прямых динамических манипуляций в DOM посредством хоть jQuery, хоть Vanilla JS. На мой взгляд это зло, которое ведет к полной и тотальной непредсказуемости поведения приложения и формированию обширного поля для неуправляемых багов.

    Наш путь - React.JS, когда интерфейсы генерятся из данных, а ты меняешь только данные.
    Ответ написан
    Комментировать
  • Как реализовать алгоритм частоты появления?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я бы решил эту задачу так - каждому объекту присвоил бы счетчик, который инкрементируется при показе объекта.

    Т.е. 100 объектов - 100 счетчиков.

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

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

    И так каждый раз. Таким образом получаем отображение наименее показанного объекта с учетом приоритетов минимальными усилиями и с достаточно прозрачной логикой.
    Ответ написан
    Комментировать
  • Ресурсы на углублённое изучение JavaScript с примерами?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Такой вид деятельности человека, как разработка программ, состоит из нескольких составляющих.

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

    Вот допустим ты раздобыл инструмент и даже пару гвоздей забил им. Хорошо. Теперь перед тобой стоит задача построить сарай, и ты, вдруг, понимаешь, что кроме забивания гвоздей нужно еще кое-что:
    1) Нужно определить место, где будет построен сарай
    2) Нужно определиться с размерами сарая
    3) Нужно набросать некий план устройства сарая (гайдлайн/проект)
    4) Нужно прикинуть количество и виды строительных материалов
    4.1) Допустим строим самый простой деревяный сарай:
    4.1.1) Нужно посчитать брус под опоры (каркас)
    4.1.2) Нужно посчитать облицовочный брус
    4.1.3) Внезапно сараю нужны ворота
    4.1.4) Так же сараю нужна крыша, так-что в пункт 4.1.1 внезапно добавляем брус под каркас крыши
    4.1.4.1) Крышу решили облицовывать шифером, так-что закладываем шифер, предварительно посчитав площадь покрытия
    4.1.5) Оказалось что с земли строить сарай не удобно, нужна лестница
    4.1.6) Брусья оказались весьма тяжелыми, так-что нужна либо лебедка, либо помощники, а лучше то и другое сразу
    4.1.7) Опоры оказывается нужно заглублять в землю на полтора метра, иначе получается неустойчивая конструкция - пришлось озаботиться выкапыванием ям под опоры. Ломом это делать оказалось долго и муторно, да и лом пришлось приобрести
    4.1.8) Сосед подсказал, что если просто закопать опоры, то они сгниют за два года. Нужно опоры просмолить. пришлось купить бочку смолы и соорудить печь, чтобы смолу разогреть.
    4.1.9) Гвозди сотки забивать в доски и опоры простым молотком оказалось неудобно, пришлось приобрести молоток помощнее, но он оказался тяжелым и руки быстро устают. Работа идет очень медленно
    4.1.10) Сосед подсказал крепить доски саморезами. Пришлось купить саморезы и шуруповерт
    4.1.11) Аккумулятор у шуруповерта оказался слабый, он 10 минут работает и полтора часа заряжается. Пришлось купить еще один, работающий от розетки
    4.1.12) Второй шуруповерт За пол-часа разогревается так, что рискует расплавиться. пришлось купить еще одиин и работать ими попеременке
    4.1.13) Вот сарай построен, ворота установлены, оказалось что на ворота нужен замок
    4.1.14) Еще в сарае очень темно, пришлось провести туда электричество, для этого пришлось вкопать пять столбо ви приобрести 200 метров кабеля, и прочую электрическую мелочь типа выключателей
    4.1.15) По дереву монтировать проводку необходимо внавес, чтобы кабель не контактировал с деревом, пришлось заморочиться
    4.1.16) Зимой сарай оказался очень холодным, дерево промерзает и сыреет. Пришлось задуматься об утеплении сарая снаружи, но это летом, пока терпим.

    Ну и так можно проодлжать до бесконечности.

    А теперь, внимание, вопрос - а при чем здесь вообще молоток?

    PS: Разумеется когда ты построишь десяток-другой разнообразных сараев, многие из этих вопросов ты будешь обдумывать заранее, стало быть сюрпризов станет гораздо меньше, а сбываемость прогнозов гораздо выше. Тем и ценен опыт - сын ошибок трудных.
    Ответ написан
    Комментировать
  • Как подходить к решению нетривиальных задач?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Сам там балуюсь по мере свободного времени, сил и желания, чисто для поразмять мозги, т.к. в олимпиадах я участвовал давно, последний раз аж в 1998 году. Пруф: https://www.codewars.com/users/iCoderXXI

    У меня не всегда получается сразу понять чего хочет автор задачки, приходится перечитывать раз по десять-дцать, вникать, в принципе как и в реальных боевых задачах в жизни. Всегда стараюсь построить в голове работающую модель процесса, так сказать в динамике, входящие и исходящие сигналы (данные), логику, алгоритмы.

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

    Часть задач встречаются, которые ранее никогда не решал. Если не понятно о чем речь, то гуглю суть задачи. стараюсь избегать смотреть в решения, если они где-то встречаются, для меня принципиально решить самостоятельно, пусть не так идеально и красиво.

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

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

    Где-то даже сохранился код гипертекстового компилятора и просмотрщика, который я писал в 1997 году по заказу одного юриста. Сейчас оно никому не надо, т.к. есть всякие Консультант+, но по тем временам я считаю был весьма интересный продукт. Кому интересно вот ссылка на гитхаб https://github.com/iCoderXXI/hypertext
    Ответ написан
    Комментировать
  • Codewars - поможет ли?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Сам там балуюсь в свободное время. С точки зрения фронтенда он не так полезен, т.к. однобоко задействуется язык. Тем не мнее для глубокой проработки алгоритмов он вполне годится и полезен.

    Плюс после решения очередной ката, там доступны решения других участников, и встречаются очень любопытные примеры кода, что называется на острие прогресса, и есть смысл не только решать ката, но и изучать код других участников, черпая оттуда вдохновение и опыт.
    Ответ написан
    Комментировать
  • Экспресс обучение frontend разработке. Как подступиться?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я бы зашел с другого края, CSS и HTML это все прекрасно, но это все не более чем способ описать интерфейс.

    PHP однозначно отстатвить в сторону, как и MySQL.

    Коли уж вознамерился стать фронтендером, то должен до глубины души осознать, что никакого фронтенда во второй половине 10-х годов 21-го века от Р.Х. без JavaScript, вернее даже Ecma Script 2015+ не будет.

    Таким образом, я настоятельно рекомендую прям вот вгрызаться в хитрости и нюансы JS, начиная с ES5, и походу пьесы добавляя нововведения, которые обязательно появятся. И практиковаться до умопомрачения в кодинге, например на том же codewars.com

    Обязательно для вдумчивого просмотра https://www.youtube.com/watch?v=Bv_5Zv5c-Ts

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

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

    Тех, кто будет тебе рассказывать про Web-assembly не слушай, ближайшие годы это направление будет уделом очень узкого круга энтузиастов.

    Если английским не владеешь в достаточной мере, чтобы свободно читать и слушать материалы, рекомендую задуматься и осознать, что актуальных материалов в русском переводе раньше чем через 6+ месяцев редко можно отыскать. Если хочешь быть на гребне волны, базовое владение инглишем must have. Вот тут обсуждение этого вопроса Английский язык от профессионалов?
    Ответ написан
    Комментировать