Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΠΠ? ΠΠ°ΠΊ ΡΡ Π΄ΡΠΌΠ°Π΅ΡΡ, ΡΡ ΡΠΌΠΎΠΆΠ΅ΡΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ?
ΠΠΎΡ ΠΎΠΆΠ΅, ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ UPNG.js Π² "npm". ΠΠΎΠ³Π΄Π° Ρ ΠΎΠ±Π½ΠΎΠ²Π»Ρ ΡΠ²ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΌΠ½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΅Π΅ ΠΊΠ°ΠΊ Π½Π° GitHub, ΡΠ°ΠΊ ΠΈ Π½Π° npm, ΠΈΠ»ΠΈ npm ΡΠΌΠΎΠΆΠ΅Ρ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ GitHub ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ?
ΠΡΠΈΠ²Π΅Ρ! ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, Ρ Π½Π΅ Π·Π½Π°Π», ΡΡΠΎ Π²Ρ Π½Π΅ Π·Π½Π°Π»ΠΈ ΠΎ NodeJS / NPM. NPM - ΡΡΠΎ ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠ΅Π΅ Π² ΠΌΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ / Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ. ΠΠΎΠ΄ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π½Π° github, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ.
Π§ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ: ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ ( npm install upng
)
ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· require('upng')
. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π·Π°ΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ( window.upng
)).
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π±ΡΠ» ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ Π½Π° echojs.com , Ρ Π΄ΡΠΌΠ°Π», ΡΡΠΎ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ ΠΎ NodeJS.
Π― ΠΏΠΎΡΠΌΠΎΡΡΡ, ΡΠΌΠΎΠ³Ρ Π»ΠΈ Ρ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠ»-ΡΠ΅ΠΊΠ²Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² NPM, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅Ρ Π΅Π³ΠΎ Π² NPM, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ: https://docs.npmjs.com/cli/publish
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΄Π»Ρ NPM, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ.
Π‘ΠΌ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π΄Π΅ΡΡ: https://docs.npmjs.com/cli/init
Π£ Π½ΠΈΡ Π΅ΡΡΡ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ? Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ GitHub ΡΠ΅ΡΠ΅Π· Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π±Π΅Π·ΡΠΌΠΈΠ΅ΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ 12 ΠΠ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ.
ΠΠ΅Ρ, ΠΎΠ½ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ. ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ( npm ), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ ( node.js ). ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· Arduino ΠΈΠ»ΠΈ Raspberry Pi.
Π― Π²ΠΈΠΆΡ, ΡΡΠΎ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΡΠ°Π±Π»ΠΎΠ½ Β«Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΏΠΎΡΡΠ°Β», ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ CommonJS , Π»ΡΡΡΠ΅ - ΠΌΠΎΠ΄ΡΠ»Ρ UMD ΠΈΠ»ΠΈ, Π² ΠΈΠ΄Π΅Π°Π»Π΅, ΠΌΠΎΠ΄ΡΠ»Ρ ES6, ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Π½ΡΠΉ Π² UMD ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Webpack , Brunch ΠΈΠ»ΠΈ Rollup (ΠΈΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅).
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ ΠΈ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ²ΡΠΈΠΌΡΡ Π²ΡΠ΅ΠΌ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²Π΅ΠΉΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ° EcmaScript, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π΅Π³ΠΎ Π½Π° ES5, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ Babel .
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎ, ΡΡΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TypeScript , ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ EcmaScript, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (TypeScript ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π² JavaScript, Π»ΠΈΠ±ΠΎ ES5, Π»ΠΈΠ±ΠΎ ES6, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Babel Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΠΈΠΌ). ΠΠ°ΠΆΠ΅ Π»ΡΠ΄ΠΈ, Π½Π΅ ΠΏΠΈΡΡΡΠΈΠ΅ TypeScript, Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠ³ΠΎΠ΄Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ VSCode , ΠΌΠΎΠ³ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΠΏΠΎΠ² TypeScript.
ΠΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ° - Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π― Π²ΠΈΠΆΡ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΏΠΈΡΠ°Π»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Mocha , Jasmine ΠΈΠ»ΠΈ Ava, Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ: Chai , PowerAssert ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ assert
ΠΈΠ· node.js, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Ρ Π²Π°Ρ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°. Π ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Deploy Π²Ρ Π±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ ΠΊΡΠΎΡΡΠ°-Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π° BrowserStack ΠΈΠ»ΠΈ SauceLabs ΡΠ΅ΡΠ΅Π· ΠΠ°ΡΠΌΡ , ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ , ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π΅Π·Π΄Π΅.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ΅ΠΉ ΡΡΠΎΠΉ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠΈΡΡΠ΄Π»ΠΈΠ²ΡΠ΅ Π·Π½Π°ΡΠΊΠΈ Π² README Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ GitHub ΠΈΠ»ΠΈ Π½Π°
ΠΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ ΡΡΠΊΠ° Π°ΠΉΡΠ±Π΅ΡΠ³Π°. ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ Π² AD 2017, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
PS
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ, ΠΊΠ°ΠΊ Π²Ρ Π΄Π΅Π»Π°Π»ΠΈ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ!
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π°ΡΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ°, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π·Π°ΠΉΠΌΠ΅Ρ Ρ ΠΌΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ Ρ ΠΏΠΎΡΡΠ°ΡΠΈΠ» Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ UPNG.js. ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅Π»Π΅ΠΉ ΠΎΠ½ΠΈ ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ ΡΠ΅ΡΠΈΠ» ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΎΠΌΡ (Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ UPNG.js Π½Π° npm ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ Β«Π±Π°Π·Π°Ρ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠ΄Π°Β» / Π²Π΅Π±-ΡΠ°ΠΉΡΠ°Ρ ).
PS Π― Π²ΡΠ΅ Π΅ΡΠ΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Β«ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ΅Π΄Ρ javascriptΒ», Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π±Π΅ Π½Π΅ Node.js (ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Ρ ΡΡΡΡΡ Π»ΡΠ΄Π΅ΠΉ), Π° Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅Ρ (ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Ρ ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄ΠΎΠ² Π»ΡΠ΄Π΅ΠΉ).
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ΅Ρ, ΠΎΠ½ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ. ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ( npm ), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ ( node.js ). ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· Arduino ΠΈΠ»ΠΈ Raspberry Pi.
Π― Π²ΠΈΠΆΡ, ΡΡΠΎ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΡΠ°Π±Π»ΠΎΠ½ Β«Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΏΠΎΡΡΠ°Β», ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ CommonJS , Π»ΡΡΡΠ΅ - ΠΌΠΎΠ΄ΡΠ»Ρ UMD ΠΈΠ»ΠΈ, Π² ΠΈΠ΄Π΅Π°Π»Π΅, ΠΌΠΎΠ΄ΡΠ»Ρ ES6, ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Π½ΡΠΉ Π² UMD ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Webpack , Brunch ΠΈΠ»ΠΈ Rollup (ΠΈΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅).
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ ΠΈ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ²ΡΠΈΠΌΡΡ Π²ΡΠ΅ΠΌ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²Π΅ΠΉΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ° EcmaScript, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π΅Π³ΠΎ Π½Π° ES5, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ Babel .
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎ, ΡΡΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TypeScript , ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ EcmaScript, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (TypeScript ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π² JavaScript, Π»ΠΈΠ±ΠΎ ES5, Π»ΠΈΠ±ΠΎ ES6, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Babel Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΠΈΠΌ). ΠΠ°ΠΆΠ΅ Π»ΡΠ΄ΠΈ, Π½Π΅ ΠΏΠΈΡΡΡΠΈΠ΅ TypeScript, Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠ³ΠΎΠ΄Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ VSCode , ΠΌΠΎΠ³ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΠΏΠΎΠ² TypeScript.
ΠΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ° - Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π― Π²ΠΈΠΆΡ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΏΠΈΡΠ°Π»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Mocha , Jasmine ΠΈΠ»ΠΈ Ava, Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ: Chai , PowerAssert ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ
assert
ΠΈΠ· node.js, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Ρ Π²Π°Ρ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°. Π ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Deploy Π²Ρ Π±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ ΠΊΡΠΎΡΡΠ°-Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π° BrowserStack ΠΈΠ»ΠΈ SauceLabs ΡΠ΅ΡΠ΅Π· ΠΠ°ΡΠΌΡ , ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ , ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π΅Π·Π΄Π΅.ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ΅ΠΉ ΡΡΠΎΠΉ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠΈΡΡΠ΄Π»ΠΈΠ²ΡΠ΅ Π·Π½Π°ΡΠΊΠΈ Π² README Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ GitHub ΠΈΠ»ΠΈ Π½Π°
ΠΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ ΡΡΠΊΠ° Π°ΠΉΡΠ±Π΅ΡΠ³Π°. ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ Π² AD 2017, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
PS
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ, ΠΊΠ°ΠΊ Π²Ρ Π΄Π΅Π»Π°Π»ΠΈ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ!