24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, Walmart и многие другие.
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsbin.com/ для браузерного кода и https://ideone.com/ для серверного кода.
Краткий FAQ:
1. Что это за язык такой? - Мультипарадигменный язык, изначально создавался для использования в браузерах как язык сценариев для придания интерактивности веб-страницам, однако в процессе своего развития преодолел этот этап и сейчас может использоваться для любых целей ввиду своей неограниченной гибкости и удивительно удобного синтаксиса. Сочетает в себе особенности объектно-ориентированного, функционального, событийно-ориентированного и императивного программирования.
2. Какие возможные направления для разработки существуют? - Фронт-энд (Vanilla, jQuery, Angular, Backbone, React, Meteor), бэк-энд (Node.js, Express, Sails), геймдев (Phaser, Cocos, Pixi, Unity), 3D графика (Three.js, Babylon.js), мобильная разработка (NativeScript, Phonegap, Ionic), десктопная разработка (NW.js, WinJS).
3. У меня вопрос по вёрстке, HTML или CSS, CSS-препроцессорам, Bootstrap или дизайну. Вы мне поможете? - Вряд ли. Этот тред посвящён непосредственно программированию, а вёрстка обсуждается в “Вёрстка-треде” в /wrk/, там и спроси. Кроме того, настоятельно рекомендую пройти https://htmlacademy.ru/ , если ещё не сделал этого раньше. После этого 90% вопросов отпадут сами.
4. Можно выучить только jQuery и всё писать на нём? - Не стоит, лучше начать писать на jQuery, когда освоишь ванильный JS, дабы не испортить себе восприятие языка, и в будущем не испытывать трудностей с изучением сложных фреймворков.
5. Существуют ли стайл-гайды для JavaScript? - Да. Стайл-гайд для Node.js: https://github.com/felixge/node-style-guide , стайл-гайд для Front-end: http://www.w3schools.com/js/js_conventions.asp
6. Какие новые возможности добавил ES6? - Вот здесь можно почитать на русском: https://learn.javascript.ru/es-modern
7. Я хочу писать на ES6, но многие браузеры не поддерживают новые возможности. И вообще, надоел геморрой с браузерным зоопарком. Неужели нет способа обойти это? - Конечно есть! Чтобы код одинаково хорошо работал во всех браузерах и все возможности ES6 и будущих стандартов нормально работали необходимо собрать код с помощью сборщика. Сборщик компилирует весь код в один файл и делает его полностью кроссбраузерным. Наиболее удобен в использовании Webpack, хотя существуют и аналоги. Потребуется некоторое время на изучение, но результат себя окупит. Сборщики нужны только во Front-end, Node.js и так поддерживает все новые возможности.
8. Зачем нужны CoffeeScript и TypeScript? - Это особые варанты JS для любителей других языков. CoffeeScript подходит для любителей Ruby и Python, TypeScript - для сторонников строготипизированных языков. Если ты новичок в программировании, то учи оригинал и не забивай себе голову этим.
9. Можно ли писать фронт на других языках? - Да, существуют компиляторы различных языков в JS, такие как ScalaJS, PyJS и другие. Но стоит помнить, что у них есть масса недостатков и использовать их стоит только если на чистом JS (также CS и TS) не получается писать совершенно.
10. Ну ладно, с чего начать изучение то? - Дальше идёт список материалов для изучения.
Чистый JS:
Книги: Дэвид Фленеган - "JavaScript: Подробное руководство"
Дуглас Крокфорд "JavaScript: сильные стороны"
Стефанов С. - "JavaScript. Шаблоны"
Джон Резиг - "Секреты JavaScript ниндзя"
Николас Закас - "JavaScript. Оптимизация производительности"
Джон Резиг, Расс Фергюсон - “JavaScript для профессионалов”
Node.js
М. Кантелон , М. Хартер - "Node.js в действии"
Кирилл Сухов - "Node.js. Путеводитель по технологии"
Дэвид Хэррон - Node.js. Разработка серверных веб-приложений
Front-end
Эдди Османи - "Разработка Backbone.js приложений"
Эрл Каслдайн, Крэйг Шарки - "Изучаем JQuery"
Читать онлайн
Dr. Axel Rauschmayer - "Speaking JavaScript: An In-Depth Guide for Programmers" - Одна из лучших книг по JS.
Пока только на английском: http://speakingjs.com/
Marijn Haverbeke - "Eloquent Javascript" - Вводная книга по JavaScript и программирование в целом.
Перевод на хабре: http://habrahabr.ru/post/240219/ На английском: http://eloquentjavascript.net/
DISCOVER METEOR - Книга по Meteor.js - одному из самых лёгких и функциональных фреймворков.
Полностью на русском: http://ru.discovermeteor.com/
И не забываем читать официальную документацию для каждого фреймворка.
Онлайн сообщества:
http://learn.javascript.ru/ - оно одно, единственное. Начинать учить язык лучше всего отсюда, потом переходить уже к книгам.
http://www.jstherightway.org/ - Огромный англоязычный гайд. Есть книги, статьи и всё-всё-всё.
http://nodeguide.ru - Огромное количество переведённых статей по Node.js
http://node-center.ru - собрание информации по Node.js. Особенно интересен раздел со ссылками и книгами.
Блоги и новостные ленты:
http://dailyjs.com/ - DailyJS
http://weblog.bocoup.com/ - Bocoup Weblog
http://perfectionkills.com/ - Perfection Kills
http://www.reddit.com/r/javascript - subreddit на reddit.com
http://toddmotto.com/ - Todd Motto, Lead front-end @appsbroker. Developer Expert @google.
Онлайн курсы:
Как же можно учить язык, только читая книжки? Нужна практика, только так изучаемое усваивается, и никак иначе.
CodeSchool - http://codeschool.com/
Отличный ресурс для изучения языка, очень много курсов по всем передовым технологиям.
CodeAcademy - http://www.codecademy.com/
Уже не такой сильный, но все еще интересный проект, также обязателен для улучшения навыка.
Udacity - https://www.udacity.com/course/ud015
Дает хорошее представление о замыканиях.
Выучил основы, написал свою пузырьковую сортировку и змейку? Не знаешь как двигаться дальше?
Почитай теперь это - https://shamansir.github.io/JavaScript-Garden/
СПИСОК ИНСТРУМЕНТОВ ДЛЯ РАЗЛИЧНЫХ ЦЕЛЕЙ
Front-end: jQuery, Angular, React, Backbone, Meteor.
Back-end: Node.js, Express, Koa, Sails (Включает Express и Socket.io + архитектура)
Десктопные приложения: NW.js, Electron, WinJS.
Мобильные приложения: Cordova, NativeScript, Phonegap, Ionic.
GameDev: Phaser, Cocos, Pixi, Unity.
Тестирование: Mocha, Chai, Jasmin, Sinon.
Continuous Integration: Semaphore, Shippable.
Генераторы статичных сайтов: DocPad, Metalsmith, Harp, Brunch.
Бесплатные хостинги: OpenShift, Heroku.
IDE/редактор: WebStorm, Atom, Brackets.
Шапка: https://docs.google.com/document/d/1x7fY7CIy9o6lrkYA1Y5iQuJWLJdEbtK7z3TjIZBskkg/edit?usp=sharing