Первое и самое главное, что вам нужно знать в Javascript прежде чем даже задумываться о том, чтобы использовать любой фреймворк - это то, что в современном жабоскрипте на продакшене никто не пишет непосредственно код, который будет выполнять браузер.
Вы практически на 100% всегда будете использовать какой-то препроцессор из командной строки. Все три мажорных фреймворка современных: React.js, Angular.js, Vue.js, используют отдельные консольные приложения для того, чтобы превратить тот код, который вы пишете в IDE, в тот код, который собственно будет выполнен в браузере. Я уж молчу про обёртки вокруг них типа Next.js и запредельную эзотерику для профессионалов типа RxJs и Elm. От вас ожидают, что вам комфортно работать с командной строкой, понимать, что такое Node.js и зачем оно нужно, понимать, что такое npm, зачем оно нужно и как с ним работать, как написать свой скрипт в package.json, как настроить свою IDE для нормальной работы в этой среде, как подключить Typescript и зачем он нужен, что такое ESLint и Prettier и как их настроить.
Это то, чего вам явно не скажут в требованиях, просто авторы документации подразумевают это из-за профессиональной деформации.
- умение бегло писать функции любых видов, анонимные, именованные, асинхронные;
- понимание понятия области видимости, замыкания и передачи аргументов в функцию по ссылке;
- "классы" объектов в Javascript, "наследование", семантика this;
- классические функции высших порядков: `map`, `reduce`, `filter`;
- самые распространённые объекты DOM и их API: `document`, `window`, `Element`, самые распространённые события типа клика, наведения курсора, нажатия на клавишу клавиатуры;
- event bubbling в DOM - вы обязаны полюбить эту страницу всем сердцем если вообще хотите какое-то будущее на фронтэнде;
- API самых часто используемых объектов стандартного JavaScript: Promise, Array, Object, Date, String;
- Promise, да; удачи, если что :) ;
- ES7-импорты, где они доступны, почему и чем они отличаются от импортов в Webpack и Typescript, зачем вообще нужны бандлеры типа Webpack, почему переменная, объявленная в модуле, доступна только в этом модуле, а переменная, объявленная в top-level обычного скрипта (не модуля), становится глобальной;
- Синтаксис деструктуризации, синтаксис краткой записи стрелочных функций, синтаксис "свойств" "классов" ES6 очень помогут читать чужой код;
- ????
- PROFIT!
Очень полезно будет знать взаимосвязь между HTML, CSS и Javascript в DOM: как из HTML мы можем вызвать скрипт на Javascript, как в CSS мы можем поцелить элемент в документе HTML, как из Javascript манипулировать как документом, так и стилями.
Конечно же, естественно вы должны знать элементарные основы императивного программирования: переменные, разрушающее присваивание, циклы, развилки, но это уже настолько очевидно, что не знаю, нужно ли вообще об этом говорить.