Содержание
Как начать писать на JavaScript с нуля | GeekBrains
Создаём первые скрипты, разбираемся в их работе
https://d2xzmw6cctk25h.cloudfront.net/post/2407/og_image/113799b29dda93c9347a2c70706c120f.png
Очень сложно представить современные сайты без интерактива с пользователем. Тогда бы они никак не взаимодействовали с нами, а любое нажатие приводило бы к полной перезагрузке страницы. Согласитесь, это очень скучно.
Рассмотрим, из чего состоят веб-странички. HTML (HyperText Markup Language) отвечает за придание странице структуры (показывает, где меню сайта, а где заголовок, логотип или статья) и контента (различные тесты, списки, изображения и т. д.). CSS (Cascading Style Sheets) отвечает за визуальную составляющую страницы: определяет, какого цвета и размера должен быть тот или иной блок, как его оформить и вывести пользователю.
Структура и оформление есть, но где же взаимодействие? Здесь на сцену выходит JavaScript. Виртуальный «диалог» с пользователем — от изменения части содержимого сайта в ответ на действия до современных игр в браузере — реализуется с помощью скриптов JavaScript. Этот язык программирования работает в браузере и позволяет взаимодействовать с веб-страницей в режиме реального времени, оживляя её и предоставляя пользователю обратную связь на все действия.
У JavaScript очень интересная история. Он — реализация стандарта ECMAScript, может работать не только в браузере. Но в статье мы рассмотрим только взаимодействие с браузером.
Создаём самый простой скрипт
В первом задании, которое традиционно выполняет студент при изучении языка программирования, нужно вывести на экран фразу «Hello, world». Это позволяет отработать самый важный аспект — вывод информации пользователю, а также познакомиться с базовой структурой программы. Поступим так же.
Есть множество способов что-то вывести на экран в браузере, но мы выберем самый простой. Откроем «Инструменты разработчика» (Developer Tools) в браузере Chrome. Сделать это можно через сочетание клавиш Ctrl + Shift + I или F12 (Cmd + Opt + I на macOS) или через меню браузера. В Google Chrome нужно нажать на три точки, в других браузерах эта настройка может выглядеть иначе. Далее выбираем пункт «Дополнительные инструменты» и «Инструменты разработчика».
У вас должно появиться примерно такое окно, как ниже. Какой именно сайт выбрать для работы, не важно, можете открыть и GeekBrains.
Нас интересует вкладка Console. В ней могут быть ошибки и предупреждения (красные или жёлтые надписи) — не обращайте на них внимания, они нам не помешают. Выполним задание — выведем «Hello, world» на экран. Для этого нам понадобится команда alert(). Она выводит текст, который передан в круглых скобках.
alert("Hello, world")
Обратите внимание на регистр — здесь он имеет значение. Также не упустите кавычки — любой текст мы обязаны обрамлять в двойные или одинарные кавычки.
Результат
Мы выполнили первое задание — вывели простой текст на экран.
Учимся писать чуть более сложные скрипты
На экране перед нами статичный текст, что не очень интересно. Хотелось бы больше взаимодействия с пользователем. Что, если мы будем спрашивать имя зашедшего на сайт и здороваться с ним?
Для этого нам нужно познакомиться с концепцией переменных в языках программирования. Переменная — это область в памяти компьютера, в которой хранится какое-либо значение. Мы можем использовать его как угодно.
Для создания переменной в JavaScript нужно применить ключевое слово let. Есть и другие, но не будем так глубоко погружаться в детали.
Требования к именованию переменных:
- Имя переменной не может начинаться с цифры.
- Имя переменной может содержать только буквы, цифры и символы «$» и «_».
- Здравый смысл подсказывает нам, что имя переменной должно отражать суть того, что в ней находится.
Создадим простую переменную, поместив в неё имя. Например, Иван.
let name = "Иван" alert("Привет, " + name)
Обратите внимание: мы объединили слово «привет» и переменную. Здесь имеет значение каждый символ: сначала alert, потом открывающая круглая скобка, которая говорит, что дальнейшие инструкции нужно вывести на экран. Затем кавычки, в которых заключён приветственный текст. Далее знак +, который подсказывает программе, что текст справа от знака нужно объединить с тем, что слева. И завершает это закрывающая круглая скобка.
Результат
Мы вывели имя из переменной на экран, но ведь было нужно показать имя, которое сообщит пользователь. Исправим это. Нам понадобится команда prompt(). Она задаст пользователю вопрос — запишем его в круглых скобках. Сохраним в переменную результат выполнения команды prompt().
let name = prompt("Введите ваше имя") alert("Привет, " + name)
Результат
Мы спрашиваем у пользователя имя, а когда он отвечает, здороваемся с ним. Ничего сложного.
Сохраняем наш первый скрипт
Мы написали программу (скрипт) в консоли браузера. Это было быстро и просто, но не очень практично — такой программой с пользователями не поделишься. Чтобы сделать это, сохраним программу в файл с расширением *.html. Имя можем дать произвольное. Так как HTML подразумевает определённую структуру контента, нужно её отчасти соблюсти, чтобы всё работало. Понадобятся теги <html> и <script>.
<html> <script> let name = prompt("Введите ваше имя") alert("Привет, " + name) </script> </html>
Результат
Редактировать и сохранять файлы со скриптами можно с помощью любого текстового редактора. Cамый простой и примитивный — «Блокнот», который поставляется вместе с Microsoft Windows. Есть и специальные редакторы кода, например, Visual Studio Code. В блоге даже выходила специальная подборка редакторов кода JavaScript — выбирайте и дерзайте 🙂
А если хотите извлечь из JavaScript максимум — приглашаем на факультет Fullstack JavaScript-разработки GeekBrains!
как написать JavaScript — статьи на Skillbox
Если бы для интернета писали Библию, она начиналась бы так:
Сначала была почта. И увидели инженеры, что это хорошо. И создали они WWW с гиперссылками. И увидели инженеры, что это тоже хорошо. И создали они тогда язык JavaScript для оживления страничек.
Примерно так происходило в реальности. JavaScript придумали, чтобы «оживить» HTML. Скрипты JavaScript пишутся непосредственно в текст HTML или хранятся в отдельных файлах, как и стили CSS. Они выполняются сразу после загрузки страницы в браузер.
Даже сам язык в первое время назывался LiveScript. Потом его переименовали в JavaScript, потому что планировали как-то увязать с языком общего назначения Java. Но сейчас у них нет практически ничего общего, а JavaScript — совершенно независимый язык программирования со своей четкой спецификацией ECMAScript.
Формально JavaScript является торговой маркой Oracle, а этот язык — «расширение» ECMAScript, наряду с JScript от Microsoft и ActionScript, но это скорее заморочки владельцев торговых марок. Главное, что свободный ECMAScript никому не принадлежит.
Со временем сфера влияния JavaScript значительно расширилась. Его начали использовать не только для скриптов на странице HTML, но и для серьезных больших веб-приложений и целых программ, которые работают в браузере. Есть инструменты, чтобы специальным образом «упаковать» эти программы и выполнять их отдельно от браузера. Это компиляторы и интерпретаторы, которые более подробно рассматриваются на обучающих курсах «Java-разработчик» и «Веб-разработчик».
Приложения JavaScript выполняются в любой среде, где есть соответствующий интерпретатор.
Нас пока интересуют только браузеры и HTML-странички.
Как сделать JavaScript? Написать элементарный скрипт не сложнее, чем простую HTML-страничку, ведь скрипты JavaScript пишутся обычным текстом, то есть их можно создавать буквально в том же «Блокноте», сохраняя потом в отдельных файлах или вставляя в тело HTML-документа. Самые простые вещи на JavaScript делаются действительно просто.
Для примера сделаем простой скрипт для выполнения сервером сценариев Windows. Этот скрипт можно написать прямо в «Блокноте» и выполнить без браузера.
WScript.echo («Привет, Skillbox!«)
Пишем этот текст в «Блокноте», затем сохраняем файл под именем skillbox.js и запускаем в «Проводнике» Windows.
Аналогичный скрипт можно записать прямо в коде страницы HTML между тегами <script> и </script>. Там уже можно использовать обычные методы JavaScript, а не метод echo специфического объекта WScript. Рассмотрим некоторые из стандартных методов для ввода и вывода данных в браузере.
Метод alert() отображает окошко с кнопкой «OK». В окне выводится сообщение, которое указано в скобках. Например, «Привет, Skillbox!». То есть в данном случае браузер делает ровно то же самое, что перед этим делал сервер сценариев Windows.
Эти примеры тоже можно писать в «Блокноте», только сохранять в файлах с расширением HTML. Например, skillbox.htm.
<html>
<script>
alert(«Привет, Skillbox«)
</script>
</html>
Результат:
В качестве аргумента alert() можно указать не только конкретный текст, но и результат каких-либо вычислений или обработки других данных. Например, alert(x), где x вычисляется отдельно.
Метод confirm() выводит такое же окно с сообщением, но уже с двумя кнопками — «ОК» и «Отмена». В зависимости от того, какую кнопку щелкнет пользователь, метод возвращает либо значение true, либо false. Сервер получает это возвращаемое значение от пользователя и выполняет какое-то действие, в зависимости от ответа.
Синтаксис такой же, только здесь логически предполагается выбор, так что пользователю задают вопрос.
<html>
<script>
confirm(«Привет, Skillbox«)
</script>
</html>
Результат:
Метод prompt() выводит диалоговое окно с сообщением и текстовым полем, куда пользователь вводит данные. Здесь тоже предусмотрены две кнопки «ОК» и «Отмена». По нажатию первой кнопки метод возвращает на сервер введенный текст, а по нажатию второй кнопки возвращает логическое значение false.
Синтаксис здесь такой:
prompt (сообщение, значение_поля_ввода_данных)
Значение поля ввода необязательно. Туда можно вписать текст, который изначально введен в поле для удобства пользователя.
Код:
<html>
<script>
prompt(«Передай привет Skillbox«, «Привет«)
</script>
</html>
Результат:
Возможности современного JavaScript выходят далеко за рамки примитивного ввода-вывода данных через формы. Эти методы мы привели только в качестве самых простых примеров. Кроме этого, JavaScript позволяет реагировать на действия пользователя. Например, на движения мышкой или нажатие определенных клавиш. JavaScript часто используется для обеспечения асинхронной работы (Технология AJAX), когда информация на странице обновляется без ее перезагрузки. В этом режиме данные отправляются на сервер и загружаются оттуда в интерактивном режиме. Кроме того, JavaScript способен манипулировать с HTML-элементами на странице (создавать и прятать теги и т.д.) и делать многое другое.
Во всех популярных браузерах есть специальная консоль разработчика. Она показывает код скриптов на странице, а также выводит другую полезную информацию. В Chrome, Firefox и IE консоль разработчика открывается по нажатию горячей клавиши F12, в Safari — Ctrl+Shift+I или Ctrl+Alt+C. На скриншоте скрипты отображаются справа вверху, вместе с другими элементами веб-страницы.
Консоль разработчика в Chrome.
В дальнейшем для удобного программирования понадобится установить редактор кода или IDE (Integrated Development Environment), интегрированную среду разработки. IDE — это редактор с расширенной функциональностью, который интегрирован с другими полезными инструментами, поддерживает подключение дополнительных модулей и так далее.
Для начала можно рекомендовать один из легких редакторов:
В будущем есть смысл присмотреться к IDE:
Инструкторы на курсе «JavaScript с нуля» посоветуют лучшие инструменты и помогут разобраться с любыми вопросами. Это практический 4-месячный курс для тех, кто хочет научиться основам языка сценариев с индивидуальным наставником, разработать фронтенд для интерактивного веб-проекта и положить кейс к себе в портфолио.
Курс идеально подойдет дизайнерам-разработчикам и начинающим программистам, кто уже знаком и умеет разрабатывать страницу на HTML и CSS, но не намерен останавливаться в изучении программирования. Преподаватели практически «на пальцах» объяснят базовые основы синтаксиса JavaScript, научат создавать визуальные интерактивные элементы и помогут разработать первый веб-проект на JavaScript.
Курс «JavaScript с нуля»
Практический 4-х месячный курс для тех, кто хочет научиться основам языка сценариев с индивидуальным наставником, разработать фронтэнд для интерактивного веб-проекта и положить кейс к себе в портфолио.
-
Живая обратная связь с преподавателями -
Неограниченный доступ к материалам курса -
Стажировка в компаниях-партнёрах -
Дипломный проект от реального заказчика -
Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы
Как писать и запускать скрипты в консоли Google Chrome Javascript?
Недавно я переключился с Firefox на Chrome и (вероятно) пропустил важную функцию. Я привык тестировать фрагменты javascript на FF из консоли Firebug следующим образом: Откройте консоль, напишите сценарий и, наконец, нажмите CTRL + Return, чтобы выполнить код.
Кажется невозможным сделать то же самое в консоли Chrome, так как когда я набираю там какой-то код и нажимаю return, чтобы начать новую строку, код выполняется немедленно.
Есть ли способ воспроизвести поведение Firefox в Chrome?
Спасибо.
javascript
firefox
google-chrome
console
Поделиться
Источник
Paolo
02 апреля 2011 в 18:09
5 ответов
-
Сочетания клавиш консоли Google Chrome Javascript
Я хотел бы отладить свое приложение javascript с помощью инструментов разработчика Google Chrome 3 . Все хорошо и хорошо, пока я действительно не захочу начать отладку. Я могу устанавливать точки останова и т. д., Но я не хочу отлаживать их с помощью мыши, а с помощью клавиатуры. В Firefox +…
-
Google Chrome Javascript отладчик и скрипты контента
Этот вопрос уже задавался подобным образом раньше , но я не могу отладить Javascript в Google Chrome. Если я перейду на страницу > разработчик Debug Javascript ( Ctrl + Shift + L ) отключен. Alt + ` не работает. Я разрабатываю расширение ‘content script’, поэтому запускаю chrome с…
Поделиться
bpierre
02 апреля 2011 в 18:16
Поделиться
xiola
11 августа 2013 в 10:58
2
Установите Firebug Lite для Google Chrome . У него есть консоль.
Не ищите полноценного Firebug. Вы будете разочарованы 🙂
Упс,сначала я плохо читал. Моя вина!
В Firebug Lite возьмите консоль . Затем вы увидите крошечную красную стрелку вверх в правом углу .
Нажмите на него, и вы получите многострочную консоль . Не так ли?
Поделиться
naveen
02 апреля 2011 в 18:15
-
Node.js выскабливание с chrome-remote-interface
Я пытался очистить веб-сайт, защищенный сетями Distil, в которых использование selenium (с Python) просто всегда терпело неудачу. Я сделал несколько поисков и пришел к выводу, что сайт может обнаружить, что вы используете Selenium, используя какой-то javascript. Затем я взял добычу в…
-
Как получить ввод с консоли Chrome Javascript?
Есть ли способ программно получить ввод с консоли Javascript Google Chrome, аналогично readline() в Firefox?
2
Я рекомендую это:
- Напишите
debugger;
и нажмите Enter на вкладке консоли - Это приведет вас на вкладку Источники ; если нет, убедитесь, что точки останова отладчика активны
- Теперь вы можете написать все, что хотите, на вкладке Источники , которая действует как полная IDE с такими функциями, как новая строка и отступ
- Выберите любую часть кода для запуска и щелкните правой кнопкой мыши, выберите
Evaluate in console
Поделиться
Saeed Neamati
27 февраля 2013 в 05:20
2
Лучший способ сделать это с помощью функций Chrome, т. Е. фрагментов , в которых вы можете написать javascript и сохранить его в консоли разработчика chrome.
Его можно найти под исходным кодом внутри инструментов разработчиков при проверке элемента.
Более подробную информацию о сниппетах можно найти по этой ссылке.
Он был доступен в Chrome canary, и я думаю, что теперь он доступен и в браузере Chrome по умолчанию.
Поделиться
shruti
07 апреля 2015 в 04:53
Похожие вопросы:
Как запустить с консоли JavaScript в Chrome
У меня есть страница WEB, которая требует запуска fw3k2_request_job_application() из консоли JavaScript в Google Chrome, чтобы получить некоторые URL с некоторыми данными. Как я могу это сделать?…
Как печатать отладочные сообщения в консоли Google Chrome JavaScript?
Как печатать отладочные сообщения в консоли Google Chrome JavaScript? Обратите внимание, что консоль JavaScript-это не то же самое, что отладчик JavaScript; у них разные синтаксисы AFAIK, поэтому…
Google Chrome extension запуск как будто в консоли?
Я пытаюсь сделать Google Chrome extension, который приостанавливает / воспроизводит плательщика в DEEZER (www.deezer.com). Я вручную запускаю код playercontrol.doAction(‘next’) в консоли Google…
Сочетания клавиш консоли Google Chrome Javascript
Я хотел бы отладить свое приложение javascript с помощью инструментов разработчика Google Chrome 3 . Все хорошо и хорошо, пока я действительно не захочу начать отладку. Я могу устанавливать точки…
Google Chrome Javascript отладчик и скрипты контента
Этот вопрос уже задавался подобным образом раньше , но я не могу отладить Javascript в Google Chrome. Если я перейду на страницу > разработчик Debug Javascript ( Ctrl + Shift + L ) отключен. Alt + `…
Node.js выскабливание с chrome-remote-interface
Я пытался очистить веб-сайт, защищенный сетями Distil, в которых использование selenium (с Python) просто всегда терпело неудачу. Я сделал несколько поисков и пришел к выводу, что сайт может…
Как получить ввод с консоли Chrome Javascript?
Есть ли способ программно получить ввод с консоли Javascript Google Chrome, аналогично readline() в Firefox?
jQuery в консоли Chrome (8.0.552.237)
Похоже, что селекторы jQuery не работают в консоли Chrome. Любой тип селектора возвращает null. Однако скрипты правильно запускают javascript. Кто-нибудь еще заметил это изменение или знает о его…
Экспорт журнала консоли Javascript из Google Chrome
Есть ли способ экспортировать сообщения, зарегистрированные в консоли javascript в Google Chrome? Если нет, то может ли кто-нибудь предложить хороший способ диагностики проблем javascript на машине…
JavaScript глобальная переменная отображается как неопределенная в консоли Google Chrome
Я очень новичок в JavaScript. Этот вопрос может быть чем-то очень примитивным. Сообщения, которые были предложены, когда я набирал этот вопрос, не помогли мне решить эту проблему. Я следовал…
Топ 10. Лучшие JavaScript редакторы
Язык создавался компанией Netscape и изначально назывался ECMAScript. Этот язык преимущественно ориентирован на веб разработчиков, и по праву является одним из самых популярных языков программирования в мире. Язык сменил множество названий, но сейчас, его официальное название JavaScript. Есть много языков, которые создавались для замены, например CoffeeScript и другие, но при компиляции, они всё равно переводятся в JavaScript. Изначально JavaScript считался языком для непрофессионалов и код получался довольно плохим. За последние годы всё изменилось кардинально, и JavaScript начал завоёвывать популярность, постепенно поднимаясь, всё выше и выше, в таблице самых востребованных языков веб-разработки.
Итак, вот список лучших редакторов для языка JavaScript:
1 место. Aptana Studio
Позиционирует себя как “самый лучший в мире” редактор для веб-разработки. Особые функции: множество JavaScript библиотек, встроенный отладчик, терминал, синхронизация по ftp, возможность командной разработки. Включает в себя стандартные функции для приложений из этой области (автодополение, проверка ошибок и т.д). Редактор работает на все основных операционных системах.
2 место. Sublime Text
Программа представляет собой текстовый редактор кода, разметки и текста. Плюсы: множество плагинов для самых разных функций, удобная навигация (миникарта), множественное редактирование, работа с проектами. Sublime Text доступен на всех основных платформах (OS X, Windows и Linux). Почти полностью бесплатная (иногда вылезает предложение купить).
3 место. Webstorm
Это очень хорошая IDE, во многом благодаря тому, что создатели большое внимание уделили различным мелочам. Реализованы очень удобные горячие клавиши и интеллектуальное автодополнение. Проверку правильности кода можно делать 3-мя разными способами (JSLint, JSHint и внутренний инспектор кода). Присутствует возможность отладки в “node.js”.
4 место. Visual Studio
В версии 2012 был полностью переписан редактор JavaScript. Сейчас, почти любой веб-сайт содержит десятки JS файлов, в которых со временем становится трудно ориентироваться, Visual Studio полностью решает эту проблему. Первые попытки, сделать работу веб-разработчика более продуктивной начались ещё в 2008 году. Реализована разбивка кода на “регионы”, которые удобно сворачивать, если файл большой. А в последних версиях появилась поддержка ECMAScript 5, и улучшена поддержка IntelliSense и Document Object Model.
5 место. Spket IDE
Это один из редакторов Eclipse. Спектр его возможностей очень широк, очень хорошо реализовано форматирование кода и inline-комментарии. Присутствует встроенный отладчик для IE, имеется отдельный редактор для JSON, и другие основные возможности для работы с кодом.
6 место. Notepad++ (с плагином Emmet)
Все мы знаем старый добрый Notepad++, и благодаря его плагину, он появился на этом месте… Emmet (старое название Zen Coding) предназначен для ускорения написания различного кода, на сайте производителя, к плагину есть видеоуроки и документация. У плагина есть много интересных возможностей, к примеру нумерация атрибутов множественных элементов, или несложные математические вычисления прямо во время написания кода. Полная настройка горячих клавиш поможет вам настроить программу под себя. К слову сказать, плагин Emmet можно установить на другие редакторы, к примеру Zen Coding, Visual Studio и Sublime Text.
7 место. Zend Studio
В последних версиях этого продукта изменилось довольно многое, и в лучшую сторону. Было реализовано автозавершение блоков phpDoc, установлены разделительные места для удобного отображения абзацев, встроенное окно IE, создатели улучшили автозавершение кода и реализована поддержка отладки в PHP 5.1. Очень большая работа была проведена по визуальному отображению. Теперь каждый пользователь может настроить все визуальные компоненты под себя, имеется возможность включить или отключить сглаживание шрифтов. Сама программа была оптимизирована, ускорилась загрузка и скорость работы с кодом, был поставлен удобный Toolbar…
8 место. PhpEd
Солидная IDE, которая включает в себя много инструментов, которые очень полезны при разработке на различных языках. PhpEd может работать с PHP, HTML, CSS и JavaScript. Довольно удобно устроена панель инструментов, реализован очень хороший отладчик, и конечно веб-сервер. Поначалу, если вы испугаетесь функционала IDE, вы можете настроить “всё 1 кликом” с помощью Мастера параметров. Плохо, но не критично то, что нету автозавершения кода для JavaScript.
9 место. TinyMCE
Это кроссплатформенный редактор от Moxiecode Systems. Предоставляется по лицензии LGPL (разрешает продавать и изменять код программы). Почти полнейшая кроссбраузерность, кроме Оперы 7. Основные преимущества это: поддержка плагинов, множество тем\шаблонов.
10 место. Geany
Один из лучших моментов является то, что в Geany поддерживается большое количество типов файлов. Интерфейс в программе простой, удобный, что несомненно поможет начинающим веб-дизайнерам и программистам. Имеется стабильная версия под Линукс. Из минусов, можно отметить то, что нету шаблонов, чтобы не создавать проект не с пустого места.
Зачем учить JavaScript и где он пригодится
JavaScript полностью интегрирован с HTML, он способен как угодно менять веб-страницу. В ответ на событие программист может:
- на лету вставить в HTML-код любые теги;
- задать внешний вид элементов через класс и атрибуты HTML;
- переместить любой элемент;
- запросить у пользователя данные;
- отправить запрос на сервер (технология AJAX).
Это только то, что сразу пришло в голову. JavaScript может намного больше, в пределах своей страницы он Бог.
JavaScript — подходящий язык для изучения программирования. Он достаточно прост, но содержит все фундаментальные вещи: алгоритмы, объектно-ориентированную модель, структуры данных. Если традиционные языки для обучения — Pascal и Basic — несут мало практической пользы, то JavaScript — рабочая лошадка.
Начинать с JavaScript хорошо и потому, что синтаксически он похож на великий и ужасный язык С. Изучив JavaScript, получишь базовое представление обо всех «сиобразных» языках: С++, C#, Java, PHP. Они задают тренд в своих областях и весьма популярны, поэтому для новичка важно познакомиться с синтаксисом С.
Программа на JavaScript — это простой текст. Писать на JavaScript можно в любом текстовом редакторе.
В пределах своей страницы JavaScript — Бог
Классический JavaScript — это язык программирования для интернета, он бессилен за пределами браузера. С помощью JavaScript нельзя запустить программу на компьютере или записать файл в нужную папку.
Из-за правил безопасности браузеры ограничивают мощь JavaScript и за пределами «родной» страницы. Управлять вкладками можно при определенных условиях или же вовсе нельзя. Например, JavaScript может закрыть только ту вкладку, которую создал сам.
Год-два назад появились платформы Node.js и React Native, с ними на JavaScript пишут не только для браузера, но и для компьютеров со смартфонами. Это модные и трендовые технологии, но глобально JavaScript — язык программирования для интернета.
На JavaScript пишут для интернета и браузеров
Сейчас в веб-программировании нет ничего, что способно пошатнуть позиции JavaScript. Язык настолько удачен, что нет причин изобретать что-то другое.
С чистым JavaScript конкурируют только надстройки над ним: CoffeeScript, TypeScript, Dart. Код надстроек порой компактнее, его легче читать и отлавливать ошибки, но перед выполнением он все равно преобразуется в JavaScript.
Главная сила JavaScript — вечная молодость. Он вышел 21 год назад, но не устарел, а развивался и развивается вслед за HTML.
Серьезных конкурентов у JavaScript нет
Можно приступать к JavaScript, вообще не имея представления о программировании. JavaScript — удачный выбор для первого языка, особенно если связываешь будущее с веб-разработкой. При этом любые знания в сфере программирования будет плюсом.
Если есть опыт HTML и CSS, совсем хорошо. Создание сайта логично начать со статичных страниц на HTML и CSS, а потом оживить их при помощи JavaScript. Плюс HTML и CSS дают базовое понимание того, как устроен интернет и работают сайты.
JavaScript — подходящий первый язык, если связываешь будущее с веб-разработкой
Изучив основы JavaScript, можно копать так глубоко, как хочется.
Хорошо освоить библиотеки и фреймворки для JavaScript — наборы готовых классов с функциями. Некоторые из них настолько мощные, что полностью меняют сценарии программирования. Для JavaScript самые популярные фреймворки и библиотеки — React, jQuery и Angular2.
Код в обеих строках делает одно и то же — скрывает элемент с идентификатором «helloDiv»
Кроме фреймворков полезно изучить надстройки над JavaScript: CoffeeScript, TypeScript и Dart. Одни надстройки сделают ваш код чище и компактнее, другие — строже.
Наконец, можно взяться за серверное программирование и Node.js. Это трендовая технология, которую используют BMW, Amazon, Apple и другие серьезные компании. Так вы расширите область своих знаний JavaScript за пределы управления веб-страницей.
Для JavaScript-программиста нет потолка развития
Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии
Перестаньте писать JavaScript фреймворки! | Frontender Magazine
JavaScript фреймворки подобны смерти и налогам — неминуемы и неизбежны.
Я уверен, что если бы мог подслушать всех, кто начинает веб-проект, каждый
раз первый вопрос был бы о том, какой JavaScript фреймворк в нем будет
использоваться. Вот насколько укоренилась роль фреймворков в нашей отрасли.
Это не так, как должно быть, пора остановиться.
Давайте оглянемся назад и постараемся понять, как мы к этому пришли.
Angular и Backbone и Ember, о боже
Долгое время веб-платформы, технологичный стек наиболее
лаконично описываемый как HTML+CSS+JS, был, из-за отсутствия лучшего термина,
катастрофичным. Кто может забыть блочную модель IE или тег layer? Я уверен,
что у некоторых из вас от одних только этих слов начался нервный тик из-за
воспоминаний о старых, не добрых, временах веб-разработки.
Долгое время было много несоответствий в поведении браузеров и мы, как отрасль,
должны были писать фреймворки, чтобы скрыть эти недостатки. Проблема в том,
что расхождения были даже в фундаментальных вопросах, например
как события распространяются или какие теги поддерживаются, так что каждый
фреймворк не только прикрывал дырки, но разрабатывал свою собственную модель
того, как браузер должен работаь. На самом деле свои собственные модели, во
множественном числе, потому что вы должны изобрести модель распространения
событий, модель взаимодействия с DOM, и т.д. Много изобретений было сделано.
Фреймворки писались, каждый уникальный, как снежинка. Они расцвели как тысяча
цветов и дали нам все эти JQuery и Dojo и MochiKit и ExtJS и AngularJS и
Backbone и Ember и React.
Прошедшие десять лет мы наблюдали устойчивый парад JS фреймворков.
Но что-то ещё произошло за последние десять лет — браузеры стали лучше.
Их поддержка стандартов улучшилась, и сейчас есть вечнозелёные браузеры:
браузеры автоматически обновляются, и в каждой новой версии больше возможностей
и лучше соответствие стандартам, чем у предыдущих. И с новыми стандартами,
такими как:
Я думаю, пришло время переосмыслить модель JS фреймворков. Нет необходимости
изобретать ещё один способ сделать что-то, просто используйте HTML+CSS+JS.
Так почему же мы всё ещё пишем JS фреймворки? Я думаю, по большей части по
инерции, это привычка. Но так ли это плохо, фреймворки же, вроде, не наносят
вреда сами по себе? Что ж, давайте сначала определим то, что я имею в виду под
веб-фреймворком. Категории кода — это градиент. Он начинается простым
фрагментом, например Gist, и потом направляется ко всё более крупной коллекции
кода, достигая библиотеки, и, наконец, фреймворка:
Gist → библиотека → фреймворк
Фреймворки не только крупные библиотеки, они имеют свои собственные модели для
того, как взаимодействовать с событиями, с DOM, и т.д. Так почему избегать
фреймворков?
Абстракции
Ну, одна из проблем фреймворков, как правило, в том, что их и продаёт, то что
они абстрагируются от платформы, так что вы можете сосредоточиться на создании
программного обеспечения. Проблема в том, что теперь вам нужно знать две системы:
HTML+CSS+JS и фреймворк. Конечно, если фреймворк был бы идеально абстрагирован
от веба как платформы, за его пределы не пришлось бы выходить,
но абстракции не идеальны. Таким образом, вы должны знать HTML+CSS+JS,
потому что в какой-то момент код перестанет работать так, как вы ожидаете,
и вы будете копать, пробираясь через все слои фреймворка, чтобы понять что не так,
вплоть до HTML+CSS+JS.
Картографирование айсберга
Фреймворк как айсберг: 10%, плавающие над водой, не выглядят опасно, зато
скрытые 90% — именно то, на чём вы в конечном счете попадётесь. Я склонен считать,
что изучение фреймворка похоже на картографирование айсберга. Для того, чтобы
использовать его, вам нужно узнать о нем всё, приложить усилия и изучить все
его особенности, и в конечном счете всё будет напрасно, потому что айсберг
в любом случае растает.
Виджеты
Второе, что помогает продавать фреймворки, это то, что вы получаете в своё
распоряжение библиотеку виджетов. Но, на самом деле, не стоит использовать
фреймворк, чтобы получить доступ к виджетам, все они должны быть ортогональными
и независимыми. На сегодняшний день хороший пример — CodeMirror, редактор
подсветки синтаксиса кода написанный на JavaScript. Вы можете использовать его везде,
никаких фреймворков не требуется.
А ещё усилия, приложенные для написания виджета с использованием фреймворка,
могут пропасть впустую. Помните все виджеты, которые вы написали для MochiKit?
Много ли пользы они приносят сейчас, после перехода на Ember или Angular?
Связывание данных
Честно говоря мне это никогда не требовалось, но, в любом случае,
это стоит реализовать в виде библиотеки, а не фреймворка.
Проблема фреймворков в долгосрочной перспективе в том, что они в конечном итоге
заканчивают как хранилища, они сегментируют отрасль, виджет построенный для
фреймворка А не работает в Б. Это потерянные усилия.
Итак, как выглядит пост-фреймворковый мир?
Мой фреймворк — это HTML+CSS+JS
Основная идея в том, что фреймворки не нужны, используйте возможности уже
встроенные в HTML+CSS+JS для создания виджетов. Разбейте монолиты на куски
ортогональных компонентов, которые можно смешивать в любом сочетании.
В итоге всё это будут включать в себя Веб-компоненты.
HTML Imports, HTML шаблоны, настраиваемые элементы и Shadow DOM — все эти
технологии расширяют наши возможности. Они должны позволить нам разорвать связь
с фреймворками, позволяя создавать пригодные для повторного использования элементы
и функционал. Для наглядного представления смотрите эти статьи и библиотеки:
И что, мы все создадим <x-flipbox>
, объявим о победе, и вернемся домой?
Нет, не совсем, первое, что вам нужно для работы с веб-компонентами —
полифиллы для этой функциональности, такие как X-Tag и
Polymer. Потребность в этом будет уменьшаться с течением времени, по мере того
как браузеры конкретизируют свои реализации этих спецификаций.
Момент, который следует подчеркнуть: это полифиллы, не фреймворки,
предоставляющие собственные модели для веб-разработки, они действуют по модели
HTML5. Но нам необходимо не только это, есть ещё и
небольшие пробелы в платформе, когда один браузер немного отклоняется от
действующих стандартов, и это то, что мы должны полифиллить. В MDN,
похоже, есть много необходимого кода, потому как в документации часто содержится
короткие полифиллы для каждой функции.
Хорошо, если бы у нас была одна огромная библиотека полифиллов HTML5, но ещё
лучше было бы то, что я назвал бы «html-5-polyfill-o-matic», набор инструментов,
который позволил бы мне использовать Веб-компоненты минуя трясину HTML+JS, а
затем анализировал мой код, или статическим анализом, или через Object.observe
при работе, и выдал бы мне из всего полифилла HTML5 только то, что нужно
для моего проекта.
Этот вид функциональности ещё более важен, потому что я начал пытаться
совместить веб-компоненты и библиотеки из нескольких источников, т.е.
<x-foo>
от X-Tag и <core-bar>
от Polymer, значит ли это, что мне придётся
подключать обе эти библиотеки полифиллов?
(Оказывается, что ответ нет.) И как именно я должен получать эти
специфические элементы? И X-Tag, и Brick имеют собственные пакеты генераторов:
Если я начну создавать собственные элементы, мне нужно будет создавать и свой
собственный пакет? Я не думаю, что это масштабируемая идея, я считаю, что
нам нужны идиомы и инструменты, которые справлялись бы с этим гораздо лучше.
Это на самом деле может означать изменение того, как пишется открытый код.
«Виджет» не проект, поэтому наша работа с этими вещами должна изменится. Конечно,
продолжайте хранить код в Git, но нужны ли вам накладные расходы в виде GitHub?
Что-то более легковесное, ближе к Gist, чем к проекту, подошло бы лучше. А как
минимизировать/вулканизировать весь этот код в подходящий для
использования в моем проекте вид?
Что-то вроде Asset Graph может стать хорошим началом.
И так, что нам теперь нужно?
- Идиомы и принципы построения повторно используемых компонентов.
- Инструменты, которые работают в рамках этих идиом, для компиляции, сжатия, и т.п.
HTML, CSS, и JS. - Масштабируемый полифилл HTML5, полностью или частично построенный на основе
тех, которые сейчас реально используются.
Это то, что нам требуется для того, что бы построить будущее, в котором нам не придётся
знать последнюю модель новейшего фреймворка, вместо этого мы просто будем
работать напрямую с платформой, загружая элементы и библиотеки для своих нужд,
и тратя своё время на написание приложений, а не на картографирование айсбергов.
Вопросы и ответы
В: Почему вы ненавидите авторов фреймворков?
О: Я не ненавижу их. Некоторые из моих лучших друзей — авторы фрейворков.
Признаюсь, я немного вдохновлялся ироничной статьёй «ты погубил JavaScript»,
но я ни в коем случае не высмеиваю авторов фреймворков.
В: Вы не можете сделать ____ на HTML5, для этого вам нужен фреймворк.
О: Во-первых, это не вопрос. Во-вторых, спасибо что указали на это.
А теперь давайте работать вместе, чтобы добавить в HTML5 возможность делать ____
без фреймворка.
В: Но ____ не фреймворк, это библиотека!
О: Да, как я уже сказал, есть градиент от gist до фреймворка, и вы
можете видеть всё немного иначе, чем я. Это нормально, я не про классификацию
какой-либо конкретной части программного обеспечения, речь идет об
отдалению от фреймворков.
В: Я делал это годами с помощью ____ и ____ и ____.
О: Опять же, это не вопрос, но всё равно, это хорошо, вы должны
быть в хорошей форме, чтобы помочь всем остальным.
В: Таким образом, каждый должен переписать выпадающие меню, вкладки,
ползунки и переключатели сам?
О: Абсолютно нет, дело в том, что должен быть способ, чтобы создать те
элементы таким образом, чтобы не требовалось установки фреймворка.
В: Чувак, все эти HTML Imports скажутся на производительности сайтов
О: Если вы используете все это бездумно, то да. Вот, почему я
указывал на необходимость инструментов, компилирующих и сжимающих HTML, CSS, и
JS.
В: Так что я не должен использовать никакие библиотеки?
О: Нет, это не то, что я сказал. Я был очень осторожен с разграничением
библиотек и фреймворков. Библиотека обеспечивает ортогональный
кусок функциональности, которая может быть использована с другими библиотеками.
Библиотеки — это хорошо. А вот фреймворки требуют 100% того, от чего, по моему
мнению, стоит отказаться.
В: Но мне нравится связывание данных!
О: Много кому нравится, я только высказываю личные предпочтения. Я не
говорю, что вы не должны использовать связывание данных, только то, что вам
не нужно прикручивать весь фреймворк, чтобы получить привязку данных, для этого
есть автономные библиотеки.
в какой последовательности изучать JavaScript
Огромный инструментарий JS и тонны материалов по нему. С чего начать? Расскажем, как изучать JavaScript, и предоставим полезные ссылки.
JavaScript (JS) – нативный язык, база, а библиотеки и JavaScript фреймворки – все то, что уже «накладывается» сверху. Язык программирования JavaScript клиентский и выполняется на стороне браузера. Грубо говоря, вся нагрузка ложится именно на ПК пользователя, а не на сервер, как было бы в случае с PHP. Поэтому кривой скрипт также будет затрагивать напрямую клиента, а не сервер: хорошо для вас, да плохо для пользователя.
Подробнее о том, что такое JavaScript, вы сможете узнать из данного видео:
Не упускайте из виду JavaScript фреймворки, библиотеки и прочие инструменты.
- jQuery – дополнительная библиотека, способная облегчить работу с XHR-запросами и селекторами.
- Node.js представляет собой серверную вариацию JS.
- Gulp – автоматизация работ (напр., по сборке проекта).
- Webpack заменяет собой и Gulp, и многие другие инструменты. Это сборщик модулей, который позволяет собрать все js-файлы в необходимое кол-во пакетов, а также убедиться в правильности порядка собранных файлов.
- Angular/Vue/React. Не нужно вестись на хайповые статьи вроде «Angular vs React». Хватит одного инструмента из трех перечисленных. Остальные – по мере необходимости.
Теперь давайте условимся: идеальной последовательности не существует. Все напрямую зависит от того, чем вы занимаетесь и на что ориентированы: фронтенд или full-stack. Если первое, делайте меньший упор на взаимодействие с серверной частью, а если второе – напротив. Изучать JavaScript вы можете и по своему плану. Наш – лишь одна из возможных вариаций, которая, тем не менее, имеет право на существование.
1. JavaScript основы
Книги по JavaScript для начинающих и аналогичные видеоуроки, которые разбудят в вас веб-разработчика. Массивы, коллекции, строки и прочий базис обязательны к изучению на старте. Список литературы солидный, поэтому в первую очередь загляните сюда:
И еще много чего интересного в нашей статье 16 бесплатных книг по JavaScript.
2. jQuery
Рекомендуем ознакомиться с серией видео «Уроки jQuery» от Web Developer Blog. Вы узнаете все о jQuery, начиная синтаксисом и заканчивая практической реализацией того, что может потребоваться.
3. JavaScript: углубленное изучение
Начинаем изучать JavaScript более серьезно.
В этом поможет неплохой видеокурс от loftblog под названием «Продвинутый JavaScript»:
4. Node.js
И вот мы переходим к самому «вкусному». В сети немало материалов по Node.js, но мы предлагаем сперва ознакомиться с нашими статьями:
- Руководство для начинающих в Node.js
- Подборка бесплатных ресурсов для изучения Node.js
Далее посмотрите серию уроков Node.js от ITVDN:
Ребята излагают материал максимально доступно, так что никто не уйдет «обиженным» 😉
Менеджер пакетов, который входит в Node.js. Нужен, важен и нередко украшает требования вакансий. У Дмитрия Лаврика есть хорошее видео, разбирающее по косточкам npm в рамках основ:
Захотите узнать больше – обязательно найдете на его канале дополнительные видео, посвященные данному менеджеру.
6. Gulp
Исчерпывающий ответ на вопрос «Что это такое» дает Современный учебник JavaScript: Скринкаст по Gulp. Все выпуски скринкаста собраны в одном месте, что безумно удобно.
7. Webpack
За основой по Webpack вам на канал WebForMySelf:
Дополнительная информация по этому инструменту. Плохо с английским? Не вопрос: переведенный вариант.
8. Angular/Vue/React
Выше уже упоминалось, что можно выбрать что-то одно, но все зависит от конкретного проекта и соответствующих требований к нему. Хоть Vue.js сейчас по обсуждениям впереди планеты всей, затронем каждый из трех инструментов.
Angular курс
Vue.js
Знакомство с React
Надеемся, вам помог наш лайфхак. Если же вы знаете более эффективный способ изучить JS – поделитесь в комментариях 🙂
JavaScript Куда
Тег
.
Пример
Попробуй сам "
В старых примерах JavaScript может использоваться атрибут типа:
Веб-страница
Абзац