О: Мультипарадигменный язык, изначально создавался для использования в браузерах как язык сценариев для придания интерактивности веб-страницам, однако в процессе своего развития преодолел этот этап и сейчас может использоваться для любых целей ввиду своей неограниченной гибкости и удивительно удобного синтаксиса. Сочетает в себе особенности объектно-ориентированного, функционального, событийно-ориентированного, декларативного и императивного программирования. Объектно-ориентированная часть реализована через прототипирование. В последних стандартах язык сделал большой шаг в сторону функционального программирования.
О: Практически все! Можно писать Front-end, Back-end, GameDev, 2D/3D графику, разрабатывать мобильные и десктопные приложения. Список инструментов для различных целей
В: У меня вопрос по вёрстке, HTML или CSS, CSS-препроцессорам, Bootstrap или дизайну. Вы мне поможете?
О: Вряд ли. Этот тред посвящён непосредственно программированию, а вёрстка обсуждается в “Вёрстка-треде” или “Фронтенд-треде“ в /wrk/, там и спроси. Кроме того, настоятельно рекомендую пройти htmlacademy , если ещё не сделал этого раньше. После этого 90% вопросов отпадут сами.
О: Не стоит начинать учить отдельный фреймворк или библиотеку, пока отсутствуют базовые знания самого языка. Во-первых, из-за отсутствия знаний самого языка возникнет масса проблем с пониманием принципа работы фреймворка/библиотеки, во-вторых, этим можно сильно испортить себе восприятие языка и после этого будет гораздо сложнее изучать чистый JS и другие фреймворки.
О: Да. Стайл-гайд для Node.js, стайл-гайд для Front-end. Но помни, что стайл-гайд не всегда является необходимой вещью. В некоторых ситуациях от него может быть больше вреда, чем пользы. Особенно, если в нём установлены бессмысленные и затрудняющие читаемость условия. Смотри по ситуации.
О: Вот здесь можно почитать на русском: https://learn.javascript.ru/es-modern
О: Смотри эту таблицу: https://kangax.github.io/compat-table/
В: Я хочу писать на ES6, но многие браузеры не поддерживают новые возможности. И вообще, надоел геморрой с браузерным зоопарком. Неужели нет способа обойти это?
О: Конечно есть! Чтобы код одинаково хорошо работал во всех браузерах и все возможности ES6 и будущих стандартов нормально работали необходимо собрать код с помощью сборщика. Сборщик компилирует весь код в один файл и делает его полностью кроссбраузерным. Наиболее удобен в использовании Webpack, хотя существуют и аналоги. Потребуется некоторое время на изучение, но результат себя окупит. Сборщики нужны только во Front-end, Node.js и так поддерживает все новые возможности.
О: Это особые варанты JS для любителей других языков. CoffeeScript подходит для любителей Ruby и Python, TypeScript - для сторонников строготипизированных языков вроде C# или Java. Если ты новичок в программировании, то учи оригинал, а диалекты попробуешь, когда уже будет опыт.
О: Они позволяют одной консольной командой запустить выполнение заранее прописанного процесса, который может содержать множество команд и который неудобно каждый раз выполнять вручную. Пример - компиляция JS с помощью Webpack, сборка LESS стилей в CSS и многое другое. Ещё раз - таск-раннер не замена сборщику, Gulp - не конкурент Webpack, они выполняют совершенно разные задачи и зачастую используются вместе.
В: Я хочу попробовать написать настоящее Front-end приложение, работающее с динамическим серверным приложением, а не просто статичную страничку. Как такое сделать?
О: Есть два варианта. Первый - использовать готовое API стороннего сервиса. С этим способом связано несколько трудностей, в частности - получение уникального токена, разрешающего использовать API и поиск подходящего сервиса. Второй - использовать Backlun. Это лёгкое мультиплатформенное (Windows, Linux, Mac OS) приложение, которое позволяет в одну команду локально поднять сервер одного из выбранных типов - блог, магазин, форум и другое. Backlun имеет только API, Front-end часть можно разрабатывать самостоятельно на любом фреймврке или диалекте JS. Backlun не использует базу и не имеет зависимостей, так что его можно запустить на любом компьютере. Он не подходит для практического использования как Back-end часть сайта, но это наилучший вариант для обучения. Документация есть и на русском.
О: Да, существуют компиляторы различных языков в JS, такие как ScalaJS, PyJS и другие. Но стоит помнить, что у них есть масса недостатков и использовать их стоит только если на чистом JS (также CS и TS) не получается писать совершенно. Они предназначены прежде всего для тяжёлых приложений вроде браузерных 3D игр в классических Front-end целях не очень удобны.
О: Нет, неправда. WebAssembly (WASM) практически не имеет отношения к классическому Front-end. Это особая технология, позволяющая выполнять в браузере бинарный код, компилируемый из различных языков. Он предназаначен для выполнения в браузере тяжёлых приложений вроде трёхмерных онлайн-игр и никак не связан с привычными задачами JS. Более того, учитывая развитую инфраструктуру JS, множество фреймворков и библиотек на все случаи жизни, большое количество профессиональных разработчиков, огромное количество легаси-кода, выполнение WASM иных задач, не связанных с различными высокопроизводительными трёхмерными приложениям, видится невозможным. Кроме того, WASM не затрагивает серверную и мобильно-десктопную часть JavaScript, которые уже успели стать довольно популярными.