Π‘ΠΏΠΈΡΠΎΠΊ 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
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ 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]Β».