JavaScript

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


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 Github.png
  • Emscripten (компилирует LLVM-код в JavaScript)

Полный список языков, компилируемых в JavaScript:

Кроме того существуют виртуальные машины других языков, работающие поверх JavaScript. Например:

[править] Рабочая среда

  • браузер
  • 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

[править] Отладка

[править] jQuery

[править] Полезные библиотеки 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

Статьи:

Критика:

  • 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, и многие из них настроены по отношению к нему крайне отрицательно. Например, смотрите комментарии Головайчука:

Книги:

Полезные сайты:

Языки шаблонов:

  • ECT (англ.) — язык шаблонов с синтаксисом CoffeeScript
  • CoffeeKup Github.png — другой язык шаблонов с синтаксисом CoffeeScript

На википедии:

[править] Fullstack

  • Meteor
  • MEAN

Сравнение Meteor и MEAN-стека:

[править] Разное

[править] Rich Web Applications

Принципы построения rich web applications и всё, что с этим связано:

  • 7 Principles of Rich Web Applications (англ.) — важнейшая статья по теме; отвечает на такие вопросы как "где нужно рендерить html", "какие функции должен выполнять сам браузер, а какие приложение, работающее в нём", "какая разница между веб-сайтом и веб-приложением" и тому подобные; автор — Guillermo Rauch, автор socket.io; статья переведена на множество языков, в том числе на русский; переводы доступны по ссылке

[править] ES2015

[править] Примечания

  1. Подробнее: http://badassjs.com/post/32812527381/doppio-a-java-virtual-machine-compiler-and
  2. https://github.com/janl/mustache.js
  3. Очень хорошее введение в Mustache.js: http://coenraets.org/blog/2011/12/tutorial-html-templates-with-mustache-js/


Источник — «http://xgu.ru/wiki/JavaScript»