Skip to content

Latest commit

 

History

History
39 lines (27 loc) · 8.46 KB

faq.md

File metadata and controls

39 lines (27 loc) · 8.46 KB

Часто задаваемые вопросы

В: Что это за язык такой?

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

В: Какие возможные направления для разработки существуют?

О: Практически все! Можно писать Front-end, Back-end, GameDev, 2D/3D графику, разрабатывать мобильные и десктопные приложения. Список инструментов для различных целей

В: У меня вопрос по вёрстке, HTML или CSS, CSS-препроцессорам, Bootstrap или дизайну. Вы мне поможете?

О: Вряд ли. Этот тред посвящён непосредственно программированию, а вёрстка обсуждается в “Вёрстка-треде” в /wrk/, там и спроси. Кроме того, настоятельно рекомендую пройти htmlacademy , если ещё не сделал этого раньше. После этого 90% вопросов отпадут сами.

В: Можно выучить только один фреймворк/библиотеку и всё писать на нём?

О: Не стоит начинать учить отдельный фреймворк или библиотеку, пока отсутствуют базовые знания самого языка. Во-первых, из-за отсутствия знаний самого языка возникнет масса проблем с пониманием принципа работы фреймворка/библиотеки, во-вторых, этим можно сильно испортить себе восприятие языка и после этого будет гораздо сложнее изучать чистый JS и другие фреймворки.

В: Существуют ли стайл-гайды для JavaScript?

О: Да. Стайл-гайд для Node.js, стайл-гайд для Front-end

В: Какие новые возможности добавил ES6?

О: Вот здесь можно почитать на русском: https://learn.javascript.ru/es-modern

В: Я хочу писать на ES6, но многие браузеры не поддерживают новые возможности. И вообще, надоел геморрой с браузерным зоопарком. Неужели нет способа обойти это?

О: Конечно есть! Чтобы код одинаково хорошо работал во всех браузерах и все возможности ES6 и будущих стандартов нормально работали необходимо собрать код с помощью сборщика. Сборщик компилирует весь код в один файл и делает его полностью кроссбраузерным. Наиболее удобен в использовании Webpack, хотя существуют и аналоги. Потребуется некоторое время на изучение, но результат себя окупит. Сборщики нужны только во Front-end, Node.js и так поддерживает все новые возможности.

В: Зачем нужны CoffeeScript и TypeScript?

О: Это особые варанты JS для любителей других языков. CoffeeScript подходит для любителей Ruby и Python, TypeScript - для сторонников строготипизированных языков вроде C# или Java. Если ты новичок в программировании, то учи оригинал, а диалекты попробуешь, когда уже будет опыт.

В: Зачем нужны таск-раннеры, такие как Gulp или Grunt?

О: Они позволяют одной консольной командой запустить выполнение заранее прописанного процесса, который может содержать множество команд и который неудобно каждый раз выполнять вручную. Пример - компиляция JS с помощью Webpack, сборка LESS стилей в CSS и многое другое. Ещё раз - таск-раннер не замена сборщику, Gulp - не конкурент Webpack, они выполняют совершенно разные задачи и зачастую используются вместе.

В: Можно ли писать фронт на других языках?

О: Да, существуют компиляторы различных языков в JS, такие как ScalaJS, PyJS и другие. Но стоит помнить, что у них есть масса недостатков и использовать их стоит только если на чистом JS (также CS и TS) не получается писать совершенно. Они предназначены прежде всего для тяжёлых приложений вроде браузерных 3D игр в классических Front-end целях не очень удобны.

В: Я слышал про какой то WebAssembly, который заменит JS. Это правда? Что это такое?

О: Нет, неправда. WebAssembly (WASM) практически не имеет отношения к классическому Front-end. Это особая технология, позволяющая выполнять в браузере бинарный код, компилируемый из различных языков. Он предназаначен для выполнения в браузере тяжёлых приложений вроде трёхмерных онлайн-игр и никак не связан с привычными задачами JS. Более того, учитывая развитую инфраструктуру JS, множество фреймворков и библиотек на все случаи жизни, большое количество профессиональных разработчиков, огромное количество легаси-кода, выполнение WASM иных задач, не связанных с различными высокопроизводительными трёхмерными приложениям, видится невозможным. Кроме того, WASM не затрагивает серверную и мобильно-десктопную часть JavaScript, которые уже успели стать довольно популярными.

В: С чего начать изучение?

О: Список материалов для изучения