Бписки javascript: Array — JavaScript | MDN

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Бписок Javascript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для рисования Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ 2 / Π₯Π°Π±Ρ€

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ‚Π΅ΠΌΡƒ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅.

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Ρ‚ΠΎΠΏΠΈΠΊΠΈ:

  • Π˜Π·ΡƒΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ с Π½ΠΎΠ²Ρ‹ΠΌ Chart ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΠΌ
  • Визуализация Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ² Π² Π²Π΅Π±Π΅
  • Бписок Javascript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для рисования Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ β€” habrahabr.ru/blogs/javascript/79960 (публикация Π² Π±Π»ΠΎΠ³Π΅ β€” msug.vn.ua/blogs/akrakovetsky/archive/2010/01/04/javascript-charting-libraries.aspx)

flot

flot β€” Javascript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для jQuery, позволяСт ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

ЛицСнзия: MIT

Π‘Π°ΠΉΡ‚: code.google.com/p/flot

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹: Internet Explorer 6/7/8, Firefox 2.x+, Safari 3.0+, Opera 9.5+ ΠΈ Konqueror 4.x+ с canvas

API Google Chart

API Google Chart позволяСт динамичСски ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ line, bar, pie ΠΈ radar charts, Π° Ρ‚Π°ΠΊΠΆΠ΅ venn diagrams, scatter plots, sparklines, maps, google-o-meters ΠΈ QR ΠΊΠΎΠ΄Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с API Chart Π² дСйствии, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ скопируйтС Π² строку адрСса ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ URL:

habrastorage.org/getpro/habr/post_images/d2b/c94/dfa/d2bc94dfab98371241fcbf005d576fd1.png

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π‘Π°ΠΉΡ‚: code.google.com/intl/ru/apis/chart

Для PHP программистов: luddep.se/notebook/2008/04/13/charts-php-and-google-charts-api

ChartMaker β€” open source Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, построСна Π½Π° Javascript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ext JS ΠΈ являСтся ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΎΠΉ для Google Chart API.

Π‘Π°ΠΉΡ‚: almaer.com/chartmaker

Processing.js

Processing.js is β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ язык программирования для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π±Π΅Π· использования flash ΠΈΠ»ΠΈ java Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ². Processing.js ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Javascript для рисования, Π° Ρ‚Π°ΠΊΠΆΠ΅ canvas.

Π‘Π°ΠΉΡ‚: processingjs.org

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹: FireFox, Safari, Opera ΠΈ Chrome

ЛицСнзия: свободноС использованиС

moowheel

moowheel ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Javascript ΠΈ canvas элСмСнта. Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Mootools 1.2.

Π”Π΅ΠΌΠΎ: www.unwieldy.net/projects/moowheel/demo/large.html

Π‘Π°ΠΉΡ‚: www.unwieldy.net/projects/moowheel

Google Code: code.google.com/p/moowheel

ЛицСнзия: MIT

JSXGraph

JSXGraph позволяСт Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ гСомСтричСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹.

ВозмоТности:
* гСомСтрия Π­Π²ΠΊΠ»ΠΈΠ΄Π°: Ρ‚ΠΎΡ‡ΠΊΠΈ, Π»ΠΈΠ½ΠΈΠΈ, ΠΊΡ€ΡƒΠ³ΠΈ, пСрСсСчСния, пСрпСндикулярныС Π»ΠΈΠ½ΠΈΠΈ, ΡƒΠ³Π»Ρ‹
* Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ: Graphs, parametric curves, polar curves, data plots, Bezier curves
* Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ уравнСния
* Lindenmayer systems
* слайдСры
* анимация
* полиномиальная интСрполяция, сплайны
* Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ
* Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹

Π‘Π°ΠΉΡ‚: jsxgraph.uni-bayreuth.de/wp

ЛицСнзия: LGPL – Lesser GNU General Public License

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹: Mozilla Firefox 2.0+, Opera, Safari 3+, Google Chrome, Microsoft Internet Explorer 6+

Prototype + Canvas = ProtoChart

ProtoChart β€” open source Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ canvas ΠΈ Prototype.

Π‘Π°ΠΉΡ‚: www.deensoft.com/lab/protochart

ВозмоТности:
* Line, bar, pie, curve, mix ΠΈ area charts
* ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСрий Π΄Π°Π½Π½Ρ‹Ρ…
* настраиваСмыС Π³Ρ€ΠΈΠ΄Ρ‹, Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, Ρ„ΠΎΠ½
* настраиваСмыС оси
* ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ IE6/7, FF2/3 and Safari
* Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° iPhone

jQuery Sparklines

jQuery Sparklines β€” ΠΏΠ»Π°Π³ΠΈΠ½ для построСния Π½Π° Π»Π΅Ρ‚Ρƒ sparklines.

Π‘Π°ΠΉΡ‚: www.omnipotent.net/jquery.sparkline

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹: Firefox 2+, Safari 3+, Opera 9, Google Chrome ΠΈ Internet Explorer 6, 7 & 8.

ЛицСнзия: BSD

fgCharting

fgCharting β€” jQuery ΠΏΠ»Π°Π³ΠΈΠ½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ canvas для построСния Π³Ρ€Π°Ρ†ΠΈΠΊΠΎΠ² ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†.

Π‘Π°ΠΉΡ‚: www.filamentgroup.com/lab/creating_accessible_charts_using_canvas_and_jquery

ЛицСнзия: MIT

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹: IE6, IE7, IE8, Firefox 2, Firefox 3.5, Safari 3 ΠΈ 4, Opera 9.

Пока всС. Π”Π°Π»ΡŒΡˆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Flash / Sliverlight Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ссли вопрос Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ πŸ™‚

Бпасибо за вниманиС!

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ список инструмСнтов для JavaScript

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ экосистСмС JavaScript сущСствуСт мноТСство инструмСнтов. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π°Π²Ρ‚ΠΎΡ€Π° инструмСнты Ρ€Π°Π±ΠΎΡ‚Ρ‹ с JavaScript.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ сборки ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ;
  • IDE ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ΄Π°;
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ докумСнтирования ΠΊΠΎΠ΄Π°;
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ тСстирования;
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ;
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ бСзопасности;
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°;
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ управлСния вСрсиями;
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΈ зависимостями.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ сборки ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ

  • WebpackΒ β€” прСдставляСт собой ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‰ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаёт Π³Ρ€Π°Ρ„ зависимостСй со всСми модулями для прилоТСния Π½Π° JavaScript. WebpackΒ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Webpack ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС срСдства запуска Π·Π°Π΄Π°Ρ‡, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ модулями ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ рСсурсы (ассСты). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ с использованиСм Webpack Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π² нашСй ΡΡ‚Π°Ρ‚ΡŒΠ΅.
  • GruntΒ β€” таск Ρ€Π°Π½Π½Π΅Ρ€, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ экосистСмС сущСствуСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (Π±ΠΎΠ»Π΅Π΅ 6000).
  • GulpΒ β€”Β Π½Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ диспСтчСр запуска Π·Π°Π΄Π°Ρ‡, Π° инструмСнт с интСрСсным ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ: ΠΎΠ½ опрСдСляСт Π·Π°Π΄Π°Ρ‡ΠΈ Π² JavaScript ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ GUl Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Β«Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹Π΅Β» Π·Π°Π΄Π°Ρ‡ΠΈ, прСдлагая ΠΎΠ±ΡˆΠΈΡ€Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ экосистСму (Π±ΠΎΠ»Π΅Π΅ 2700 ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²), Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ½ обСспСчиваСт Π»ΡƒΡ‡ΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ процСссом.
  • Browserify позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ стиля NodeJS Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…. Π’Ρ‹ опрСдСляСтС зависимости, Π° Broweserify ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ всё это Π² Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ JS-Ρ„Π°ΠΉΠ».
  • Brunch.ioΒ β€” инструмСнт, основными идСями ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ простота. Он поставляСтся с простой ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ для быстрого запуска. Brunch автоматичСски создаёт ΠΊΠ°Ρ€Ρ‚Ρƒ JS-Ρ„Π°ΠΉΠ»ΠΎΠ² вмСстС с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ стилСй CSS, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
  • YeomanΒ β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΡ‡Ρ‚ΠΈ Π»ΡŽΠ±Ρ‹ΠΌ языком программирования (JavaScript, Python, C#, Java ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅). Π­Ρ‚Π° базовая систСма ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ с Π±ΠΎΠ³Π°Ρ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ экосистСмой (Π±ΠΎΠ»Π΅Π΅ 6200 ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²) слуТит для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Благодаря Yeoman Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ быстро ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Π½Π΅ забывая ΠΎΠ± обслуТивании ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ….

IDE ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ΄Π°

  • WebStormΒ β€” мощная IDE для ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° JavaScript. Она ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈ языков Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ. WebStorm ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ инструмСнтами Π²Ρ€ΠΎΠ΄Π΅ тСстСров, срСдств контроля качСства ΠΊΠΎΠ΄Π°, сборщиков ΠΈ Ρ‚. Π΄. Π’ IDE Ρ‚Π°ΠΊΠΆΠ΅ встроСны Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ автоматичСскоС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ошибок, навигация, встроСнный Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.
  • Atom — бСсплатный ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΎΡ‚ GitHub ΠΈ Π²Ρ‹Π±ΠΎΡ€ β„–1 для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Он прСдставляСт собой Π»Π΅Π³ΠΊΠΎ настраиваСмый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ интСрСсными функциями «прямо ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ».
    Π’ Atom имССтся встроСнный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ автоматичСскоС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ Atom являСтся кроссплатформСнным Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ΄Π°.
  • Visual Studio Code — поддСрТиваСтся ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Microsoft ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ TypeScript «прямо ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ». Π’ Visual Studio Code Π΅ΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ подсвСтка синтаксиса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ автодополнСния IntelliSense, Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ встроСнный инструмСнт ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, встроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ Git, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.
  • BracketsΒ β€” это Π»Ρ‘Π³ΠΊΠΈΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Β Π’ основном ΠΎΠ½ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ процСссора для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Brackets поставляСтся с ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ просмотра Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ докумСнтирования ΠΊΠΎΠ΄Π°

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Β«ΡΡ‚Π΅ΠΊΠ»ΡΠ½Π½ΡƒΡŽ ΠΊΠΎΡ€ΠΎΠ±ΠΊΡƒΒ», показывая, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ автоматичСского докумСнтирования ΠΊΠΎΠ΄Π° ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΡ… назначСния, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя Π½Π° Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

  • Swagger — это Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈ инструмСнтов для описания API. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ прСдставляСт собой ΡΠ·Ρ‹ΠΊΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Swagger создаёт Ρ‡Ρ‘Ρ‚ΠΊΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, которая читаСтся ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΊΠ°ΠΊ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ машиной, позволяя Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСссы зависящиС ΠΎΡ‚ API.
  • JSDocΒ β€”Β Π½Π°Π±ΠΎΡ€ инструмСнтов, автоматичСски ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½ΡƒΡŽ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ (HTML, JSON, XML ΠΈ Ρ‚. Π΄.)Β  ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈΠ· исходного ΠΊΠΎΠ΄Π° Π½Π° JavaScript. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ для управлСния ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ.
  • jGrouseDoc (jGD) — это Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ API ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈΠ· исходного ΠΊΠΎΠ΄Π° Π½Π° JavaScript. jGD Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΈ пространства ΠΈΠΌΡ‘Π½, интСрфСйсы, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты.
  • YUIDocΒ β€”Β ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, написанноС Π½Π° NodeJS. Оно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ синтаксис, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ‚ΠΎΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСняСтся Π² Javadoc ΠΈ Doxygen. Π’Π°ΠΊΠΆΠ΅ инструмСнт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ просмотра Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ языка ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ.
  • Docco — бСсплатный инструмСнт для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, написанный Π½Π° Β«Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π½ΠΎΠΌΒ» CoffeeScript. Он создаёт HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ для отобраТСния Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…ΡΡ с ΠΊΠΎΠ΄ΠΎΠΌ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ инструмСнт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ JavaScript, Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки. НапримСр, Python, Ruby, Clojure ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ тСстирования

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ тСстирования для JavaScript созданы для обнаруТСния ошибок Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ошибок Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π‘ ростом слоТности ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ автоматичСскиС тСсты Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния, Π½ΠΎ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ компаниям ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚.

  • JasmineΒ β€”Β BDD-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ (Behavior-driven Development β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° основС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ) слуТит для тСстирования JS-ΠΊΠΎΠ΄Π°. Π£ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй, ΠΈ ΠΎΠ½ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ запуска DOM. Jasmine ΠΈΠΌΠ΅Π΅Ρ‚ чистый ΠΈ понятный синтаксис, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΡΠΊΠΎΡ€ΡΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Ρ‚ΡŒ тСстированиС. Π’Π°ΠΊΠΆΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для тСстирования ΠΊΠΎΠ΄Π° Python ΠΈ Ruby.
  • Mocha — это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ тСстовая срСда, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Π½Π° Node.js Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Она ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ тСсты ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для обСспСчСния Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ отчётности, дСлая асинхронныС тСсты вСсёлыми ΠΈ Π»Ρ‘Π³ΠΊΠΈΠΌΠΈ. Mocha часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вмСстС с Chai для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² тСста.
  • PhantomJS часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для интСрфСйсных тСстов ΠΈ ΡŽΠ½ΠΈΡ‚-тСстов. Учитывая Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Β«Π±Π΅Π·Π³ΠΎΠ»ΠΎΠ²ΠΎΠ³ΠΎΒ» WebKit, скрипты Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π΅Π±-стандартов. НапримСр, JSON, Canvas, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ DOM, SVG ΠΈ сСлСкторы CSS.
  • Protractor — это сквозной тСстовый Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, написанный Π½Π° Node.js для тСстирования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° AngularJS ΠΈ Angular. Он Π±Ρ‹Π» создан Π½Π° основС WebDriverJS ΠΈ провСряСт прилоТСния ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ встроСнныС события.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π° β€” довольно Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΈΠΉ ΠΈ ΠΏΠΎΠ³Π»ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ врСмя процСсс для JavaScript-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тысячами строк ΠΊΠΎΠ΄Π°. МногиС ΠΈΠ· инструмСнтов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ довольно Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

  • JavaScript Debugger — инструмСнт ΠΎΡ‚ сообщСства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Mozilla (MDN), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…. Firefox ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° Android-устройствС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Firefox для Android.
  • Chrome Dev ToolsΒ β€”Β Π½Π°Π±ΠΎΡ€ инструмСнтов, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² сСбя нСсколько ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° JavaScript, рСдактирования CSS ΠΈ тСстирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • ng-inspector — кроссбраузСрноС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ·Π²Π°Π½ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ с написаниСм, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° AngularJS. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° поставляСтся с обновлСниями Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, подсвСткой DOM, прямым доступом ΠΊ областям, модСлям ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌ элСмСнтам прилоТСния.
  • AuguryΒ β€”Β Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Google Chrome ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Angular 2. Оно позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Angular 2 Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуру прилоТСния ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ характСристики, Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ измСнСния.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ бСзопасности

  • Snyk — коммСрчСский инструмСнт для обнаруТСния, исправлСния ΠΈ прСдотвращСния извСстных уязвимостСй Π² прилоТСниях Π½Π° JavaScript, Java ΠΈ Ruby. Π‘Π»ΡƒΠΆΠ±Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… уязвимостСй ΠΈ Π±Π΅Ρ€Ρ‘Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· NSP ΠΈ NIST NVD. ΠŸΠ°Ρ‚Ρ‡ΠΈ ΠΈ обновлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ компания, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ΡŒ риски, связанныС с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ.
  • Node Security ProjectΒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ инструмСнты для сканирования зависимостСй ΠΈ обнаруТСния уязвимостСй. NSP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π½Π° сканировании ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ npm, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ±Ρ‰ΠΈΡ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ NIST NVD (National Vulnerability Database). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, NSP обСспСчиваСт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм GitHub Pull Request ΠΈ CI. Π’Π°ΠΊΠΆΠ΅ имССтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, прСдупрСТдСния ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ уязвимостСй Π² прилоТСниях Π½Π° Node.js.
  • RetireJS — это срСдство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ зависимостСй с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ сканСр ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΏΠ»Π°Π³ΠΈΠ½ Grunt, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Firefox ΠΈ Chrome, ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Burp ΠΈ OWASP ZAP. Retirejs собираСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± уязвимостях ΠΈΠ· NIST NVD ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… источников, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ систСмы отслСТивания ошибок, Π±Π»ΠΎΠ³ΠΈ ΠΈ списки рассылки.
  • Gemnasium — это коммСрчСский инструмСнт с бСсплатной ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсиСй. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ruby, PHP, Bower (JavaScript), Python ΠΈ npm (JavaScript). Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ бСзопасности Gemnasium поставляСтся с ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ функциями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, оповСщСния Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, увСдомлСния ΠΎ бСзопасности ΠΈ интСграция с сСрвисом Slack.
  • OSSIndexΒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ экосистСмы (Java, JavaScript ΠΈ .NET / C #) ΠΈ мноТСство ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ NuGet, npm, Bower, Chocolatey, Maven, Composer, Drupal ΠΈ MSI. Он собираСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± уязвимостях ΠΈΠ· ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… уязвимостСй (NVD) ΠΈ ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ Ρ‡Π»Π΅Π½ΠΎΠ² сообщСства.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ качСства ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ ΡŽΠ½ΠΈΡ‚-Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Однако сущСствуСт Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ качСство ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ соотвСтствиС стандартам кодирования, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ статичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°.

Π’ настоящСС врСмя Π² соврСмСнном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ инструмСнты Π°Π½Π°Π»ΠΈΠ·Π° статичСского ΠΊΠΎΠ΄Π° Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ нСкачСствСнного ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½.

  • JSLint β€” это аналитичСский Π²Π΅Π±-инструмСнт для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ качСства ΠΊΠΎΠ΄Π° JavaScript. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² источникС, ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сообщСниС с описаниСм ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ мСстополоТСниСм Π² ΠΊΠΎΠ΄Π΅. JSLint способСн Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΎΡ€ΠΌΡ‹ стиля ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ синтаксичСскиС ошибки ΠΈ структурныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.
  • JSHint β€” Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ сообщСством, для обнаруТСния ошибок ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² вашСм JS-ΠΊΠΎΠ΄Π΅, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, JSHint β€” Ρ„ΠΎΡ€ΠΊ ΠΎΡ‚ JSLint. Основная Ρ†Π΅Π»ΡŒ этого инструмСнта статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° β€” ΠΏΠΎΠΌΠΎΡ‰ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ JavaScript, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ Π½Π°Π΄ слоТными ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. Он способСн ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ошибки синтаксиса, нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ отсутствиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Однако ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ вашСго прилоТСния, ΠΊΠ°ΠΊ ΠΈ Π½Π΅ смоТСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. JSHint β€” Ρ„ΠΎΡ€ΠΊ ΠΎΡ‚ JSLint.
  • ESLint β€” это Π»ΠΈΠ½Ρ‚Π΅Ρ€ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ JSX ΠΈ JavaScript. Он ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΈΠ»ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ соотвСтствуСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ стилям. Π­Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ошибки Π² JS-ΠΊΠΎΠ΄Π΅ Π±Π΅Π· Π΅Π³ΠΎ выполнСния, Ρ‚Π΅ΠΌ самым экономя врСмя. Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ написанным Π½Π° Node.js, инструмСнт ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ срСду выполнСния ΠΈ ΠΏΠ»Π°Π²Π½ΡƒΡŽ установку Ρ‡Π΅Ρ€Π΅Π· npm.
  • Flow β€” статичСский ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Ρ‘Ρ€ ΠΊΠΎΠ΄Π° для JavaScript, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Facebook. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ статичСского Ρ‚ΠΈΠΏΠ° для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ошибок. Π’ΠΈΠΏΡ‹ β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, установлСнныС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, Π° Flow провСряСт вашС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Π½Π° соотвСтствиС трСбованиям.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ управлСния вСрсиями

  • Π’ послСдниС Π³ΠΎΠ΄Ρ‹ Git стала ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ систСмой контроля вСрсий ΠΊΠ°ΠΊ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, Ρ‚Π°ΠΊ ΠΈ для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚Π° бСсплатная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° обСспСчиваСт ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. Π•Ρ‘ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ распрСдСлённой систСмой ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ элСмСнтов управлСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ, Π³Π΄Π΅ вСрсии ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ просмотрСны ΠΈ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ фиксации.
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Subversion ΠΈΠ»ΠΈ SVN ΠΏΡ€ΠΈΠΎΠ±Ρ€Ρ‘Π» ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, ΠΈ ΠΎΠ½ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ Python Apache ΠΈΠ»ΠΈ Ruby. Π­Ρ‚ΠΎΡ‚ CVS поставляСтся со мноТСством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ опСрациями (ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚. Π΄.), слияниями, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΈ зависимостями

  • Bower β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Twitter, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ рСсурсами, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ. Она ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ доступ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², помогая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ JavaScript ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.
  • Npm β€” диспСтчСр ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Node.js. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ для Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°, Ρ‚Π°ΠΊ ΠΈ для бэкСнда. Npm являСтся систСмой управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ для JavaScript ΠΈ самым большим рССстром ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π² ΠΌΠΈΡ€Π΅.
  • Yarn β€” инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΠ±Ρ€Ρ‘Π» ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ благодаря Google, Facebook, Tilde ΠΈ Exponent. ОсновноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² Π½Ρ‘ΠΌ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ бСзопасности, скорости ΠΈ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ позволяСт совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ вмСстС с Ρ„Π°ΠΉΠ»ΠΎΠΌ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚.
  • Duo Π²ΠΎΠ±Ρ€Π°Π» Π² сСбя Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΈΠ· Browserify, Component ΠΈ Go, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° Π² быстрый ΠΈ простой процСсс. Основная идСя Duo Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠΈ написания ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ создания ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ быстро ΠΈ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ.

Бписок Π»ΡƒΡ‡ΡˆΠΈΡ… инструмСнтов для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ Π΄ΠΎ бСсконСчности. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ лишь популярныС ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Π΅ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слуТат основой для качСствСнных ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«The ultimate list of JavaScript toolsΒ»

Π Π΅ΠΊΠ»Π°ΠΌΠ° Π½Π° Tproger: Π½Π°ΠΉΠ΄Π΅ΠΌ для вас Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ стСка ΠΈ уровня.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅

Π Π΅ΠΊΠ»Π°ΠΌΠ° Π½Π° tproger.ru

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°

2 способа ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ массивы Π² JavaScript

Π’ΠΎΡ‚ 2 способа ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ваши массивы ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΠžΠ’Π«Π™ массив. МнС нравится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Spread. Но Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° старых Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Concat.

  • ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис concat
  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ спрСдом ΠΏΡ€ΠΎΡ‚ΠΈΠ² CONCAT
    • ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Расбор с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ
  • Merge Array с Push πŸ€”
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°

Alternative Concat Syntax

  • 0021

    Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ concat , Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ:

    Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‚Π°ΠΊΠΎΠΉ способ написания Π½Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ Π½Π΅ измСняСт ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ массив.

    Какой Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ?

    Π”Π°Π²Π°ΠΉΡ‚Π΅ пСрСчислим ΠΎΠ±Π΅ вСрсии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΡ… Π² сравнСнии.

    Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вопрос, ΠΊΠ°ΠΊΠΎΠΉ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ πŸ€”. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ вСрсии A , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ яснСС. ΠŸΡ€ΠΎΡΡ‚ΠΎ взглянув Π½Π° Π½Π΅Π³ΠΎ, я знаю, Ρ‡Ρ‚ΠΎ создаю Π½ΠΎΠ²Ρ‹ΠΉ массив, Π° Π½Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ массивом. А Ссли я ΡΠΌΠΎΡ‚Ρ€ΡŽ Π½Π° Version B , каТСтся, Ρ‡Ρ‚ΠΎ я добавляю массив Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² ΠΊ массиву Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ , ΠΈ ΠΌΠ½Π΅ Π½Π΅ каТСтся ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ массив Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Π½Π΅ измСняСтся. Но, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ я. МнС Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅?

    ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° самом Π΄Π΅Π»Π΅ Ρƒ мСня Π½Π΅Ρ‚ сущСствСнной ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΊΡ€ΠΎΠΌΠ΅ эстСтичСской, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈ ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ πŸ‘

    Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Spread ΠΈ Concat

    Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ распространСниС , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π½Π°Ρ…ΠΎΠΆΡƒ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΈ Π»Π΅Π³ΠΊΠΈΠΌ для написания. НО, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ прСимущСства использования concat .

    РаспространСниС β€” это фантастика, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с массивами. Но Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° источником являСтся Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ строка. И Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эту строку Π² массив. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ

    ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ это ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

    A. ИспользованиС Spread

    И Ссли ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΌΡ‹ использовали ΠΈ использовали ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ спрСда. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ получаСтся:

    ☝️ Если ΠΌΡ‹ растянСм Π½Π°ΡˆΡƒ строку, ΠΎΠ½Π° Ρ€Π°Π·ΠΎΠ±ΡŒΡ‘Ρ‚ слово Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, это Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ.

    B. ИспользованиС Concat

    НО, Ссли ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ concat, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ получаСтся:

    ☝️ ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

    Π― знаю, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· вас Ρ‚Π°ΠΊΠΈΠ΅, Π°Π³Π°! Π― просто Π½Π°ΠΏΠΈΡˆΡƒ нСсколько условий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽ, являСтся массивом, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡŽ Π΅Π³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Ρ‚ΠΎΠΆΠ΅ сработаСт. Или просто ΠΏΠΈΡˆΠΈΡ‚Π΅ мСньшС ΠΊΠΎΠ΄Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ concat ΠΈ ΠΏΠΎΠΊΠΎΠ½Ρ‡ΠΈΠΌ с πŸ˜‚

    Π’Π΅Ρ€Π΄ΠΈΠΊΡ‚

    Π˜Ρ‚Π°ΠΊ, Π²ΠΎΡ‚ быстроС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с массивами, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ spread . Но Ссли Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅-массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ concat для объСдинСния массива πŸ‘

    Π’ любом случаС, я просто Ρ…ΠΎΡ‡Ρƒ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящий ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² зависимости ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ. Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ πŸ‘

    ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Push πŸ€”

    НСкоторыС ΠΈΠ· вас ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚, Π° нСльзя Π»ΠΈ ΠΌΠ½Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ массив. И Π΄Π°, Π²Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅! Но ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ push , ΠΎΠ½ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ массивом ΠΈΠ»ΠΈ измСняСт Π΅Π³ΠΎ. Он НЕ создаСт Π½ΠΎΠ²Ρ‹ΠΉ массив. Π˜Ρ‚Π°ΠΊ, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎΠ± этом.

    Π’Π°ΠΊΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ массив Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ массив. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли Π²Ρ‹ этого Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ 😜

    ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°

    РаспространСниС Π±Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π² ES6, поэтому Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ всС соврСмСнныС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ «Ρ слишком ΠΊΡ€ΡƒΡ‚» Internet Explorer — Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ‚Π°ΠΌ Π½Π΅Ρ‚ πŸ˜•. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° IE, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто concat ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ компилятор, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Babel.

    • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°: РаспространСниС
    • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°: Concat

    РСсурсы

    • MDN Π’Π΅Π± -Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ — Concat
    • MDN Π’Π΅Π± -Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ — РаспространСниС
    • Stack Overflow: From vs Array.concat

    Π Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ с нСсколькими. списки Π² JavaScript

    Если Π²Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ нСсколько списков ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΊΠ°Ρ€Ρ‚Ρ‹, Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ с Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ всСх этих Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Понимаю.

    К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅ΡΡ‚ΡŒ нСсколько ΠΊΡ€ΡƒΡ‚Ρ‹Ρ… ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ нСсколько массивов (ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, бСсконСчныС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, созданныС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ) Π² ΠΎΠ΄ΠΈΠ½ массив с ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ синтаксисом. Π― Π²ΠΎΠ·ΡŒΠΌΡƒ этот довольно большой список своих общСдоступных списков ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Ρƒ Π΅Π³ΠΎ Π² список всСх ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ‚ΠΈΠΏΠΎΠΌ, установлСнным Π½Π° Β«JavaScriptΒ». Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ lodash для удобства.

     _.map(_.filter(_.flatMap(ΡΡƒΡ‚ΡŒ, (ΡΡƒΡ‚ΡŒ) => {
      Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ _.values(gist.files)
    }), (Ρ„Π°ΠΉΠ») => {
      Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ file.language === 'JavaScript'
    }), (Ρ„Π°ΠΉΠ») => {
      Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ„Π°ΠΉΠ».имя_Ρ„Π°ΠΉΠ»Π°
    }) 

    Π§Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ массив.

     ['lazyArray.js',
      'ΠΊΠ½ΠΎΠΏΠΊΠ°.js',
      'formatNumberWithCommas.js',
      'x-ΠΏΡ€ΠΈΠΌΠ΅Ρ€.js',
      'Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ.js',
      'ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.js',
      'ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.spec.js',
      'Ρ„Π°Π±Ρ€ΠΈΠΊΠ°.js',
      'ΡƒΡ€ΠΎΠΆΠ°ΠΉ.js',
      'main.js',
      'e.js',
      'ΠΏΡ€ΠΈΠΌΠ΅Ρ€.js',
      'EventEmitter.js',
      'api.js',
      'ΠΏΡ€ΠΈΠΌΠ΅Ρ€.js',
      'Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.js',
      'colors.js' ] 

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ части этого Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ я Ρ…ΠΎΡ‡Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ довольно простоС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большого Тонглирования. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ»ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ посСрСдинС, Π²Π°ΠΌ придСтся постоянно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. НСлСгко ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

    Однако ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ влоТСнности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ называСтся ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ списка.

    ПониманиС списков

    Моя любимая рСализация понимания списков ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π° Π½Π° ΠΌΠΎΠ΅ΠΌ любимом языкС Clojure for. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Python ΠΈ Scala, я просто Π² восторгС ΠΎΡ‚ всСх этих скобок.

    Π’ JavaScript Π΄Π°ΠΆΠ΅ Π±Ρ‹Π» Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ для ES6, хотя ΠΎΠ½ Π±Ρ‹Π» Π²Ρ‹Ρ‚Π°Ρ‰Π΅Π½ ΠΈΠ· спСцификации, Π½Π΅ знаю ΠΏΠΎΡ‡Π΅ΠΌΡƒ. Π’ Firefox ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ES6, Π½ΠΎ Π² Ρ‚ΠΎ врСмя это Π±Ρ‹Π»ΠΎ нСстандартно. Если вас это ΡƒΡ‚Π΅ΡˆΠΈΡ‚, ΠΌΠ½Π΅ всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ понравился синтаксис.

    Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ список ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ нСсколько списков вмСстС с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. ВСорСтичСски Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° эти списки ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ значСния ΠΈΠ· этих списков ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… повторСния. Π—Π°Ρ‚Π΅ΠΌ Ρƒ вас Π΅ΡΡ‚ΡŒ функция, которая вызываСтся с СдинствСнными значСниями ΠΈΠ· этих списков, ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚, становится вашим ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ списком.

    Π― создал ΠΎΠ΄ΠΈΠ½ для JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΏΠΎΡ€Ρ‚ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Clojure, я пытался ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Ρƒ. Π’ΠΊΠ»ΡŽΡ‡Π°Ρ API Π½Π° основС ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ лСнь Π½Π° всСм ΠΏΡƒΡ‚ΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ простыС старыС массивы ΠΈΠ»ΠΈ бСсконСчныС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ любой повторяСмый.

    ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅ΠΌ forc

    НазваниС происходит ΠΎΡ‚ «для понимания» ΠΈΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ «для ClojureΒ», Π½ΠΎ Π² основном ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ я, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ просто «для» Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ. Он позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ всС Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Clojure for, Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript ΠΈ Π»ΡŽΠ±Ρ‹Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Он написан со всСми Π²Π΅Ρ‰Π°ΠΌΠΈ ES6y, ΠΈ я Π±Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с Babel, Π½ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π±Π΅Π· Π½ΠΈΡ… (я ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽ Π΅Π³ΠΎ Π²ΠΎ врСмя ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ). Π”ΠΎ ES6 Ρƒ вас Π½Π΅ Π±Ρ‹Π»ΠΎ возмоТности Π»Π΅Π³ΠΊΠΎ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, поэтому я Π±Ρ‹ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» этого Π΄Π΅Π»Π°Ρ‚ΡŒ.

    Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСсконСчных ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΈΠ· README.

     // БСсконСчный Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ всСх Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… чисСл
    функция * числа () {
      ΠΏΡƒΡΡ‚ΡŒ ΠΏ = 0
      ΠΏΠΎΠΊΠ° (ΠΏΡ€Π°Π²Π΄Π°) {
        Π²Ρ‹Ρ…ΠΎΠ΄ ΠΏ++
      }
    }
    форс([
      'n', числа(),
      ':let', ['ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚', ({n}) => n * n],
      ': while', ({ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚}) => ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ < 100
    ], ({ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚}) => ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚)
    // Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅Ρ…, Ρ‡Π΅ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ < 100
    // [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 

    API покаТСтся странным Π»ΡŽΠ±ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ Π½Π΅ использовал Π²Π΅Ρ€ΡΠΈΡŽ Clojure, Π½ΠΎ ΠΎΠ½ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄, основанный Π½Π° Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ массивС, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΌΠ½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ»Π°ΡΡΠ½ΡƒΡŽ пСрСсвязку Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ выполнСния инструкций. Π― Π²ΠΈΠ΄Π΅Π», ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π΅Π»Π°Π»ΠΈ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ вычислСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΈ Π±Π»ΠΈΠ·ΠΊΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°ΡŽΡ‚ΡΡ ΠΊ элСгантности Clojure. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° снова случайно добавляСт Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡˆΠ΅ΠΏΠ΅Π»ΡΠ²ΠΎΡΡ‚ΠΈ Π² JavaScript. Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠΌΠΎΡ‡ΡŒ.

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅ΡˆΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ с силой.

     форс([
      'ΡΡƒΡ‚ΡŒ', ΡΡƒΡ‚ΡŒ,
      'Ρ„Π°ΠΉΠ»', ({gist}) => _.values(gist.files),
      ':ΠΊΠΎΠ³Π΄Π°', ({Ρ„Π°ΠΉΠ»}) => file.language === 'JavaScript'
    ], ({file}) => file.filename) 

    Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎ, ΠΏΡ€Π°Π²Π΄Π°? Π― имСю Π² Π²ΠΈΠ΄Ρƒ, я Ρ‚Π°ΠΊ Π΄ΡƒΠΌΠ°ΡŽ. Π–Π°Π»ΡŒ, Ρ‡Ρ‚ΠΎ трСбуСтся Β«_.valuesΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Β«gist.filesΒ» β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½ΠΎ это просто Ρ„ΠΎΡ€ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ являСтся ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ я ΠΌΠΎΠ³ Π±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ API для автоматичСского извлСчСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π·ΠΎΠ² создаСт Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‚ΠΎ ΠΆΠ΅ содСрТимоС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Β«[…result]Β».

  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *