JavaScript
Материал из Xgu.ru
JavaScript — высокоуровневый интерпретируемый нетипизированный язык программирования. Наряду с HTML и CSS является основой построения Web. Он используется на подавляющем большинстве web-сайтов в Интернете, и поддерживается всеми основными web-браузерами.
Язык используется не только в браузерах на клиентской стороне, но и на серверной стороне, например, с помощью таких систем как node.js.
В насоящее время существует несколько реализаций языка JavaScript, в том числе SpiderMonkey (использующийся в Firefox), V8 (используется в Google Chrome и Opera, а так же в Node.js и MongoDB), Chakra (использующийся в Internet Explorer и Microsoft Edge), JavaScriptCore (использующийся в Safari и так же известный как Nitro), KJS (использующийся в Konqueror) и множество других. На середину 2016 существовало около 15 активных реализаций JavaScript, и четыре заброшенных.
Изначально JavaScript был разработан для браузера Netscape Navigator в 1996 году. В том же году Microsoft выпустил свою реализацию, названную JScript. Первая стандартизированная версия языка вышла в 1997 году, она была описана стандартом ECMAScript. С тех по стандарт несколько раз модифицировался, на сегодняшний день актуален стандарт ES6 (ECMAScript 2015), выпущенный в июне 2015 года. Он поддерживается не всеми браузерами, но он может быть сконвертирован (транспилирован) в ES5 с помощью таких проектов как Babel (поддержка различными браузарами: https://kangax.github.io/compat-table/es6/).
Первоначально язык был интерпретируемым, но сейчас в большинстве случаев он компилируется just-in-time.
Содержание |
[править] Движки и реализации
- SpiderMonkey (Mozilla), написан на C++
- Rhino (Mozilla), написан на Java
- V8 (Google)
- Chakra (MS IE 8.0)
[править] V8
[править] Rhino
Использование из командной строки:
$ java -jar js.jar Rhino 1.7 release 1 2008 03 06 js> ["hello", "world"].join(", ") hello, world
Скачать его можно здесь: Rhino.
[править] Модули, библиотеки, фреймворки
Вокруг языка JavaScript создана огромная экосистема, насчитывающая буквально десятки тысяч различных проектов, призванных решать отдельные маленькие задачи или закрывать широчайший спектр направлений одним махом. Здесь мы приводим несколько сотен наиболее важных, схематично обозначая связи между ними, для того чтобы можно было получить начальное представление о современной экосистеме JavaScript.
[править] Управление модулями
Сравнение: https://webpack.github.io/docs/comparison.html
[править] Webpack
[править] Browserify
[править] RequireJS
[править] npm (*)
[править] componentjs (*)
[править] Тестирование
[править] Mocha
[править] Karma
[править] Server Side + Command Line
[править] CheerIO
[править] jsdom
[править] commander
[править] UI
[править] React
[править] Сборка и воркфлоу
[править] Gulp
[править] Grunt
[править] React
[править] React
[править] React Router
[править] Flux
[править] Redux
[править] Компиляция в JavaScript
JavaScript может использоваться не только для написания собственно программ на нём, но и как таргет-язык, на который осуществляется компиляция с другого языка.
Примеры:
- ClojureScript
- CoffeeScript
- Scala.js
- Emscripten (компилирует LLVM-код в JavaScript)
Полный список языков, компилируемых в JavaScript:
Кроме того существуют виртуальные машины других языков, работающие поверх JavaScript. Например:
- Doppio (https://github.com/int3/doppio ) — реализация JVM поверх JavaScript (написанная на TypeScript)[1].
[править] Рабочая среда
- браузер
- node.js
- npm
- редактор + интегрированный статический анализ (vim+syntastic+jshint)
- строгая настройка jshint (особенно для начала), например [1]
Сайты/сервисы:
- jsfiddle.net
- JSBin
- JSApp.us – Shell for node.js development
Большая подборка инструментов, служб, вспомогательных библиотек:
[править] Книги
Книги по JavaScript, которые обязательно стоит прочитать:
- Eloquent JavaScript
- JavaScript Good Parts
- JavaScript: The Definitive Guide
- Secrets of the JavaScript Ninja
- JavaScript Patterns
- Learning JavaScript Design Patterns [2]
[править] Дополнительная информация
[править] Основы
- Eloquent JavaScript (англ.) простое и понятное введение в язык JavaScript
- Code Conventions for the JavaScript Programming Language (англ.) — соглашения по оформлению кода JavaScript, страница Дугласа Крокфарда, автора JavaScript: The Good Parts
- JavaScript Garden (англ.) — документация по наиболее мутным частям JavaScript, есть перевод на множество языков, в том числе русский
[править] Дружба Lisp и JavaScript
- The Little JavaScripter (англ.)
- JavaScript and Lisp (англ.) — размышления на тему, как много общего у Лиспа и JavaScript и о том, что для многих JavaScript может быть мостом в мир Лиспа
- Parenscript (англ.) — переводчик с Common Lisp на JavaScript
[править] Отладка
- JavaScript Debugging for Beginners (англ.) небольшое введение в вопрос
[править] jQuery
- jQuery Fundamentals (англ.)
[править] Полезные библиотеки JavaScript
- Google CDN (англ.) содержит наиболее важные библиотеки JavaScript
- http://cdnjs.com/ (англ.) содержит менее важные, но не менее интересные библиотеки
- less.js — удобная работа с CSS;
- leaflet — карты;
- Backbone.js — MVC-фреймворк (клиентский);
- Underscore.js — вспомогательная библиотека с множеством удобных функций;
- Mustache.js[2] — JavaScript-реализация языка шаблонов Mustache[3];
- Require.js — управление зависимостями;
[править] Node.js
[править] CoffeeScript
Статьи:
- The Absolute Beginner’s Guide to CoffeeScript (англ.)
- Using jQuery with CoffeeScript (англ.) — использование CoffeeScript с jQuery (очень кратко)
- How CoffeeScript makes jQuery more fun than ever (англ.) — использование CoffeeScript с jQuery (немного подробнее)
Критика:
- Why I Don't Use CoffeeScript (англ.)
- CoffeeScript is not a language worth learning (англ.) — в действительности это не совсем критика, а скорее наоборот: замаскированная под критику аргументация, почему CoffeeScript это хорошо и правильно (если кратко: CofeeScript это не язык, а синтаксическая оболочка для JavaScript, которая компилируется потом в хороший JavaScript, использующий только JavaScript Good Parts; CoffeeScript приучает использовать только правильные фичи языка).
Вообще, существует очень широко распространённое мнение, что CoffeScript это скорее плохо, чем хорошо. Почти все крутейшие разработчики JS/Node не используют CoffeeScript, и многие из них настроены по отношению к нему крайне отрицательно. Например, смотрите комментарии Головайчука:
- http://procbits.com/2012/05/18/why-do-all-the-great-node-js-developers-hate-coffeescript
- http://ryanflorence.com/2011/case-against-coffeescript/
- http://ryanflorence.com/2012/javascript-coffeescript-rewrite/
Книги:
- The Little Book on CoffeeScript (англ.)
- Smooth CoffeeScript (англ.)
- CoffeeScript Cookbook (англ.)
Полезные сайты:
- Covert JavaScript to CoffeeScript (англ.) (и назад)
- CoffeeLint (англ.) — Lint для CoffeeScript
Языки шаблонов:
- ECT (англ.) — язык шаблонов с синтаксисом CoffeeScript
- CoffeeKup — другой язык шаблонов с синтаксисом CoffeeScript
На википедии:
[править] Fullstack
- Meteor
- MEAN
Сравнение Meteor и MEAN-стека:
[править] Разное
- Сравнение Erlang и Node.js (рус.)
- List of languages that compile to JS (англ.)
[править] Rich Web Applications
Принципы построения rich web applications и всё, что с этим связано:
- 7 Principles of Rich Web Applications (англ.) — важнейшая статья по теме; отвечает на такие вопросы как "где нужно рендерить html", "какие функции должен выполнять сам браузер, а какие приложение, работающее в нём", "какая разница между веб-сайтом и веб-приложением" и тому подобные; автор — Guillermo Rauch, автор socket.io; статья переведена на множество языков, в том числе на русский; переводы доступны по ссылке
[править] ES2015
[править] Примечания
- ↑ Подробнее: http://badassjs.com/post/32812527381/doppio-a-java-virtual-machine-compiler-and
- ↑ https://github.com/janl/mustache.js
- ↑ Очень хорошее введение в Mustache.js: http://coenraets.org/blog/2011/12/tutorial-html-templates-with-mustache-js/