JavaScript является основным языком программирования, позволяющим манипулировать с DOM страниц сайтов. Это интерпретируемый язык программирования исполняемый в браузере. Изначально JavaScript был назван как Mocha, затем переименован в LiveScript. На синтаксис языка оказали влияние такие языки программирования, как Си и Java. Язык Java стал очень популярным и поэтому LiveScript был очень хитро переименован в JavaScript. Эдакий, рекламный ход, чтобы еще никому в то время неизвестный язык, был на слуху.
Стиль кода JavaScript
JavaScript как и каждый язык программирования имеет множество руководств по стилю кода. Часто рекомендуемое руководство это стиль кода для JavaScript от Google.
Объектно-ориентированное программирование
В JavaScript есть сильные объектно-ориентированные возможности программирования, однако, отличающиеся от других языков, что иногда приводит к дискуссиям.
Анонимные функции
Анонимные функции в JavaScript это функции динамически объявляемые во время выполнения, которым не присваиваются имена, как обычным функциям.
Функции как объекты первого класса
В JavaScript функции являются объектами первого класса - особый тип объекта, выполняющий все, что делают обычные объекты.
Слабо типизированный
JavaScript представляет собой язык программирования с динамической и слабой типизацией. Поэтому разработчикам, которые работали до этого с Java или C# и имели дело со строго типизированными переменными, нужно быть осмотрительными при работе с слабо типизированными переменными в JavaScript, чтобы не попасть в некоторые ловушки.
Связывание функций
Функции в JavaScript не привязаны к this. Когда вы хотите использовать связывание функции с this, то на помощь придет функция prototype.bind().
Функции замыкания
Замыкания в JavaScript это функции, ссылающиеся на свободные переменные и запоминающая окружение, в котором она создана.
Паттерны (шаблоны) проектирования
В JavaScript, кроме содержащихся шаблонов проектирования, могут быть использованы многие другие классические паттерны.
Список паттернов проектирования
- Factory
- Prototype
- Mixin
- Singleton
Создание паттернов проектирования
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Module
- Proxy
- Revealing Module
Структурные паттерны проектирования
- Chain of Responsibility
- Command
- Mediator
- Observer
MV* паттерны
В JavaScript можно применять некоторые реализации классических шаблонов MVC и его вариантов
- MVC
- MVP
- MVVM
Инструменты для тестирования JavaScript
Mocha - многофункциональная среда JavaScript-тестирования, работающая на Node.js и в браузере, что делает асинхронное тестирование простым и интересным . Тесты Mocha запускается серийно, что позволяет гибко и точно сообщать отчеты, а также отображает неотображаемые исключения в правильные тестовые примеры.
QUnit - это мощная, простая в использовании платформа тестирования модулей JavaScript. Он используется jQuery, jQuery UI и jQuery Mobile и способен тестировать любой общий код JavaScript.
Intern - позволяет писать тесты в JavaScript и TypeScript, используя любой понравившийся стиль (TDD, BDD, что угодно!).
Karma - представляет тестовую среду для разработчиков. Здесь не нужно настраивать множество конфигураций. Разработчики могут просто написать код и получить мгновенную обратную связь от своих тестов.
Jasmine - это среда для тестирования JavaScript. Он не полагается на браузеры, DOM или любые рамки JavaScript. Таким образом, он подходит для сайтов, проектов Node.js или везде, где может работать JavaScript.
Sinon.JS - позволяет проводить автономные тестовые проверки, заглушки и макеты для JavaScript. Работает с любой модульной системой тестирования.
Jest - это полное и простое решение для тестирования JavaScript.
Библиотеки
jQuery - пожалуй, самая известная и используемая библиотека для JavaScript.
ReactJS - библиотека JavaScript для создания пользовательских интерфейсов.
Underscore - библиотека JavaScript, обеспечивающая целый ряд полезных помощников по функциональному программированию без расширения каких-либо встроенных объектов.
Backbone - Backbone.js предоставляет структуру веб-приложениям с богатым API, с использованием интерфейса RESTful JSON.
RequireJS - это загрузчик файлов JavaScript и модулей. Он оптимизирован для использования в браузере, но его можно использовать в других средах JavaScript, таких как Rhino и Node.
Polymer - библиотека, помогающая создавать пользовательские элементы многократного использования в приложениях.
Dojo Toolkit - модульная библиотека для ускорения разработки JavaScript или AJAX приложений и сайтов.
Фреймворки
AngularJS - фреймворк с открытым исходным кодом для разработки одностраничных приложений на основе MVC-шаблона, упрощение тестирования и разработки.
Vue.js - прогрессивный фреймворк для создания пользовательских интерфейсов.
Emberjs - каркас веб-приложений, реализующий MVC шаблон, предназначенный для упрощения создания масштабируемых одностраничных веб-приложений.
Knockout.js - фреймворк для создания каркаса веб-приложений, реализующего Model-View-ViewModel шаблон.
JavaScriptMVC - это среда с открытым исходным кодом, содержащая лучшие идеи в разработке jQuery.
Шаблонизаторы
Handlebars - обеспечивает необходимую мощность, позволяющую эффективно создавать семантические шаблоны без каких-либо разочарований.
Jade - высокопроизводительный механизм для построения динамических шаблонов ваших JavaScript приложений.
Nunjucks - богатый и расширяемый механизм для работы с шаблонами, наследованием блоков, макросами, асинхронным управлением.
Mustache.js - логический шаблонный синтаксис для HTML, расширения тегов в шаблоне, используя значения, представленные в хеше или объекте.
Transparency -минимальный механизм шаблонов для jQuery. Он сопоставляет объекты JSON с элементами DOM с нулевой конфигурацией.
Hogan.js - шаблонный движок, разработанный в Twitter. Используйте его как часть вашего пакета ресурсов для компиляции и обработки динамических шаблонов.
Анимация
GSAP - быстрый набор скриптов для создания анимации.
TweenJS - это простая и мощная библиотека JavaScript для анимации элементов HTML5.
Snap.svg - позволяет создавать интерактивную, независимую от разрешения векторную графику, которая отлично смотрится на любом экране размера.
Textillate.js - позволяет использовать удивительную CSS3-анимацию для любого текста
Game Dev
MelonJS - движок с открытым исходным кодом, который позволяет разработчикам и дизайнерам сосредоточиться на контенте.
Whs.js - простой и крутой набор для создания 3D-сцен на основе готовых компонентов с высокой производительностью.
Kiwi.js - веселый и дружелюбный движок Open Source HTML5 Game Engine.
Круто! Очень полезная статья. Добавил себе в закладки.