ΠΠΎΠ²ΡΠΉ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Angular Π±ΡΠ» ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½ @robwormald Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ng-conf, Π΄Π΅Π½Ρ 2. ΠΠ½ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ES6. ΠΠ°ΡΠ΅ΠΌ ΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π³Π°:
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ JS-ΡΠ°ΠΉΠ» ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 49 ΠΠ, Π½ΠΎ ΠΎΠ½ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Google Closure (https://developers.google.com/closure/compiler/) ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ JS. ΠΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π³Π°, ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π²ΡΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅ΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ ng2-hello-world, ΠΎΠΊΠΎΠ»ΠΎ 36 ΠΠ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ:
BrowserNodeGlobal
)Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²Π°ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΡΡΠΎ ΡΠΎ, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ angular.
Π₯ΠΎΡΠΈΠΌ Π»ΠΈ ΠΌΡ (1) ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΌ angular ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ? ΠΈΠ»ΠΈ (2) ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ angular + Π² Π΅Π΄ΠΈΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ? Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² gulp ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅.
ΠΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ Angular, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ES5 ΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ UMD.
ΠΠ΄Π½Π°ΠΊΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½ΠΎΠ²Π° ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΡΡΠΎ Π½Π° ΡΠ°ΡΡΠΈ, ΡΡΠΎΠ±Ρ Π²ΡΡΡΡΡ
Π½ΡΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ.
ΡΡΠΎ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π°Ρ ΠΏΠ»Π°Π½ Π±ΡΠ» β2.
Π― Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°; Π΄ΡΡΠ³ΠΈΠ΅ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ ΡΡΠΎ ΠΏΠΎΠ΄Π±Π΅ΡΡΡ. Π― Π΄ΡΠΌΠ°Ρ
ΠΏΡΠΎΡΠ΅ "npm run build && npm run closure-compiler" ΡΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡΠΌΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ
Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
Π ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ, 9 ΠΌΠ°Ρ 2016 Π³., Π² 11:26 ΠΠ²Π°Π½ ΠΠ°ΡΡΠΈΠ½ [email protected]
Π½Π°ΠΏΠΈΡΠ°Π»:
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²Π°ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΡΡΠΎ ΡΠΎ, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π²
Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΠΉ ΡΠ³Π»ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ.
Π₯ΠΎΡΠΈΠΌ Π»ΠΈ ΠΌΡ (1) ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΌ angular ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ? ΠΈΠ»ΠΈ
(2) ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ angular + ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ? Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ
ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π² gulp ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅.-
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ ΡΠ²Π»ΡΠ΅ΡΠ΅ΡΡ Π°Π²ΡΠΎΡΠΎΠΌ ΡΠ΅ΠΌΡ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/angular/angular/issues/8550#issuecomment -217947352
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ @jeffbcross, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ PWA Π΄Π»Ρ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°
ΠΠ°, Π±ΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Ρ Π½Π°Ρ Π²ΡΠ΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΊ ΠΊΠΎΠ½ΡΡ ΡΡΠΎΠΉ Π½Π΅Π΄Π΅Π»ΠΈ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ ΠΈΠ· Ρ Π°ΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π΄Π΅Π»Π°ΡΡ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ, Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, ΡΡΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΌΠΎΠ³ΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ:
Closure Compiler Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²Π΅ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ES6 ΠΈ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΠ°ΠΊ, Π½Π°ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° goog.module
. ΠΡΠΎ Π½Π΅ Π²Π°ΡΠΈΠ°Π½Ρ --module
Π΄Π»Ρ tsc
, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ tsickle, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ angular ΠΈ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ ΠΊΠ°ΠΊ Β«Closure ES6Β».
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΊΡΡΡΠΈΡ ΠΈΠ· HEAD, ΡΠΌ. Https://github.com/google/closure-compiler/blob/master/README.md#building -it -self
Π§ΡΠΎΠ±Ρ Π²ΡΡΡΠΎΠΈΡΡ angular Π² Π·Π°ΠΊΡΡΡΠΈΠ΅ ES6, Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΊΠΈ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅ ngc
Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π°ΠΊΡΡΡΠΈΡ tsickle ΠΈ convertCommonJsToGoogModule. Π‘ΠΌ. Https://github.com/alexeagle/angular/tree/closure_hack2
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ angular ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ./build.sh
Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ for pkg in $(find dist/packages-dist -name package.json); do sed -i .bak 's/\$\$ANGULAR_VERSION\$\$/2.0.0-rc.2-snap/g' $pkg; done
Π§ΡΠΎΠ±Ρ Π²ΡΡΡΠΎΠΈΡΡ rxjs Π² Π·Π°ΠΊΡΡΡΠΈΠ΅ ES6, Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΊΠΈ Π² https://github.com/alexeagle/RxJS/tree/closure - Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ npm run build_es6
ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² dist/es6
. ΠΠ°ΡΠ΅ΠΌ npm run generate_packages
Π΄Π»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² package.json
.
ΠΠ°ΠΌ Π½ΡΠΆΠ½Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ tsickle Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ https://github.com/ReactiveX/rxjs/issues/1703 - ΡΠΌ. Https://github.com/angular/tsickle/tree/closure
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π΄Π΅Π»Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘Π½ΠΈΠΌΠΎΠΊ Π½Π° https://github.com/alexeagle/closure-compiler-angular-bundling
Π ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ vendor
Ρ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ closure compiler.jar, ΠΏΠ°ΠΊΠ΅ΡΡ angular2, rxjs ΠΈ tsickle Ρ ΡΠ΅ΠΌ-ΡΠΎ Π²ΡΠΎΠ΄Π΅
npm install ../angular/dist/packages-dist/{common,compiler_cli,compiler,core,platform-browser,platform-server}
npm install ../rxjs/dist/es6
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ npm install
ΠΈ npm run build
ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π·Π°ΠΊΡΡΡΠΈΡ :)
ΠΡΠ°ΠΊ, ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Java JRE, ΡΡΠΎΠ±Ρ ΡΠ²ΡΠ·Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Angular2 hello world?
Closure Compiler - Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²
tree-shake / bundle / Es6-to-5 / minify pipeline. ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ±Π΅ΡΠ΅ΡΠ΅ Π·Π°ΠΊΡΡΡΠΈΠ΅
Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π²Ρ ΡΠ΅ΠΉΡΠ°Ρ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ JRE. ΠΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ JS
Π²Π΅ΡΡΠΈΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅:
https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/gwt/client/GwtRunner.java
13 ΠΌΠ°Ρ 2016 Π³. Π² 9:44 dpsthree [email protected] Π½Π°ΠΏΠΈΡΠ°Π»:
ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Java JRE, ΡΡΠΎΠ±Ρ ΡΠ²ΡΠ·Π°ΡΡ ΠΏΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Angular2?-
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ ΡΠ²Π»ΡΠ΅ΡΠ΅ΡΡ Π°Π²ΡΠΎΡΠΎΠΌ ΡΠ΅ΠΌΡ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/angular/angular/issues/8550#issuecomment -219096815
Π― Π½Π°ΠΏΠΈΡΠ°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΌΠ΅ΡΠΎΠΊ ΠΎ Ρ ΠΈΡΡΠΎΡΡΡΡ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ. https://docs.google.com/document/d/17m1GwzXraKgbCkCmH1JnY9IZzPy4cqlpCFVhvlZnOys/edit
ΠΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π»ΠΈ ΡΠ°Π±ΠΎΡΡ @alexeagle ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΡΡ Π²Π΅ΡΡΠΈΡ Angular. ΠΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅, ΠΎΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π½Π° https://github.com/lucidsoftware/closure-typescript-example. ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ Π·Π°ΠΏΡΡΠΊΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² README Π΄Π»Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Docker, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΠΎΠΉ ΠΆΠ΅Π»Π°ΡΡΠΈΠΉ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Angular 2, clutz ΠΈ tsickle. Closure JS ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Angular 2 TS, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π² JS, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ Closure.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²Π½Π΅ΡΠ»ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ ΠΠ»Π΅ΠΊΡΠ°. ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Ρ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠΉ ΠΆΠ΅. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ngc ΠΈΠ»ΠΈ tsickle Π² Angular 2 ΠΈ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Ρ Closure.
Π‘ΡΡΠΎΠΈΡΡ ΠΈΠ· Π³ΠΎΠ»ΠΎΠ²Ρ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ· Π²Π΅ΡΡΠΈΠΉ Ρ ΠΈΡΠ½Ρ ΠΈΠ»ΠΈ ΠΈΡΠ»Ρ.
https://github.com/lucidsoftware/angular/tree/closure-bundle
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Angular 2 Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ngc Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ js Π² Closure ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π³ΠΎΠ² tsickle Π² tsc-wrapped. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ΅ΠΌΠΎΠ², ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° TypeScript Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡΠΎΡ ΠΎΠ΄ΠΎΠ² tsickle. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Angular, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² JS, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ Closure, ΠΏΠΎΠΌΠ΅ΡΠ°Ρ Π±Π»ΠΎΠΊ angularCompilerOptions
Π² tsconfig.json, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ
"angularCompilerOptions": {
"googleClosureOutput": true
}
ΠΠ°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ build.sh
ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π€Π°ΠΉΠ» ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ selenium-webdriver, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ selenium-webdriver ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΈ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΈ Π΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌ Ρ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ.
https://github.com/lucidsoftware/rxjs/tree/closure-hack
ΠΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ RxJS ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Makefile ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² JS, Π° Π΄ΡΡΠ³Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° - Π² Make. ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠ΅Π»ΠΈ ΡΠ±ΠΎΡΠΊΠΈ, - ΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π»ΠΊΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΡΠ°Π²ΡΡ RxJS ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ TypeScript ΠΈ Closure.
https://github.com/lucidsoftware/symbol-observable/tree/closure
RxJS ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π½ΡΡΠ΅ Π±ΡΠ» ΡΠ°ΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° RxJS, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ. ΠΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ (ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ JS), ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Closure. Π€Π°ΠΉΠ»ΠΎΠ² Π²ΡΠ΅Π³ΠΎ Π΄Π²Π°, ΡΠ°ΠΊ ΡΡΠΎ Ρ ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ Π²ΡΡΡΠ½ΡΡ.
https://github.com/lucidsoftware/tsickle/tree/ignore-type-comments
ΠΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ Tsickle Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
pathToModuleName
ΡΡΠΎΠ±Ρ CLI Π±ΡΠ» ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ pathToModuleName
ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² ngc. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±ΡΠ΄ΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΡΠ΅Π· tsickle ΠΈΠ»ΠΈ ngc. ΠΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π² Π²ΠΎΡΡ
ΠΎΠ΄ΡΡΠ΅ΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΈΠΉ pathToModuleName
ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°Π΅Ρ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΈΠΌΠ΅Π½Π° goog.module.
- Π·Π°ΠΏΡΡΡΠΈΡΠ΅ tree-shaker, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ ES6, Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΈΠ· ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π°, Π² Π½Π°ΡΠ΅ΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΡΠ²Π΅ΡΡΠΊΡ
- Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ±ΠΎΡΡΠΈΠΊ, ΡΡΠΎΠ±Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅; ΠΌΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ system.js
- Π½ΠΈΠΆΠ΅ ΡΡΠΎΠ²Π½Ρ ES5 - ΠΌΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ TypeScript
- minify, ΡΡΠΎΠ±Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ uglify.
Π₯ΠΎΡΡ ΠΎΠ½, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Closure, webpack 2 (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ° ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΌ Π²ΡΠ΅ ΡΡΠΈ ΡΠ°Π³ΠΈ.
Π― Π±Ρ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ (ΡΠΌΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ _requiring_) ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠ°ΠΊ webpack Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΡΠ΅ΠΊΠ΅, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ (Π²Π·Π»ΠΎΠΌΠ°Π½Π½ΡΡ ) Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΡΠ΅ΠΌ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ Π±Π°ΠΉΡΡ Π² ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ΅.
Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΡΠ»ΡΡΠ°ΡΡ Π²Π°ΡΠΈ ΠΌΡΡΠ»ΠΈ!
@jjudd Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎ ΠΈ ΡΡΠΈΡ Π·Π°ΠΌΠ΅ΡΠΎΠΊ, ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
Π£ Π²Π°Ρ Π΅ΡΡΡ ΡΠΌΠ΅Π½ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ? ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΆΠ°ΡΠΈΠ΅ Brotli, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ±Π»ΠΎΠΊ Ρ ΡΠ±Π»ΠΎΠΊΠ°ΠΌΠΈ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ hello world closure-ng2 (ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» 26,2k)
@JamesHenry: ΠΌΡ ΡΠΎΠ³Π»Π°ΡΠ½Ρ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ webpack 2 - ΡΡΠΎ ΠΏΡΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΊΡΡΡΠΈΡ - ΡΡΠΎ ΡΠΊΡΠΏΠ΅ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΈ Ρ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡ, ΡΡΠΎ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Β«ΠΏΡΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΒ» Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΠ΅ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΎΠΉ Π½Π΅ΡΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π΅Π³ΠΎ ADVANCED_OPTIMIZATIONS ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΡΡΡΠΈΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
@alexeagle Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ADVANCED_OPTIMIZATIONS. ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΡΡ ΡΠ°Π±ΠΎΡΡ, Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΠΎΠ².
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ 1, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅, Π² ΠΎΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² npm Π½Π° ΡΠΈΡΡΠΎΠΌ javascript: https://www.npmjs.com/package/google-closure-compiler-js
Π₯ΠΎΡΠ΅Π» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅:
Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ Π±Π΅ΡΠ°-ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Lucidchart, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΡ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°ΡΡ Π²Π΅ΡΡΠΈΡ Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΈ Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΡΠΉΠ΄Π΅Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π·Π°Π²ΡΡΠ°.
ΠΠ΅ΡΡΠΈΡ Angular, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°, Π±ΡΠ»Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ββΠ΄ΠΎ RC5 (HEAD ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° Π²ΡΠΎΡΠ½ΠΈΠΊ, 16 Π°Π²Π³ΡΡΡΠ°).
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Docker Π±ΡΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ Π½Π° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π·Π°Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ. ΠΠΎΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ https://github.com/lucidsoftware/closure-typescript-example
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, ΡΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅. ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΏΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠΎΠ΄, ΠΈΠ΄ΡΡΠΈΠΉ ΠΎΡ js -> ts Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ clutz, Π° Π·Π°ΡΠ΅ΠΌ ts -> js Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ tsickle. ΠΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Hello World.
Uncompressed: 112K
Brotli quality 10: 29K
Gzip: 34K
ΠΠΎΡ Π·Π°ΠΌΠ΅ΡΠΊΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Ρ ΡΡΠΎ-ΡΠΎ Π·Π°Π±ΡΠ», Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π²ΡΠ΅ Π½Π°ΡΠΈ ΡΠΎΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ Π²ΡΠ΅ Π½Π°ΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ.
Π€Π°ΠΉΠ»Ρ Externs Π΄Π»Ρ Zone, Reflect ΠΈ Jasmine Π±ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΈ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ.
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Closure, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ΡΡΡΡΡΡ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ Π°ΠΊΠ΅ΡΡΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° sed, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Angular js, Π·Π°ΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ static, ΡΡΡΠΎΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΠ΅Ρ / ** @nocollapse * / . ΠΠΎΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΡΠΈΠ±ΠΊΡ Π·Π°ΠΊΡΡΡΠΈΡ: https://github.com/google/closure-compiler/issues/1776
Π‘Π°ΠΌΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ Π²Π½Π΅ΡΠ»ΠΈ Π² Angular, - ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Tsickle Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡ Π΄ΡΠΌΠ°Π»ΠΈ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ Π² ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π·, Π½ΠΎ Ρ Π½Π°Ρ Π±ΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π»ΡΡ: D
ΠΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡ, Π³Π΄Π΅ Angular Π½Π°Π·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΠ΅ΡΠ½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠ΄Π½ΠΈ ΡΡΡΠ»ΠΊΠΈ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ, Π° Π΄ΡΡΠ³ΠΈΠ΅ Π½Π΅Ρ. ΠΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Angular, ΡΡΠΎΠ±Ρ Π²Π΅Π·Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠ΅ΡΠ½ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π»ΠΈΡΡ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ Angular / Tsickle, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ .d.ts.
ΠΡ Π·Π°ΡΡΠ°Π²ΠΈΠ»ΠΈ Angular Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ES6, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π½Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ .apply ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ new.
ΠΡ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² tsickle, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡΡΠ°Π» Π²ΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ TypeScript Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ².
Π£Π³Π»ΠΎΠ²ΠΎΠΉ: https://github.com/lucidsoftware/angular/tree/closure-bundle
Π¦ΠΈΠΊΠ»Π΅: https://github.com/lucidsoftware/tsickle/tree/closure-bundle
RxJS: https://github.com/lucidsoftware/rxjs/tree/closure-hack
Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»: https://github.com/lucidsoftware/symbol-observable/tree/closure
Clutz: https://github.com/lucidsoftware/clutz
ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΏΠ°ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ°ΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, ΠΏΠ»ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ JSCompiler Π²Π½ΡΡΡΠΈ Google, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ (Ρ ΠΎΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ Bazel ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Bazel).
@robwormald @mprobst ΡΡΠΎΠΈΡ Π»ΠΈ Π½Π°ΠΌ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ Π»Π΅Π³ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠΎ Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ? Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΡΠ²ΠΈΡΡ ΠΎΠ± ΡΡΠΏΠ΅Ρ Π΅ ΠΈ Π·Π°ΠΊΡΡΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ JS Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΡΡΡΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π΅ Ρ Π²Π°ΡΠ°Π»ΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ Π½Π°ΡΠ΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΡ AOT ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Rollup. ΠΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΡΡΠΈΠΌ ΠΏΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ?
ΠΠ΄Π½Π°ΠΊΠΎ Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ Java, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π½Π΅ ΡΡΡΠ°Π΄Π°Π΅Ρ ΠΎΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π― ΡΠΎΠΆΠ΅ ΡΡΠΎ ΡΠ»ΡΡΠ°Π». ΠΠ°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π²ΡΠ·Π²Π°ΡΡ ΡΠ·Π΅Π» Ρ ΠΏΠΎΠΌΠΎΡΡΡ
--max-old-space-size = 4096, ΡΡΠΎΠ±Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ.
ΠΡΠΎΡΠ½ΠΈΠΊ, 20 ΡΠ΅Π½ΡΡΠ±ΡΡ 2016 Π³., 11:27 Π’ΠΎΡΠ³Π΅ΠΉΡ Π₯Π΅Π»ΡΠ³Π΅Π²ΠΎΠ»ΡΠ΄ [email protected]
Π½Π°ΠΏΠΈΡΠ°Π»:
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ JS Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΡΡΡΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π²ΠΈΠ΄Π΅Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
Π³Π΄Π΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ Π½Π° AOT ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°
ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΡΡΠΈΠΌ ΠΏΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ?ΠΠ΄Π½Π°ΠΊΠΎ Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ Java, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π½Π΅ ΡΡΡΠ°Π΄Π°Π΅Ρ ΠΎΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Google / Π·Π°ΠΊΡΡΡΠΈΠ΅-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ-js β23
https://github.com/google/closure-compiler-js/issues/23-
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°Ρ Π½Π°Π·Π½Π°ΡΠΈΠ»ΠΈ.ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/angular/angular/issues/8550#issuecomment -248389501,
ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ
https://github.com/notifications/unsubscribe-auth/AAC5I_FDlMdHvHO2YCvypXju9wR8onzuks5qsCWmgaJpZM4IaZIi
.
Π― ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» max-old-space-size
Ρ 8000 ΠΈ 14000 Π½Π° Mac Ρ 16 ΠΠ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ Ρ
Π²Π°ΡΠ°Π»ΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΌΠΎΠ΅ΠΌ ΠΎΠ±ΡΠ°Π·ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π₯ΠΎΡΡ Π²Π΅ΡΡΠΈΡ Java ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΎΡ
, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΠ»ΠΎΡ
ΠΎ :)
Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π½Π° https://github.com/google/closure-compiler/issues
ΠΡΠΎΡΠ½ΠΈΠΊ, 20 ΡΠ΅Π½ΡΡΠ±ΡΡ 2016 Π³., 11:52 Π’ΠΎΡΠ³Π΅ΠΉΡ Π₯Π΅Π»ΡΠ³Π΅Π²ΠΎΠ»ΡΠ΄ [email protected]
Π½Π°ΠΏΠΈΡΠ°Π»:
Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» max-old-space-size Ρ 8000 ΠΈ 14000 Π½Π° Mac Ρ 16 ΠΠ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ,
Π½ΠΎ Π² ΠΌΠΎΠ΅ΠΌ ΠΎΠ±ΡΠ°Π·ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ Ρ Π²Π°ΡΠ°Π»ΠΎ ΠΏΠ°ΠΌΡΡΠΈ.
Π₯ΠΎΡΡ Π²Π΅ΡΡΠΈΡ Java ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.-
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°Ρ Π½Π°Π·Π½Π°ΡΠΈΠ»ΠΈ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/angular/angular/issues/8550#issuecomment -248396986,
ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ
https://github.com/notifications/unsubscribe-auth/AAC5I25uOXJ-Pt8a9WzQQUO1zRx4j1YUks5qsCthgaJpZM4IaZIi
.
ΠΠ°, Ρ ΠΌΠ΅Π½Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
https://github.com/google/closure-compiler-js/issues/23
@thelgevold, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Typescript ... ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΡΠ½ΡΡ ΡΠ±ΠΎΡΠΊΡ Typescript ... (ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ngc Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ TS 2.1, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π½Π°Π·Π°Π΄ ΠΈ Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌ ΠΈ 2.0.2).
@qdouble Π₯ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ .. ΠΡ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ JavaScript, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ TS 2.0.2?
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊ ΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΉ ΠΊΠΎΠ΄ Π²Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ / Π·Π°ΠΊΡΡΡΠΈΡ, ΠΎΠ½ ΡΠΆΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JS.
@thelgevold Π°Ρ , Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΠΎΠΉ ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ Ρ 2.0.2 ... Π΅ΡΠ»ΠΈ Π²Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ JS Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, ΡΠΎΠ³Π΄Π° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅ ... Π½ΠΎ Ρ ΠΏΠΎΠ»Π°Π³Π°Ρ, Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Typescript ΠΊΠ°ΠΆΠ΄ΡΡ Π½ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π΅Π³ΠΎ Π² JS ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ ΡΡΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΠ²Π΅Ρ, ΡΠ΅Π±ΡΡΠ°, Π²ΡΠ΅ ΡΡΠΎ Π·Π²ΡΡΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΈ ΠΌΡ ΠΈΠ·ΡΡΠ°Π΅ΠΌ ΡΡΠΎ, ΡΡΠΎΠ±Ρ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π°ΡΠ΅Π³ΠΎ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°. ΠΠ°ΠΊΠΎΠ² ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠ±ΠΎΡΠΎΠΊ Angular, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅? ΠΡΠ΄Π΅ΡΠ΅ Π»ΠΈ Π²Ρ Π΄Π΅Π»Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ Π΄Π»Ρ Angular v 2.0.0?
Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ Π΄Π»Ρ ngEurope ...
Π ΠΏΡΡΠ½ΠΈΡΡ, 7 ΠΎΠΊΡΡΠ±ΡΡ 2016 Π³., 01:48 ΠΠΆΠ΅ΡΠ°ΡΠ΄ ΠΠ°ΠΌΡΡΡ [email protected]
Π½Π°ΠΏΠΈΡΠ°Π»:
ΠΡΠΈΠ²Π΅Ρ, ΡΠ΅Π±ΡΡΠ°, Π²ΡΠ΅ ΡΡΠΎ Π·Π²ΡΡΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΈ ΠΌΡ ΠΈΠ·ΡΡΠ°Π΅ΠΌ ΡΡΠΎ
Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π°ΡΠ΅Π³ΠΎ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°. ΠΠ°ΠΊΠΎΠ² ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ°ΡΡΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ³Π»ΠΎΠ²ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅. ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ Π΄Π»Ρ
Angular v 2.0.0?-
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°Ρ Π½Π°Π·Π½Π°ΡΠΈΠ»ΠΈ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/angular/angular/issues/8550#issuecomment -252186017,
ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ
https://github.com/notifications/unsubscribe-auth/AAC5I1TZZEGiuBu8zJe2BtYEzilr-VPHks5qxgdTgaJpZM4IaZIi
.
ΠΡΠΈΠ²Π΅Ρ, @ u12206050 , ΠΏΠ°ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π½Π°Π·Π°Π΄ Ρ
Π― Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ ΡΡΠΈΠΌ Π°ΠΊΡΠΈΠ²Π½ΠΎ, Π½ΠΎ Π΄ΡΡΠ³Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π΄Π΅ΡΡ, Π² Lucid, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠΈΠ²Π°Π» ΡΠ΅Π³ΠΎΠ΄Π½Ρ, Ρ ΠΎΡΠ΅Ρ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π·Π°Π½ΡΡΡΡΡ ΡΡΠΈΠΌ. ΠΡΠ»ΠΈ Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ΄ΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅, Ρ Π±Ρ Ρ ΠΎΡΠ΅Π» ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ Π΅Π³ΠΎ Π½Π° 2.0.1. Π’Π°ΠΊ ΡΡΠΎ ΡΠΎΡ, ΠΊΡΠΎ Π΄ΠΎΠ±Π΅ΡΠ΅ΡΡΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ.
Π ΠΏΠΎΠΊΠ°, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π»ΠΎΠ³Π΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ https://www.lucidchart.com/techblog/2016/09/26/improving-angular-2 -Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ /. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠ²Π΅ΡΠΈΡΡ ΠΌΠ½Π΅ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΊ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ±ΠΎΡΠΊΠΈ. Π£Π΄Π°ΡΠΈ! :)
Π»ΡΠ±ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ ngeurope ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ?
ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΎΠ·Π½Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΡΡΡΡΡ ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅Π²Π° webpack2 _Π½Π΅_ ΡΠ΅ΡΠΊΡΠΏΠΎΡΡ Π΄Π΅ΡΠ΅Π²Π° Π²ΡΡΡΡΡ ΠΈΠ²Π°Π΅Ρ, Π° angular ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈΠ· ΡΠ΅ΡΠΊΡΠΏΠΎΡΡΠ°, ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ±Π»ΠΎΠΌ
ΠΌΠΎΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ ΠΌΡΡΠ»Ρ Π±ΡΠ»Π° ΠΎ, ΠΌΡΡΠ°ΡΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠΆΠ΅! Π΄ΡΠΌΠ°Π», ΡΡΠΎ Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ngc -> tsickle -> webpack -> gcc advanced (Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ngc -> webpack -> gcc simple) ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ tsickle, ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ import / require Π² goog.require, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅ΡΠ° (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ±ΠΎΡΡΠΈΠΊ, Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ Google, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ) ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π·Π΄Π΅ΡΡ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ
angular core + forms + router + platform-browser + common Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ~ 30% Π½Π°ΡΠ΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ngc + webpack2. ΡΡΠΎ ~ 100 ΠΠ ΠΌΠΈΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈ ΡΠΆΠ°ΡΠΎ, ΠΎΠΉ
Π― Π±Ρ Ρ
ΠΎΡΠ΅Π» ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ tsickle ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ webpack, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° angular cli ΡΡΠΈΡΠ°Π΅Ρ, ΡΡΠΎ webpack - ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ. Π― ΠΎΡΠΊΡΡΡ Π΄Π»Ρ Π»ΡΠ±ΡΡ
ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ @ngtools/webpack
?)
https://docs.google.com/presentation/d/1SaHtM1_mpBZuN74wxAJSPQRB0sPbWRSJPQZsxx4_BpE/preview
Π ΠΈΡ Π»Π΅Π½ΡΠ΅ Twitter, ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ.
ΠΠΎΠ»ΡΡΠΈΡΠ΅ Outlook Π΄Π»Ρ And roidhttps: //aka.ms/ghei36
ΠΡ, 28 ΠΎΠΊΡΡΠ±ΡΡ 2016 Π³., Π² 00:52 +0200, "Π‘ΡΠΈΠ² Π‘ΡΡΡΠ»Π»" < [email protected] [email protected] > Π½Π°ΠΏΠΈΡΠ°Π»:
Π»ΡΠ±ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ ngeurope ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ?
ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΎΠ·Π½Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΡΡΡΡΡ ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅Π²Π° Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠΊΡΠΏΠΎΡΡΠ°, Π° angular ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈΠ· ΡΠ΅ΡΠΊΡΠΏΠΎΡΡΠ°, ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ±Π»ΠΎΠΌ
ΠΌΠΎΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ ΠΌΡΡΠ»Ρ Π±ΡΠ»Π° ΠΎ, ΠΌΡΡΠ°ΡΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠΆΠ΅! Π΄ΡΠΌΠ°Π», ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Ρ ngc -> tsickle -> webpack (Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ngc -> webpack) ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ tsickle, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡ import / require Π² goog.require, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π·Π΄Π΅ΡΡ Π½Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ
angular core + forms + router + platform-browser + common Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ~ 30% Π½Π°ΡΠ΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ webpack2. ΡΡΠΎ ~ 100 ΠΠ ΠΌΠΈΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈ ΡΠΆΠ°ΡΠΎ, ΠΎΠΉ
ΠΎΡΠΊΡΡΡ Π΄Π»Ρ Π»ΡΠ±ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ. Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ @j juddhttps: //github.com/jjudd , Π½ΠΎ ΠΌΠ½Π΅ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΆΠ΅ Π½Π΅ Π·Π° Π³ΠΎΡΠ°ΠΌΠΈ.
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Ρ Π½Π° ΡΡΡ Π±Π΅ΡΠ΅Π΄Ρ.
ΠΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΅Π³ΠΎ Π½Π° Gi tHubhttps: //github.com/angular/angular/issues/8550#issuecomment -256791543 ΠΈΠ»ΠΈ ΠΏΡΠΈΠ³Π»ΡΡΠΈΡΡ ΠΉ readhttps: //github.com/notifications/unsubscribe-auth/AAABN_sAdZ1RDtPIk1Zt4QJr7oUdg723ks5q4SqbgaJpZM4IaZIi.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Ρ Π½Π°Ρ Π±ΡΠ»Π° ΡΠ΅ΡΡΠ΅Π·Π½Π°Ρ Π΄ΠΈΡΠΊΡΡΡΠΈΡ Π½Π° ngEurope Ρ @robwormald, @hansl ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ.
@ pkozlowski-opensource ΡΠΊΠ΅ΠΏΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π²Π½Π΅ΡΠ½Π΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π½ΠΎΠ²ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π° Π½Π΅ ΡΠ»ΡΡΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ.
ΠΡΠ°ΠΊ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ angular-cli Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ webpack, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» Π»ΡΡΡΠ΅.
Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΠ½Π΅ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ. @ steve8708 Π― Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π² Π²ΠΈΠ΄Ρ, goog.require
Π½Π°ΡΡΡΠ°Π΅Ρ ΡΠ±ΠΎΡΡΠΈΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΊΡΡΡΠΈΡ _ΡΠ²Π»ΡΠ΅ΡΡΡ_ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ. Π Π΅Π³ΠΎ Π²ΡΠ²ΠΎΠ΄Π΅ Π½Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² goog.require
. @jjudd. ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π² Lucidchart Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½ Π² ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²Π΅, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π½Π°ΡΠΈ Ρ
Π°ΠΊΠΈ ΠΈ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π½Π΅ΡΠ½Π΅ΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 26k ng2?
@alexeagle Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ webpack Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π²Π΅ΡΠ΅ΠΉ - ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, Π»ΠΈΠ½ΡΠΈΠ½Π³Π°, Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΆΠ°ΡΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠΌΡ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ angular CLI ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΡΠ°ΡΡΠ΅ΡΡ angular + webpack Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
Π― Π±Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅Π» ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ webpack Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ. Bc, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΎΡΡΡΠΌΠΈ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ), Π° Π½Π΅ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π²ΡΠ΅, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ (ΡΠΊΠ°ΠΆΠ΅ΠΌ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ gcc + gulp).
Π― Π±Ρ Ρ ΠΎΡΠ΅Π» ΠΏΡΠΎΡΡΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ tsickle Π½Π° tsc, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ jsdoc Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ (Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ gcc webpack Π² ΠΏΡΠΎΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ)
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ ΠΎΡΠ΅Π½Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ Π·Π° Π²Π°ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π° angular-cli Π΄Π΅Π»Π°Π΅Ρ Ρ ΠΈΡ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²!
@ steve8708, Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ES6 goog-module'd, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ gcc?
@alexeagle Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅. Π― ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΡ Ρ Π»ΡΠ΄ΡΠΌΠΈ Π·Π΄Π΅ΡΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΠΎ, ΠΎ ΡΠ΅ΠΌ Π²Ρ Π΄ΡΠΌΠ°Π»ΠΈ, - ΡΡΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ? https://github.com/lucidsoftware/closure-typescript-example
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ Π²Π΅ΡΡ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ½ ΠΎΠ±Π΅ΡΡΡΠ²Π°Π΅Ρ Webpack ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΈ Π½ΠΎΠ²ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ CLI ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Closure ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ Π²ΠΌΠ΅ΡΡΠΎ uglifier. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ Π°Π±ΡΡΡΠ°Π³ΠΈΡΡΠ΅ΡΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
@jjudd Π΄Π°, ΡΡΠΎ Π»ΡΡΡΠ΅Π΅, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΉΡΠ°Ρ, Π½ΠΎ ΠΎΠ½ΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ΠΎ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ (ΡΡΠ°ΡΠΎΠΉ) Π²Π΅ΡΡΠΈΠΈ ng2 ΠΈ Π΅Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π²Π΅ΡΠ½ΠΎ?
ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ externs, ΡΡΠΎΠ±Ρ Ρ Π²Π°Ρ ΠΌΠΎΠ³Π»ΠΈ Π±ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π½Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ Ρ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ.
ΠΡΠ°Π²Π΄Π°. ΠΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠΌ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Angular ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠΊΠΎΡΠΎ. Π― ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π΅ΠΌ.
@alexeagle: ΡΠ΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, webpack ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΡΡ commonjs / amd / es6, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (Π΅ΡΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ), Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π΅ Π² ΡΡΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅. Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΡΡΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π½Π° ΡΠΌ
require('./asset.png')
ΠΈ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡ ΡΡΠΎ, Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Ρ
Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΆΠ°ΡΠΈΠ΅ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ°ΠΌ, Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ.__extends
ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ Π½Π° global
( ΠΏΡΠΈΠΌΠ΅Ρ ). ΠΠ°ΠΆΠ΅ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎ (ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Ρ
Π°ΠΊΠ΅ΡΡΠΊΠΈ) Ρ webpack, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»ΡΡΠ΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π» ΡΠΎΡ ΠΆΠ΅ (ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ) ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· Ρ ΡΠ΅ΠΌ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ make / jakefiles, grunt, gulp ΠΈ Ρ. Π΄., Π½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΠΎΡΡΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ Π±Π΅ΡΡΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅ΡΠ° (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΈ), ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π±Ρ Ρ ΠΎΡΠ΅Π» ΡΠ²ΠΈΠ΄Π΅ΡΡ tsickle, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ (Π² ΠΌΠΈΡΠ΅ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ) ΡΠΎΡΠΌΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ webpack
tl; dr, webpack ΠΏΡΠΎΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ° commonjs, amd ΠΈΠ»ΠΈ es, ΠΈ Ρ Π½ΠΈΡ
Π΅ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ² ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π²Π΅ΡΠ΅ΠΉ, Π΅ΡΠ»ΠΈ webpack ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π²Π°ΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π² Π»ΡΠ±ΠΎΠΌ ΠΈΠ· ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ
javascript ΡΠΎΡΠΌΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ goog.*
lmk, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅, Ρ ΠΌΠΎΠ³Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π·Π΄Π΅ΡΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΌΠΎΠ³Ρ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ tsickle Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ webpack. Π― ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΎΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ!
ΠΈ ΡΠΏΠ°ΡΠΈΠ±ΠΎ!
@ steve8708 ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ goog.module
Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Π½Π΅ΠΌ Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ / ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ES6. Π ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ», Ρ Π½ΠΈΡ
Π½Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ export *
. ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠΊΠ°Π·Π°Π»Π°, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Ρ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ES6, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ².
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ TS ΡΠ΅ΡΠ΅Π· ΡΡΠΈ ΡΠ°Π³ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ / Π²ΡΡΡΡΡ ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ / ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π²ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΌΠΎΠ΄ΡΠ»Ρ ES6 Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ Π·Π°ΠΊΡΡΡΠΈΡ. Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ.
ΠΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°ΡΡ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ @alexeagle
Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π½Π°ΡΠ΅Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, ΡΡΠΎ gcc ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈ commonjs. Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΡ Π΅Π³ΠΎ ΠΈ Π²ΡΡΡΠ½Ρ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π³Π»ΡΡΠΈΡ, ΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»ΠΈ es6 Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ.
ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, Ρ ΠΏΠΎΠΊΠΎΠΏΠ°ΡΡΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ goog Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π² tsickle, ΠΈ Π΅ΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ gcc Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ ΡΠΈΠΏΠ° jsdoc, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ· ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°, Π½ΠΎ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ commonjs ΠΈΠ»ΠΈ es6. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Ρ ΠΎΡΠΎΡΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°!
ΠΡΠ΅ ΡΠ°Π· ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ!
ΠΠ±ΡΡΠ΄ΠΈΠ»ΠΈ Π΅ΡΠ΅ ΠΊΠΎΠ΅-ΡΡΠΎ Π·Π΄Π΅ΡΡ Π»ΠΈΡΠ½ΠΎ ... Π΅ΡΠ»ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ - ΡΡΠΎ export *
, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠΏΡΠΈΡ tsickle, ΡΡΠΎΠ±Ρ ΡΠ³Π»Π°Π΄ΠΈΡΡ Π΅Π΅ Π² export {symbol1, symbol2, ...}
Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΏΠΎΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ JSDoc (ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΡ
Π² Π½Π°ΡΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ ES6).
@alexeagle , Π±ΡΠ»ΠΎ Π±Ρ
Π Ρ
ΠΎΠ΄Π΅ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½Π΅Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ tsickle Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΆΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ export *
Π² ΡΠΎΡΠΌΠ°Ρ export { a, b, c }
Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ es6, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ Π½ΠΎΠ²ΠΎΡΡΡ!
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π» tsickle Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΄ΡΠ»ΠΈ goog ΠΈ ΡΠΌΠΎΠ³ Π΄ΠΎΠ±ΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ tsickle + gcc advanced ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Ρ Π½Π°ΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ webpack, ΠΊΠ°ΠΊ ΠΈ Π½Π°Π΄Π΅ΡΠ»ΡΡ!
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ Π½Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΡΡ Π½Π° ΡΠ΅Π»ΡΡ
15%, ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π² @angular/*
Π΅ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ. ΠΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ Π·Π°Ρ
Π²Π°ΡΡΠ²Π°ΡΡΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠ΅.
ΠΠ΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ ΡΡΠΎΠΌΡ, ΠΈΠ· ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΏΡΠΎΠ²Π΅Π» ΡΠ΅Π³ΠΎΠ΄Π½Ρ, Ρ Π²ΠΈΠΆΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ es6 Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ
Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° goog.require, ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ·ΠΎΠ²Ρ commonjs require. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ
ΠΎΡΠΎΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ tsickle ΠΊΠ°ΠΊ Π΅ΡΡΡ ΡΠΆΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌΠΈ esmodules, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ rollup ΠΈ webpack2, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΎΠ½ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π²ΡΠ·ΠΎΠ²Ρ _all_ commonjs require
ΠΈΠΌΠΏΠΎΡΡΠΎΠΌ es6.
Π ΡΡΠ°ΡΡΡΡ, ts 2.0 Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΠ» ΡΡΡ Π·Π°Π΄Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ declare module '*'
, ΠΈΠ·Π±Π°Π²ΠΈΠ² ΠΎΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ require
Π΄Π»Ρ ΠΊΠΎΠ΄Π° Π±Π΅Π· ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°.
ΠΠ½Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΠ΅ΡΠΏΠΈΡΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ΅ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ, Π΅ΡΠ»ΠΈ Π² @angular/*
es-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ
Π±ΡΠ΄ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² ΠΎΡ tsickle! ΠΡΠΎΠ±Π΅Π½Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° webpack2 Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ tree shake, ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΎΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ, Π½ΠΎ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° angular core / common / etc Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ!
Π Π΅ΡΠΈΠ» ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΈ ΡΡΠΎ.
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ tsickle
, Π½ΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ:
ΠΠ»Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ:
1) export *
ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΠ·-Π·Π° Π·Π°ΠΊΡΡΡΠΈΡ - ΡΠ° ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²ΡΡΠ΅ ...
node_modules/@angular/common/src/location.js:9 (JSC_CANNOT_CONVERT_YET)
ES6 transpilation of ''Wildcard export'' is not yet implemented.
export * from './location/location_strategy';
ΠΡΠ΄Π΅Ρ Π»ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π·Π΄Π΅ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Angular Π±Π΅Π· export *
?
2) ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π·Π°ΠΊΡΡΡΠΈΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° angular, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
node_modules/@angular/core/src/metadata/ng_module.js:15 (JSC_PARSE_ERROR)
Parse error. illegal use of unknown JSDoc tag "stable"; ignoring it
* <strong i="16">@stable</strong>
Π― Π²ΡΠΏΠΎΠ»Π½ΡΡ ΡΠ±ΠΎΡΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Ρ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ rxjs-es Π²ΠΌΠ΅ΡΡΠΎ rxjs, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ commonJS.
ΠΠ½Π΅ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΎ ΠΏΠ»Π°Π½Π΅ tsickle vs ngc. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ³Ρ ΡΡΠ΄ΠΈΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ
Π² ΡΠ°Π½Π΄Π΅ΠΌΠ΅ ngc -> tsickle
. ΠΡΡΡ Π»ΠΈ ΠΏΠ»Π°Π½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΡ
, ΡΡΠΎΠ±Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΡΡΠΎ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π³Π°?
ΠΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΉΡΠΈ. Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» Π΄Π»Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π‘Π΄Π΅Π»Π°Π» Π½Π΅ ΡΠ³Π»ΠΎΠ²ΠΎΠΉ POC Ρ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ Π·Π΄Π΅ΡΡ: http://www.syntaxsuccess.com/viewarticle/tree-shaking-in-javascript
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ³Ρ ΡΡΠ΄ΠΈΡΡ, Closure ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΠΎΠΌ Π² ΠΏΠ»Π°Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°. ΠΠΎΠΉ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΡΠΎΠΊΡΠ°ΡΠΈΠ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π»Π°ΠΉΠ½Π΅ΡΠ°, Π½ΠΎ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π½Π΅ΡΡΠ½ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Angular. ΠΠ°Π΄Π΅ΡΡΡ!
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° PR Π² Ρ ΠΎΠ΄Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
"@angular/common": "angular/common-builds",
"@angular/compiler": "angular/compiler-builds",
"@angular/compiler-cli": "angular/compiler-cli-builds",
"@angular/core": "angular/core-builds",
"@angular/platform-browser": "angular/platform-browser-builds",
"@angular/platform-server": "angular/platform-server-builds",
"@angular/tsc-wrapped": "angular/tsc-wrapped-builds",
ΠΈ Π½Π΅Ρ export *
ΠΈ Π²Π΅ΡΡ ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ JSDoc Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΈΡ.
@thelgevold @ steve8708 Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ ΡΠ°Π·?
Π― ΠΈΡΡΠ»Π΅Π΄ΡΡ https://github.com/cramforce/splittable Ρ @robwormald
@alexeagle ΠΊΡΡΡΠΎ !
Π― ΠΏΡΠΎΠ±ΡΡ ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΠΉ -builds
Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΎΡ ngc:
Error: Metadata version mismatch for module [path to a project .ts file], found version 1, expected 2
Π― Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ²Π΅ΡΠ΅Π½ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π΅ΡΡΡ Π»ΠΈ Ρ Π²Π°Ρ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΌΡΡΠ»ΠΈ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ?
@tbosch Π²Π½Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΌΠΎΠ΅Π³ΠΎ. ΠΠ½ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Angular ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΈ 2. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΈ 1 ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π½Π° ΠΌΠ΅ΡΡΠ΅. ΠΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΎΡΠΈΠ±ΠΊΡ, Ρ ΠΏΠΎΠ·Π²ΠΎΠ»Ρ Π’ΠΎΠ±ΠΈΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ...
ΡΡΠΎ ΡΠΈΠΊΡΠ°ΡΠΈΡ: https://github.com/angular/angular/commit/dddbb1c1cb08115f339e34487774c85a3c6493f3
ΠΎΠ΄Π½ΠΎ Π΄Π΅Π»ΠΎ, Π΅ΡΡΡ Π»ΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ .metadata.json
? ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΎΡΠΈΡΡΠΈΡΡ ΠΈΡ
ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏΠΎΠΏΡΡΠΊΡ?
@alexeagle Π― @angular/core
ΠΡΠΌΠ°Ρ, Ρ Π³Π΄Π΅-ΡΠΎ ΡΠΈΡΠ°Π», ΡΡΠΎ Π·Π°ΠΊΡΡΡΠΈΠ΅ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠΌΠΏΠΎΡΡ. ΠΡΠ»ΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΡ ΠΈΠΌΠΏΠΎΡΡ Π² Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΏΡΡΠΈ, ΡΡΠΎ, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΠΈΡΠΏΡΠ°Π²ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈΡ Π²ΡΠ΅ Π²ΡΡΡΠ½ΡΡ.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ
ΡΡΡΠ»ΠΎΠΊ, ΠΊΠ°ΠΊ @angular/core
Π² ../../core/index
Π² ΠΊΠΎΠ΄Π΅ angular / application, ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ....
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ:
node_modules/@angular/common/src/pipes/slice_pipe.js:8: ERROR - required "module$$angular$core" namespace never provided
import { Pipe } from '@angular/core';
ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΈ ΡΠ²ΠΎΠ΅ ΡΠ΅ΠΏΠΎ, ΠΈ, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΠ°ΠΌ ΡΠΎΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΡΠΎ-ΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ Π·Π°ΠΊΡΡΡΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠΌΠΏΠΎΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ @angular/core
Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΡΡ.
@thelgevold Π― node_modules/@angular/core/index.js
Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ module$$angular$core$index
. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° ESModule Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°, Π½Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π³ΠΎΠ²ΠΎΡΡΡΠ΅ΠΉ, ΡΡΠΎ Β«foo / index.jsΒ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ Ρ Β«fooΒ». ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ CommonJS ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎ, rollup ΠΈ systemjs ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ. ΠΠΎΡΡΠΎΠΌΡ Π³ΡΡΠΏΠΏΠ° Π·Π°ΠΊΡΡΡΠΈΡ ΠΎΡΠ²Π΅ΡΠΈΠ»Π°, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΎ. https://github.com/google/closure-compiler/issues/1710 (Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Ρ Ρ @MatrixFrog)
Π― ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Ρ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ import {} from '@angular/core'
Π½Π° from '@angular/core/index'
ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Ρ
ΠΎΡΡ ΡΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΡΠΌ ΠΏΡΡΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ ΡΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ.
Π― ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΌΠΎΠ΄ΡΠ»Ρ Π² commonjs - ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, Ρ ΠΎΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠ°, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ΅ΠΉΡΠ°Ρ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ»ΡΡ ΠΈ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ :(
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ tsickle, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ /index
Π² ΠΊΠΎΠ½Π΅Ρ ΠΏΡΡΠ΅ΠΉ, ΠΈΠΌΠΏΠΎΡΡ Π²Π½ΡΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, @angular/platform-browser
ΠΈΠΌΠΏΠΎΡΡ ΠΈΠ· @angular/core
, etc) ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ
ΠΏΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ gcc
Π― ΠΏΠΎΠ΄ΡΠΌΠ°Ρ ΠΎΠ± ΡΡΠΎΠΌ Π±ΠΎΠ»ΡΡΠ΅, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ gcc advanced ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π΅ΡΠ΅ Π½Π΅Ρ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ΄Π΅ΠΉ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ, ΡΡΠΎΠ±Ρ ngc Π²ΡΠ²ΠΎΠ΄ΠΈΠ» JS Ρ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΡΡΠΊΠΎΠΉ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ°, ΡΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ TypeScript.
Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π²ΡΠΏΡΡΠΊΠ° A2 ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΠΊΠΎΠ΄Π° angular? Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΠ΅ Π²Π΅ΡΡΠΈΡ Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΠΈΠΌΠΏΠΎΡΡΠΎΠΌ ΡΠΎΡΠΌΡ?
ΠΡΠΎ Ρ
ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ - Π²Π½ΡΡΡΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ tsickle convert to goog.module
ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ²Π½ΠΎΠ³ΠΎ
ΠΈΠΌΠΏΠΎΡΡ ΠΈΠ· /index.js
Π ΡΡΠ΅Π΄Ρ, 30 Π½ΠΎΡΠ±ΡΡ 2016 Π³., Π² 11:35 Π’ΠΎΡΠ³Π΅ΠΉΡ Π₯Π΅Π»ΡΠ³Π΅Π²ΠΎΠ»ΡΠ΄ [email protected]
Π½Π°ΠΏΠΈΡΠ°Π»:
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ, ΡΡΠΎΠ±Ρ ngc Π²ΡΠ²ΠΎΠ΄ΠΈΠ» JS Ρ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ
import, ΡΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ TypeScript.Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π²ΡΠΏΡΡΠΊΠ° A2 ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΠΊΠΎΠ΄Π° angular? ΠΠΎ ΡΡΡΠΈ
ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΡ Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΠΈΠΌΠΏΠΎΡΡΠΎΠΌ ΡΠΎΡΠΌΡ?-
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ»ΠΈ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/angular/angular/issues/8550#issuecomment-263971981 ,
ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ
https://github.com/notifications/unsubscribe-auth/AAC5Iy255poYsJTn8ZdBAgVZWbagFwzAks5rDdARgaJpZM4IaZIi
.
ΠΡ , ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ!
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡ
Π²Π°ΡΡΠ²Π°ΡΡ Π½Π΅ ΡΠ³Π»ΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ? Π’.Π΅. Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π»ΠΈ tsickle ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π±Π΅Π· ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° / angular, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ import { foo } from 'other-lib'
Π² import { foo } from 'other-lib/index'
Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ?
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ·Π»Π°, Π΅ΡΠ»ΠΈ other-lib
ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π΅ main
Π² ΠΈΡ
package.json, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅ Π½Π° main.js
, ΡΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΎΠ½ (ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½) ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠΏΠΎΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² import { foo } from 'other-lib/main'
?
Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π³Π»ΡΠ±ΠΎΠΊΠΎ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡΠΎΡΠΊΠ°Π»ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅Π»ΡΠΊΠ°Π½ΠΈΠ΅ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· Π²ΡΠ΅, ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π΄Π»Ρ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
ΠΡΠ»ΠΈ Π±Ρ Π²ΡΠ΅ ΡΡΠΎ Π±ΡΠ»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΡΡΠ°ΡΡΠ΅ ΠΈ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ Π±Ρ, ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ tsickle ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π²Π΅ΡΠ½ΡΡΡ Π½Π° Π½Π°Ρ ΡΠ°Π΄Π°Ρ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΡΡΡΡΠ°ΡΡΠ΅!
Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΡΠ΅ΠΌ Π·Π°ΠΊΡΡΡΠΈΡ, ΡΡΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Π΄ΡΡΠ³ΠΈΡ . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ
ΠΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈ Π² Google. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ tsickle, ΡΠΎΠ»ΡΠΊΠΎ ngc.
ΠΡ , ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° @alexeagle!
ΠΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ²Π΅Π·Π΅Ρ, Ρ ΠΏΠΎΠΏΡΠΎΡΠΈΠ» TS ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ:
https://github.com/Microsoft/TypeScript/issues/12597
Π ΠΏΠΎΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±Π΅Π· ΠΏΡΠΎΠΌΠ΅Π΄Π»Π΅Π½ΠΈΡ, ΡΠ΅ΠΉΡΠ°Ρ Ρ ΠΏΡΠΎΠ±ΡΡ. ΠΠΎΡ Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°:
https://github.com/angular/tsickle/issues/288
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π·ΡΠ±Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π½Π°. Π‘Π±ΠΎΡΠΊΠ° ΡΠ³Π»ΠΎΠ²Π°Ρ ΠΈΠ· ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠΈ:
https://github.com/alexeagle/angular/tree/closure
Π’Π΅ΠΏΠ΅ΡΡ Ρ ΡΠΎΠ·Π΄Π°Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² ES6 ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΠ²Π½ΡΠΌΠΈ import {} from '@angular/core/index'
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² rxjs. @jayphelps ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΈΡΡΠΎΡΠΈΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ rxjs, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π° Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 5.0.0-final. Π’Π΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² rxjs.
ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° @alexeagle
Π― ΡΠ°Π·Π΄Π²ΠΎΠΈΠ» Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Β«ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ Β» ΠΎΠ±ΡΠ°Π·ΡΠΎΠ². Π₯ΠΎΡΠΎΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½Π° ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΠΌ.
Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΎΠ±ΡΠ°Π·ΡΡ Dynamic Forms (ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΎΡΠΌΡ) ΠΈ Recursive Treeview, ΠΈ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ, Π±ΡΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌ ΡΠΎΡΠΌ ΠΈ ngIF, ngFor ΠΈ Ρ. Π.
ΠΠΈΠ»ΠΊΠ°:
https://github.com/thelgevold/closure-compiler-angular-bundling/tree/add-samples
Π― ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΠ» Π·Π΄Π΅ΡΡ Π²Π΅ΡΡΠΈΡ ΠΎΠ±ΡΠ°Π·ΡΠ°:
http://www.syntaxsuccess.com/a2-closure/
ΠΡΠ»ΠΈΡΠ½ΠΎ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΡΠ°ΠΊ Π±ΡΡΡΡΠΎ ΠΏΠΎΠ΄Π½ΡΠ»ΠΈ ΡΡΠΎ @thelgevold
ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ
, Π½Π°Π±Π»ΡΠ΄Π°ΡΡΠΈΡ
Π·Π° Π²Π΅ΡΠΊΠΎΠΉ: ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², Ρ Π½Π°Ρ ΡΠ½ΠΎΠ²Π° Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»ΠΎΠ². Zone.js Π²ΡΡΡΠΎΠ΅Π½ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Π·Π°ΠΊΡΡΡΠΈΡ.
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ - ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ . Ionic ΡΠΎΠΆΠ΅ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ. ΠΠ°ΡΠ΅ΠΌ, Π³Π΄Π΅-ΡΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΌΠ΅ΡΡΡΠ΅ ΠΌΡ ΠΏΠΎΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠΎΠ±ΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Closure Compiler Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ½Π°ΡΠ΅ Ρ Π½Π°ΠΌΠΈ ΠΈ ΡΠ΅ΡΠΈΡΡ ΡΠ°ΠΌΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π’Π΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ @mhevery ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ, Π½ΠΎ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ
ΠΠΎΠΏΡΠΎΡ:
Π― ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π» Π½Π° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π·Π°ΠΊΡΡΡΠΈΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΡΡΠ΅ΠΉ ΠΈΠΌΠΏΠΎΡΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° TypeScript Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠ±Π»ΠΈΠΊΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ JS.
ΠΡΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π±Π°ΡΡΠ΅Π»Π΅ΠΉ Π±Π΅Π· index
Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΡΠΈ.
ΠΠ±ΡΡΠΆΠ΄Π°Π»ΠΈΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΌΠ΅Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΠ·Π»Π° moduleResolution
?
Π― Π΄ΡΠΌΠ°Ρ, Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΏΠ»ΠΎΡ
ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ moduleResolution
ΠΈ Π²ΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡΡΠ°ΡΡ index
Π² ΠΏΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°.
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ½ΠΈΠ·ΠΈΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠΈΡΠΊ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΈΠΌΠΏΠΎΡΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ.
ΠΡΠΈ ΡΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ (ADVANCED_OPTIMIZATION) ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎΠΆΠ΅Ρ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ?
ΠΡΡΠ»ΠΈ?
Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½, Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π²
tsickle - Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ½ΠΎΠ²Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ moduleResolution.
ΠΠ½ΡΡΡΠ΅Π½Π½Π΅ ΠΌΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»ΠΈ commonJS Π² goog.module / goog.require - I
ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π΄Π»Ρ Π½Π°Ρ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π΄Π΅Π»Π°ΡΡ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ°Π³ Π² dev
ΡΠ΅ΠΆΠΈΠΌ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² ΡΡΠΈΠ»Π΅ node_module Π΄Π°Π»Π΅Π΅.
ΠΠ° Π½Π΅Π΄Π΅Π»Π΅ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π½Ρ Ρ
Π°ΠΊΠ°ΡΠΎΠ½Π° Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Closure Compiler.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΠΎΠ½ΡΠ» ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ
ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΡΡΡΠ°Π΅ΡΡΡ ADVANCED_OPTIMIZATIONS,
Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΈΠ·-Π·Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ (ΡΠΎΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½, ΠΊΠ²Π°Π΄ΡΠ°Ρ
ΡΠΊΠΎΠ±ΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π΅Ρ). ΠΠΎΡΡΠΎΠΌΡ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΡΡΠ°Π½ΡΡΡΡ
Π²Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π·Π°ΠΊΡΡΡΠΈΡ. ΠΠ½ΡΡΡΠΈ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π±Π΅ΡΠ΅ΠΌ ΠΈΡ
-min.js
distro ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ JS, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ.
ΠΡ ΠΏΠΎΠ΄ΡΠΌΠ°Π»ΠΈ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ
ΠΎΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΊΡΡΡΠΈΡ. Π― ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π±Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ:
ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ closureCompilerCompatible: true Π² package.json Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π·Π°ΠΊΡΡΡΠΈΡ. ΠΠ°ΡΠ΅ΠΌ ΡΠ±ΠΎΡΠΊΠ°
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΏΠ°ΠΊΠ΅Ρ, vs.
ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠ°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΡ
externs.
Π ΡΠ΅ΡΠ²Π΅ΡΠ³, 12 ΡΠ½Π²Π°ΡΡ 2017 Π³., Π² 18:59 Π’ΠΎΡΠ³Π΅ΠΉΡ Π₯Π΅Π»ΡΠ³Π΅Π²ΠΎΠ»ΡΠ΄ [email protected]
Π½Π°ΠΏΠΈΡΠ°Π»:
ΠΠΎΠΏΡΠΎΡ:
Π― ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π» Π½Π° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π·Π°ΠΊΡΡΡΠΈΡ.ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΡΠ΅ΠΉ ΠΈΠΌΠΏΠΎΡΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ TypeScript
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠ±Π»ΠΈΠΊΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JS
ΠΈΡΡΠΎΡΠ½ΠΈΠΊ.
ΠΡΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π±Π°ΡΡΠ΅Π»Π΅ΠΉ Π±Π΅Π· ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΡΠΈ.ΠΠ±ΡΡΠΆΠ΄Π°Π»ΠΈΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΌΠ΅Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π½Π°
ΠΏΠΎΠ»ΡΠ·Ρ node moduleResolution.ΠΡΠΌΠ°Ρ, Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ
moduleResolution ΠΈ Π²ΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ Π² ΠΏΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°.Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²
Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠΈΡΠΊ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ
import, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ.Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ (ADVANCED_OPTIMIZATION) Π²
ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π΅
Π²ΡΠ΅ ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ?ΠΡΡΠ»ΠΈ?
-
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ»ΠΈ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/angular/angular/issues/8550#issuecomment-272348788 ,
ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ
https://github.com/notifications/unsubscribe-auth/AAC5I49thgsBW1VGc3oyFVvEchxI2D6Zks5rRuivgaJpZM4IaZIi
.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ²Π΅Ρ. ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΎΠΌ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
ΠΠ°, Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π²ΠΈΠΆΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ - ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΡΠ΅ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π±Π΅Π· ΡΡΠ΅ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ. ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ»Π°Π³ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ.
ΠΠΎΠΉ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°Ρ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ. Π― Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠ΅ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π½ΠΎ ΠΌΠ½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π΅ΡΡΡ Π»ΠΈ Π² ngc
ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ Π²Π΅ΡΠΈ, ΡΠΎΠ·Π΄Π°Π² ΠΊΠΎΠ΄, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΠ· ΡΡΠΈΡ
ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ. Externs
Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΎΡ ΡΠ»ΡΡΠ°Ρ ΠΊ ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½ΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΠ·ΠΎΠ²Ρ http.
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ http-Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ....
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Β«ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈΒ» Π² Π·Π°ΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ²ΠΎΠΉΡΡΠ² Π½Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Closure Π½Π΅ ΡΠΎΠΊΡΠ°ΡΠ°Π» ΠΈΠΌΠ΅Π½Π° ΡΠ²ΠΎΠΉΡΡΠ² Π² ΡΡΡΠ»ΠΊΠ°Ρ
Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ· ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
http.
Π― ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ°Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΡ {'firstName': 'Joe'}
.
ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Ρ
ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΌΠ΅Π½Ρ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π»ΡΠ΄ΡΠΌ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡΡ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΎΠΉ ngc Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ JS Π² ΡΡΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ Π² ΡΠ΅Ρ
ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½Π° ΡΠ²ΠΎΠΉΡΡΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΡΠΈΡΠ΅Π½Ρ?
ΠΠ½ΡΡΡΠΈ tsickle ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ
ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ User {firstName: string; }
(Ρ ΠΏΠΎΠΌΠΎΡΡΡ "declare") ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Closure, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π½Π΅ ΠΈΡΠΊΠ°ΠΆΠ°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎΠ»Π΅ firstName.
ΠΡΠΎ ΡΠΌΡΡΠ½ΠΎ ΡΠΎΠ³Π»Π°ΡΡΠ΅ΡΡΡ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² TS, Π³Π΄Π΅ "declare"
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° TS.
@evmar ΠΡΠ»ΠΈΡΠ½ΠΎ! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π»ΠΈ ΠΌΠ½Π΅ ΠΎΠ± ΡΡΠΎΠΌ.
Π― ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» ΡΠ²ΠΎΡ Π²ΠΈΠ»ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΡΠ½ΠΈΠΌΠΊΠΎΠ² ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ angular. https://github.com/thelgevold/closure-compiler-angular-bundling
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ - ΡΡΠΎ ΠΊΠ°ΡΡΠΎΠΌΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ° rxjs.
Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, Ρ Π½Π°ΡΠ°Π» ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ ΡΠ²ΠΎΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π° Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ Π²ΠΈΠ»ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°.
ΠΠΎΡ Π΄Π²Π΅ ΡΠ±ΠΎΡΠΊΠΈ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΡΠ±ΠΎΡΠΊΠΎΠΉ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΌΠΎΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
http://www.syntaxsuccess.com/closure-compiler-demo
http://www.syntaxsuccess.com/rollup-compare-demo
Π― Π½Π΅ Π·Π½Π°Ρ Π½Π°Π²ΡΠΊΠΎΠ² css, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π΄Π΅ΠΌΠΎ-Π²Π΅ΡΡΠΈΠΈ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΡΡΠΈΠ»Ρ, Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Π΄Π²Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ:
ΠΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ²:
ΠΠ°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ: 130 ΠΠ
ΠΠ°ΠΊΡΡΡΠΈΠ΅: 79,2k
Π ΡΠ±ΠΎΡΠΊΠ΅ Closure Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠΊΠ»Π°Π΄ΠΊΡ core-js, Π΅ΡΠ»ΠΈ Π²Π°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ es6 (Chrome, Edge ΠΈ Ρ. Π.). ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ Rollup ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΊΠ»Π°Π΄ΠΊΠ°, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ es6 Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΡΠΎ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π½Π΅ Π²ΡΡΡΡΡ ΠΈΠ²Π°ΡΡ.
Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Ρ Π±ΡΠ΄Ρ ΡΠ°ΡΡΠΈΡΡΡΡ ΡΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡ, ΡΠΎΡΠΌΡ ΠΈ ReactiveForms.
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ Π±ΡΠ»ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π²Π½Π΅ΡΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π±ΡΠ»Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Β«ΡΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ΅ΡΠΊΠΈΒ». Π‘Π΅ΡΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠΎΠ»Π±ΡΠ°, ΡΡΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ ΡΠ²ΠΎΠΉΡΡΠ².
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ declare
Π±ΡΠ²ΡΠΈΠΉ:
export declare interface Person {
firstName: string;
lastName: string;
age: number;
}
ΠΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Ρ ΠΌΠΎΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ declare
, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π½Π΅ ΠΎΡΡΠ°Π²Π»ΡΠ» ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Closure, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» "ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΡ", Π·Π°ΡΠΈΡΠ°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ²ΠΎΠΉΡΡΠ². ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ
ΠΎΡΠΎΡΠΎ, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ²:
ΠΠ°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ: 130 ΠΠ
ΠΠ°ΠΊΡΡΡΠΈΠ΅: 79,2k
Π― ΡΠ΄ΠΈΠ²Π»Π΅Π½. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΊΡΡΡΠΈΡ Π² ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ Π»Π΅Ρ, Ρ ΠΌΠΎΠ³ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ°Π·Π½ΠΈΡΠ° Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ... ΠΠΎ Ρ ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Angular - ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ.
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Angular ΠΈ Application code / rxjs ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 70/30.
ΠΠΎΡ Π²ΠΈΠ΄ ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅: http://www.syntaxsuccess.com/closure-compiler-demo-map
@ b-strauss ΠΠΈΡΠΊΠΎ ΡΡΠΈΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° Π²Π΅ΡΠ° Angular Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π΄Π΅ΡΠ΅Π²Π°, Π½ΠΎ Closure Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠΏΡΡΠΊΠ°Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ. ΠΠΆΠΈΠ΄Π°ΠΉΡΠ΅, ΡΡΠΎ ΡΠΈΡΠ»ΠΎ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ½ΠΈΠ·ΠΈΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 20 ΡΡΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°ΠΌΠΈ.
@thelgevold ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Angular Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ES6 (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΡΡ , Π½ΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ), Π° Π½Π΅ ΠΎΡ Π²ΡΠ΅Ρ es6-shim. https://github.com/angular/angular/blob/master/modules/tsconfig.json#L22
@thelgevold: Π΄Π°, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ
https://github.com/angular/angular/issues/14325
@alexeagle ΠΡΠ»ΠΎ Π±Ρ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΡ, ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ»ΡΡΠ°Π΅Π²?
ΠΠ΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ externs
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Β«ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠ΅Β» Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌ.
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Closure ΠΌΠΎΠΆΠ΅Ρ Π»ΡΡΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠΈΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ²ΠΎΠΉΡΡΠ² Π·Π° ΡΡΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ.
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ externs ΠΌΠ΅Π½Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΈΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ 50 ΡΡΡΠ»ΠΎΠΊ Π½Π° firstName
ΠΎΡΡΠ°Π½ΡΡΡΡ ΠΊΠ°ΠΊ firstName, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΡΡΠ»ΠΊΡ ΠΊΠ°ΠΊ firstName
ΠΈ ΠΈΡΠΊΠ°Π·ΠΈΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ 49 Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΡΡΡΠ»ΠΎΠΊ.
@thelgevold ΡΡΠΎ ΠΏΡΠ°Π²Π΄Π°, ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ externs ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΡΡΠΎ ΠΈΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠ΅Π΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Π²Π΅Π·Π΄Π΅.
Π£ Π½Π°Ρ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΠΎΡΠ΅ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π² ΡΠΈΡΠΈΡΡΠ΅ΠΌΡΠΉ Π΄ΠΎΡΡΡΠΏ, Ρ
ΠΎΡΡ Ρ ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΈΠΏΠΎΠ² ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΠΈΠ΄Π΅ΡΡ declare interface
ΠΈ Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ.
ΠΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΆΠ°ΡΠΈΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ? ΠΡΠ»ΠΈ firstName
Π²Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΠ»ΠΎΠ²Π°ΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡΠΆΠ°ΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π½Π° Π½Π΅Π³ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅.
FWIW - ΡΡΠΎ ΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ΅ΠΉΡΠ°Ρ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google. ΠΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅ΠΌΡ.
Π― ΠΏΠΎΡΡΠΈ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π·Π°ΠΊΡΡΡΠΈΠ΅ Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΈΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ: model['firstname']
Π² ΡΡΠΎ x.firstname
.
AFAIK Β«ΡΠΈΡΡΡΠΉΒ» ΡΠΏΠΎΡΠΎΠ± Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ Π΄Π°Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ notModel.firstName
ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ y.firstname
Π²ΠΌΠ΅ΡΡΠΎ y.z
ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½ΠΎΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΡΠΈΠΏΡ ΡΡΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΏΠΎ ΡΠΈΠΏΠ°ΠΌ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π² externs. Π’Π°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π² ΡΡΠ°ΡΠΎΠΌ Β«Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌΒ» ΠΌΠΈΡΠ΅. Π― ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ externs Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½ΠΎ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
@alexeagle ΠΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΏΡΠ°Π²Ρ. ΠΠΎΡΠ»Π΅ gzip ΠΏΠΎΠ»ΡΠ·Ρ ΠΎΡ gzip Π½Π΅ Π±ΡΠ΄Π΅Ρ.
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π°ΠΌ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ Π²ΡΠ΅ Β«ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅Β» ΡΡΡΠ»ΠΊΠΈ firstName
ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΈΡ
Π½Π° ['firstName']. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΌΠ΅ΡΡ Π½ΠΎΡΠ°ΡΠΈΠΈ .firstName
ΠΈ ['firstName']
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ»ΠΎΠΌΠ°Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
@ b-strauss ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ['firstName'] Π² .firstName. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΠΎΡ ΡΠ΅ΠΎΡΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π»Π΅ΠΆΠ°ΡΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π΅ [''] ΠΈ externs: https://developers.google.com/closure/compiler/docs/api-tutorial3
Π― Π½Π°Π±Π»ΡΠ΄Π°Π» ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ²ΠΎΠΈΡ
ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Ρ
, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π΄Π΅ΡΡ ΠΎΠ½ΠΎ Π½Π΅ ΡΡΠΎΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ.
ΠΠ»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» JS Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π·Π°ΠΉΠΌΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠ΅Π»ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ gzip.
@thelgevold Π― Π·Π½Π°Ρ, ΡΡΠΎ Π·Π° ΡΡΠΈΠΌ ΡΡΠΎΠΈΡ. :)
Π― ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π» Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΅ΡΡ:
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
/**
* <strong i="9">@constructor</strong>
*/
function NotMyModel() {
this.firstname = 'foo';
}
console.log(new NotMyModel().firstname);
console.log(new MyModel().firstname);
Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
<script>
function MyModel() {
this.firstname = 'foo';
}
</script>
ΠΈ ΡΡΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅:
/**
* <strong i="16">@constructor</strong>
*/
function MyModel() {
}
/**
* <strong i="17">@type</strong> {string|null}
*/
MyModel.prototype.firstname;
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄:
(function () {
console.log("foo");
console.log((new MyModel).firstname);
})();
Closure ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ Π΄Π²Π° ΠΈΠΌΠ΅Π½ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½ΠΎΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΈ Π΄Π°ΠΆΠ΅ Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅. ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π», Π² ΡΡΠ°ΡΠΎΠΌ Β«Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌΒ» ΠΌΠΈΡΠ΅ ΡΡΠΎ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π±ΡΠ»ΠΎ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΡ ΠΊ Π²Π°ΡΠΈΠΌ ΡΠΈΠΏΠ°ΠΌ com.bstrauss.MyClass
.
ΠΠΎΠΏΡΠΎΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ tsickle Π΄ΠΎΠ»ΠΆΠ΅Π½ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΡΡΠ΅ΡΠ½Ρ Π² ΠΌΠΈΡΠ΅, Π³Π΄Π΅ ΡΠΈΠΏΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΈΠΌΡ?
AFAIK Π½Π΅Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ° goog.module
Π΄Π»Ρ externs.
@ b-strauss Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈΡΡ ΡΡΠΈΠΌ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠΌ.
ΠΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π±ΡΠ» Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ['']
ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ MyModel.firstName
. ΠΠ΅ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ± ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΡΠΎΡΡΠΎΠ²Π΅ΡΠ° Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ 10 MyModel().firstname
refs Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ['']
ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Closure ΡΠΎΠ·Π΄Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΈΡΡΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ firstName ΡΠ°ΠΌ, Π³Π΄Π΅ Π΅Π³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ΄, Π½ΠΎ Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ ΠΎΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π΄Π»Ρ ΡΠ°ΡΡΠ½ΡΡ
/ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΡΡΡΠ»ΠΎΠΊ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π½Π΅ ΠΏΡΠΈΠ½Π΅ΡΠ΅Ρ Π²Π°ΠΌ ΡΠ°ΠΊΠΎΠΉ Π²ΡΠ³ΠΎΠ΄Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π² ΠΏΠΎΠΊΠΎΠ΅.
@ b-strauss ΠΌΠΎΠΉ ΠΏΠ»Π°Π½ ΡΠΎΡΡΠΎΡΠ» Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° https://github.com/angular/tsickle/issues/352 , ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΈΠΌΡ externs ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ² ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. Π’ΠΎ Π΅ΡΡΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° foo/bar/baz.ts
:
/** <strong i="8">@externs</strong> */
function tsickle_from_foo_bar_baz_ts_MyModel() {}
/** <strong i="9">@type</strong> {string} */
tsickle_from_foo_bar_baz_ts_MyModel.prototype.firstName;
Π Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
goog.module('foo.bar.baz');
// Alias:
var MyModel = tsickle_from_foo_bar_baz_ts_MyModel;
// ... later on ...
new MyModel().firstName;
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ°, ΡΡΠ° Π²Π΅ΡΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ.
ΠΠ΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π°Π·Π°Π΄ Π² ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠ½ΡΡΠ° ΡΠ΅ΠΏΠΎΡΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Closure Compiler ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π²ΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΠΌ Π² ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΡΠ΅ΠΊΡ Webpack Π² Angular-CLI, Ρ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Ρ, ΡΡΠΎ ΠΎΠ½ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡ Π΄ΠΎΡΡΠΎΠΉΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ .
@alexeagle re "ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ΄ΡΡ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π·Π°ΠΊΡΡΡΠΈΡ" - ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Ρ ΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΏΡΠ°Π²Π½Π°Ρ ΡΠΎΡΠΊΠ°, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²ΡΠ΅ Π½Π°Π»Π°Π΄ΠΈΡΡΡ, ΠΊΠΎΠ³Π΄Π° Closure ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Angular, Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π½Π°Π΄ΡΡΡΠΎΠ΅ΠΊ Π΄Π»Ρ Angular (Ρ ΠΎΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠ°Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°) ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΈ ΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Ρ Closure. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΡΠ΅Π² Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ AOT, Π² Π½Π°ΡΠ°Π»Π΅ ΠΎΡΠ΅Π½ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠΊΠ°Π·Π°Π»ΠΈ "AOT?" Π½ΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π½ΠΈΡ , Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ AOT ΠΈΠ»ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Ρ ΠΈ Π΄Π²ΠΈΠΆΡΡΡΡ Π² ΡΡΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ.
ΠΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΡΠ»Π΅Π΄ΠΈΠ» Π·Π° ΡΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΡΠΈΠΌ Π²ΡΠΏΡΡΠΊΠΎΠΌ, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π³ΠΎΠ΄Π°, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π²ΠΈΠ΄Π΅Π» Π²ΡΡΠ΅, ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΡ Β«-buildsΒ», ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Angular 4 rc ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ ES2015, ΡΠ°ΠΊ ΡΡΠΎ Π² ΡΡΠΎΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠΎΡ Π²Π΅ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ», ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Closure.
https://github.com/kylecordes/closure-compiler-angular-bundling/tree/update-versions
Π’Π°ΠΊΠΎΠ΅ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π½Π° ΠΏΠΎΡΠΎΠ³Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ Angular, ΡΠΎΡΡΠΎΡΡΠ΅ΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ngc (Ρ tsc Π²Π½ΡΡΡΠΈ) ΠΈ Closure. ΠΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΡΡΠ΅ΠΊ.
Π― ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ 4rc.2, ngc (AOT), Closure Compiler:
https://github.com/OasisDigital/angular-aot-closure
Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΠΌΠ°Π»ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΠ»Π΅ΠΊΡΡ, Π½ΠΎ Ρ Π½Π΅Π³ΠΎ Π΄ΡΡΠ³Π°Ρ ΡΠ΅Π»Ρ. Π― ΠΏΡΡΠ°ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΈ ΡΠ΅ΠΊΡΡΠ°, ΠΎΠ±ΡΡΡΠ½ΡΡΡΠ΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ. ΠΠΎΡΡΠΎΠΌΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡ ΠΏΠΎ Π½Π΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΎ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΈΠ»ΠΈ README.
@nosachamos ΠΠΈΠΊΠ°Ρ Π΄ΠΎΠ³Π°Π΄ΠΊΠ°: ΡΡΠΎ-ΡΠΎ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, tsickle ΠΈΠ»ΠΈ Closure?) Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ this
. ΠΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
this
ΠΈ Π»ΡΠ±ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ this
. ΠΠ°Π΄Π΅ΡΡΡ, ΠΊΠΎΠΌΠ°Π½Π΄Π° RxJS ΡΠ²ΠΈΠ΄ΠΈΡ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ; Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ±ΡΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Angular ( @alexeagle ?) ΠΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.this
... ΠΈ ΠΎΠ½ Π½Π΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΠΌ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² (tsickle?).@kylecordes Ops, Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΡΠ²ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠ΄Π°Π»ΠΈΠ» ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠ΅ΡΠ°ΡΠ°Π»ΠΈ.
ΠΠ»Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«thisΒ» ΡΠ΄Π°Π»ΡΠ»ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π²ΡΠ·ΡΠ²Π°Π»ΠΎ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ call
, ΠΏΠΎΡΡΠΎΠΌΡ this
Π±ΡΠ» ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈ Π½Π΅ Π½ΡΠΆΠ΄Π°Π»ΡΡ Π² ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅. ΠΡΠ»ΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΡΡ "this" Π² "this2", Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡ. ΠΡΠΌΠ°Ρ, ΡΡΠ°Π½ΡΠΏΠΈΠ»Π»Π΅Ρ ΡΠΌΠ½Π΅Π΅, ΡΠ΅ΠΌ Ρ Π΄ΡΠΌΠ°Π».
ΠΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΡΡΠ΅ΠΊΡΠ°Ρ ngrx, Π° Π½Π΅ Π² rxjs. Ngrx / effects ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΡΡΡΠ΅ΠΊΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· ΠΈΡ ΠΈΠΌΠ΅Π½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ ΡΠΊΠΎΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΡΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π§ΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π²Π°ΡΠΈ ΡΡΡΠ΅ΠΊΡΡ, ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΠΈΡ ΠΈΠΌΠ΅Π½Π° Β«thisΒ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ:
export class MyEffects {
@Effect()
doSomething$: Observable<Action> = this.actions$ ...
constructor() {
this['doSomething$'] = this.doSomething$;
}
}
ΠΡΠ°ΠΊ, Ρ ΠΏΠΎΡΡΠΈ ΠΏΡΠΈΡΡΡΠΏΠΈΠ» ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ ΡΡΠ΅ΠΊ ngrx. Π― ΠΏΠΈΡΡ ΡΠΎ, ΡΡΠΎ ΡΡΠΈΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΡΡΠ½ΡΠΌ ΡΠΊΡΡΠ΅ΡΠ½ΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ, Ρ ΡΠΎΠ·Π΄Π°ΠΌ Π²Π΅ΡΠΊΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π΄Π΅ΡΡ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ ngrx Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π²ΠΈΠ»ΠΊΡ ngrx / core ΠΈ ngrx / store, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΈ PR Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΡ Π·Π½Π°ΠΊΠΎΠ² Π½Π΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ, Π½ΠΎ, ΠΊΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ.
Π― Π±ΡΠ΄Ρ Π΄Π΅ΡΠΆΠ°ΡΡ Π²Π°Ρ Π² ΠΊΡΡΡΠ΅, ΡΠ΅Π±ΡΡΠ°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΡΠΎΡΠΈΠ² tsickle Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ this
? ΠΡ Ρ
ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΡΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ngrx, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ?
@nosachamos Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΄Π°Π»ΠΈΡΡ, Π΅ΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ? (Π·Π° @evmar )
@kylecordes ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ,
Π½ΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ "this", ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ call
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ this
Π±ΡΠ΄Π΅Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π² call
. ΠΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅Π²Π΅ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π±ΡΠ» ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π² Β«ΡΡΠΎΠΌΒ» ΡΠ°ΡΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ°Π½ΡΠΏΠΈΠ»Π»Π΅Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌ.
@evmar Π― ΡΠ°ΠΊ ΡΡΠΈΡΠ°Ρ. ΠΡΠΎΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅, Π½ΠΎ Ρ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Ρ, ΡΡΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ Ρ @dict Π·Π°ΠΊΡΡΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π― ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»Ρ ΠΈΠΌ PR, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΠΎΡΠΏΡΠ°Π²Π»Ρ PR Π² ΠΈΡ README Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΌ ΠΎΠ± ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΡΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ngrx / effects Ρ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π»ΡΠ±Π°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΡΠΈΠΏΠ° Closure, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Π°Ρ Π² ΠΊΠΎΠ΄ TS, ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ Tsickle, ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ @dict ΡΡΠ΄Π° Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
ΠΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΡΡΠ΅ΠΊΡΠ°Ρ ngrx, Π° Π½Π΅ Π² rxjs. Ngrx / effects ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΡΡΡΠ΅ΠΊΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· ΠΈΡ ΠΈΠΌΠ΅Π½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ ΡΠΊΠΎΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΡΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π§ΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π²Π°ΡΠΈ ΡΡΡΠ΅ΠΊΡΡ, ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΠΈΡ ΠΈΠΌΠ΅Π½Π° Β«thisΒ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ:
@nosachamos ΠΠ΅ @Input()
ΠΈ @Output()
? ΠΡΡΠ³ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ: Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°ΡΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ?
@evmar Π― ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ removeComments: false
ΠΈ Π²ΡΠ΅ ΠΌΠΎΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊ Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΊΠΎΠ΄ ES6, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠΊΠ°ΡΠΌΠ»ΠΈΠ²Π°Ρ Π·Π°ΠΊΡΡΡΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ Π²ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Ρ
ΠΎΡΠΎΡΠΎ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ @dict Π² Π΄ΡΡΠ³ΠΈΡ
ΠΌΠ΅ΡΡΠ°Ρ
, ΠΈ ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
@awerlang Π½Π΅Ρ, @dict - ΡΡΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π² ΡΡΠΈΠ»Π΅ jsdoc, Π° Π½Π΅ Π½Π°ΡΡΠΎΡΡΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ @Input. ΠΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
@nosachamos Π½Π°Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ - ΡΡΠΎ Π²Π²ΠΎΠ΄ https://github.com/angular/tsickle/blob/master/test_files/jsdoc/jsdoc.ts, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΠΉ ΡΡΠΎΡ Π²ΡΠ²ΠΎΠ΄
https://github.com/angular/tsickle/blob/master/test_files/jsdoc/jsdoc.js
Π³Π΄Π΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΠΎΠΆΠ΅Ρ, Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°.
@evmar ΠΎ, Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡ Ρ ngc ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ
"target": "es6",
"module": "es2015",
Π° ΡΠ°ΠΊΠΆΠ΅
"angularCompilerOptions": {
"skipMetadataEmit": true,
"annotationsAs": "static fields",
"annotateForClosureCompiler": true
},
Π’Π°ΠΊ ΡΡΠΎ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ ES6, Π±Π΅Π· goog.modules ... ΡΠ°ΠΊ ΡΡΠΎ Π²ΡΠΎΠ΄Π΅ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π·Π°Π΄ΡΠΌΠ°Π½ΠΎ, ΠΈ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π°ΠΊΡΡΡΠΈΡ. ΠΡΠΎ Π΄Π»Ρ RxJ. ΠΠ»Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ angular (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ Ρ. Π.), skipMetadataEmit
ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² false
.
@nosachamos, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, tsickle step Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΡΠ΅Π· ngc
, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ "module": "common"
. Tsickle ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π»ΠΈ ΠΎΠ½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ es2015 ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΡΠ΅Π· ngc
? ΠΡ Π²ΠΈΠ΄ΠΈΡΠ΅ JSDoc, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ tsickle, Π² Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΌΠΎΠ΄ΡΠ»Ρ es2015?
@kylecordes Π΄Π°, Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΡΡΠΎ ΠΈ Π² Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π²ΡΡΠ΅, ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ tsc-wrapped ΠΈ rxjs-tsickle tsconfig.
ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π΄ΡΡΠ³ΠΎΠΉ Π²ΡΠΏΡΡΠΊ? ΠΎΠ½ Π½Π΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
@alexeagle Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ. Π‘Π½Π°ΡΠ°Π»Π° Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ» Π·Π΄Π΅ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄ΡΠΌΠ°Π», ΡΡΠΎ ΡΡΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ (ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ rxjs ΠΎΠ±ΡΡΠ²Π»ΡΠ» Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ "this", ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΡΠ»ΠΈΡΡ). ΠΠΎΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠ΅Π³ΠΎ, Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡ, ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π²ΡΠΏΡΡΠΊ.
@nosachamos ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ... Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ tsickle-via-ngc ΠΈΠ»ΠΈ -cli-wrapped Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ module:es2015
.
@alexeagle Π, ΠΎΠΉ. ΠΡΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ 90 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Ρ Π½Π΅ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ.
ΠΡΠ΅ ΡΠ°Π· Π²Π·Π³Π»ΡΠ½ΡΠ» Π½Π° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ. ΠΠ°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π΅ΡΡΡ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
Closure Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π»Π΅Π³ΠΊΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ·-Π·Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠ΄Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ Π½ΡΠΆΠ΅Π½.
ΠΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ POC Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ @alexeagle , Ρ Π²ΡΠ±ΡΠ°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·Π»ΠΈΡΠ½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ΄Π΅Π»Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅, ΡΡΠΎΠ±Ρ Π²ΡΡΠ΅ΡΠ½ΠΈΡΡ ΠΈΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ°.
ΠΠΎΡ ΠΎΠΆΠ΅, Π·Π΄Π΅ΡΡ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ²:
ΠΠ»Π°ΡΡ ΡΠ»ΡΠΆΠ±Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ»ΡΠΆΠ±Π° Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ββΠ² ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° ΠΏΠΎ ΠΏΡΡΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ Π²ΠΊΠ»ΡΡΠΈΡ Π΅Π΅ Π² ΠΏΠ°ΠΊΠ΅Ρ. ΠΡΠΈΠΌΠ΅ΡΡ: AnimationDriver
ΠΈ AnimationQueue
. Π£Π΄Π°Π»ΠΈΠ² ΡΡΡΠ»ΠΊΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² Π½Π° ΡΡΠΈ ΠΊΠ»Π°ΡΡΡ, Ρ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠΈ ΠΊΠ»Π°ΡΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Alex Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² QueryList, Π½ΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Query, Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Closure Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ switch, Π³Π΄Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π².
ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° createViewNodes
Π² core.js ΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ NodeType.Query
.
case NodeType.Query:
nodeData = (createQuery());
break;
Π£ΡΠ»ΠΎΠ²ΠΈΡ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Closure Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΡ Π²ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Π΅. Π― ΡΠ΄Π°Π»ΠΈΠ» ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ ΠΊΠΎΠ΄ Π±ΡΠ» ΠΈΡΠΊΠ»ΡΡΠ΅Π½ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ°.
ΠΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄Π²Π° ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ ΠΈΠ΄ΡΠΈ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΡΡΠΈ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠΌΡ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°. Π― Π½Π΅ ΠΎΡΠ΅Π½Ρ Π΄Π°Π»Π΅ΠΊΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΠ»ΡΡ Ρ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ, Π½ΠΎ Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ΄Π°Π»ΠΈΠ» ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 1 ΠΠ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π² 4-5 ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ»ΡΡΠ°Π΅Π².
Π― ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅Π» Π²ΡΠΎΡΠΎΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΡΡΠ½ΡΡ ΡΠ΄Π°Π»ΠΈΠ» ΠΊΡΡΡ ΠΊΠΎΠ΄Π° (Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Closure). Π― ΠΎΠΏΡΡΡΠΈΠ» ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ 16,6 ΠΠ, ΠΈ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π΅ΡΠ΅ Π΅ΡΡΡ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ. ΠΠΎΡ ΠΎΠ±ΡΠ°Π·Π΅Ρ: http://www.syntaxsuccess.com/viewarticle/minimal-angular-application . ΠΡΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌ Π²Π·Π»ΠΎΠΌΠΎΠΌ, Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΎΠ½ Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Angular Ρ ΠΎΡΠ΅Π½Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΏΠΎΠ΄ΡΠΌΠ°Π», ΡΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠ°ΡΡΠΈΡΠΈΡΡ AoT Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ Π²ΡΠ»ΡΡ
, Π½ΠΎ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ngc Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΠΊ createViewNodes
ΠΈΡΡ
ΠΎΠ΄Ρ ΠΈΠ· ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π½ΡΠΆΠ½Ρ Pipes, QueryList ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅, ΡΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ case Π±ΡΠ΄ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Ρ ΠΈΠ· ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΡΠ»ΠΈ?
ΠΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ Ρ ΡΠ·Π½Π°Π» ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ Π²ΡΡΡΠ½ΡΡ, Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ» Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌ Π² Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ Π²ΠΈΠ»ΠΊΠ΅.
Π― ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» ΡΠ²ΠΈΠΊΠΈ Π² Π²Π΅ΡΠΊΡ Π½Π° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ: https://github.com/thelgevold/closure-compiler-angular-bundling-old/tree/tweaking-src
ΠΠΎΡ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ: https://github.com/thelgevold/closure-compiler-angular-bundling-old/commit/d1b3954e7e8a5b2dbb193683f9a3057322870d60
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ, ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π° ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Angular 4.0.0 Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°.
ΠΠΎΡ ΡΠΈΡΡΡ Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ°ΠΌΠΈ:
ΠΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ~ 15 ΠΠ Π² ΡΠΆΠ°ΡΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ brotli.
++ ls -alH dist/bundle.js dist/bundle.js.brotli dist/bundle.js.gz dist/bundle.js.map
-rw-r--r-- 1 tor staff 47487 Mar 26 13:58 dist/bundle.js
-rw-r--r-- 1 tor staff 13979 Mar 26 13:58 dist/bundle.js.brotli
-rw-r--r-- 1 tor staff 15482 Mar 26 13:58 dist/bundle.js.gz
-rw-r--r-- 1 tor staff 133888 Mar 26 13:58 dist/bundle.js.map
++ for script in dist/bundle.js node_modules/zone.js/dist/zone.min.js
++ gzip --keep -f node_modules/zone.js/dist/zone.min.js
++ bro --force --quality 10 --input node_modules/zone.js/dist/zone.min.js --output node_modules/zone.js/dist/zone.min.js.brotli
++ ls -alH node_modules/zone.js/dist/zone.min.js node_modules/zone.js/dist/zone.min.js.brotli node_modules/zone.js/dist/zone.min.js.gz
-rw-r--r-- 1 tor staff 29634 Mar 25 11:00 node_modules/zone.js/dist/zone.min.js
-rw------- 1 tor staff 8759 Mar 26 13:58 node_modules/zone.js/dist/zone.min.js.brotli
-rw-r--r-- 1 tor staff 9516 Mar 25 11:00 node_modules/zone.js/dist/zone.min.js.gz
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π±Π΅Π· ΡΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Angular, Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ΅ ΡΠ²Π΅ΡΠ΅Π½, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ ΡΡΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π·Π°Π±Π°Π²Π½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ :-)
Π ΠΈΡΠΎΠ³Π΅:
ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠ· ΡΡΡΡΠΊΡΡΡ switch / if-else. ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΡΠ³ΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ - ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ², Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ.
ΠΠ°ΠΊ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΠΈΠ· ΡΠ°Π±ΠΎΡΡ @thelgevold , Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΡΠ²ΠΎΠ΄Π° Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ»ΠΈ ΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ Π΄Π»Ρ Angular:
ΠΠ½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄ΡΠΌΠ°Π΅Ρ ΠΎΠ± ΡΡΠΎΠΌ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ ΡΡΠΎ ΠΎΡ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎ ΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈ Π΅ΡΡΡ Π»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΉΡΠΈ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΡΡΠΈ.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΡΠΏΡΡΠΊ rxjs, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π·Π°ΠΊΡΡΡΠΈΡ, ΠΈ Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
https://github.com/alexeagle/closure-compiler-angular-bundling
ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΈΡΠ΅Π½Ρ - Angular ΠΈ Zone.js ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π² ΡΠ²ΠΎΠΈΡ
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ
.
ΠΡΠΊΠΎΡΠ΅ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΡΠΎ ΡΡΡΡΠ°Π½Π΅Π½ΠΎ, Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΎ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ?
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ββΠΎΠΏΡΠΈΡ Π² @ ngtools / webpack Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π²ΡΠ²ΠΎΠ΄Π° AOT ΡΠ΅ΡΠ΅Π· Closure (ΠΈ / ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°Π³ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ webpack-closure-compiler)? ΠΠ»ΠΈ ΡΡΠΎ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ?
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ngx-bootstrap
Ρ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ?
Π₯ΠΎΡΠ΅Π» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅:
Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ Π±Π΅ΡΠ°-ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Lucidchart, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΡ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°ΡΡ Π²Π΅ΡΡΠΈΡ Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΈ Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΡΠΉΠ΄Π΅Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π·Π°Π²ΡΡΠ°.
ΠΠ΅ΡΡΠΈΡ Angular, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°, Π±ΡΠ»Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ββΠ΄ΠΎ RC5 (HEAD ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° Π²ΡΠΎΡΠ½ΠΈΠΊ, 16 Π°Π²Π³ΡΡΡΠ°).
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Docker Π±ΡΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ Π½Π° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π·Π°Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ. ΠΠΎΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ https://github.com/lucidsoftware/closure-typescript-example
Π Π°Π·ΠΌΠ΅ΡΡ ΡΠ²ΡΠ·ΠΊΠΈ
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, ΡΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅. ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΏΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠΎΠ΄, ΠΈΠ΄ΡΡΠΈΠΉ ΠΎΡ js -> ts Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ clutz, Π° Π·Π°ΡΠ΅ΠΌ ts -> js Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ tsickle. ΠΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Hello World.
Uncompressed: 112K Brotli quality 10: 29K Gzip: 34K
ΠΠ°ΠΌΠ΅ΡΠΊΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ
ΠΠΎΡ Π·Π°ΠΌΠ΅ΡΠΊΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Ρ ΡΡΠΎ-ΡΠΎ Π·Π°Π±ΡΠ», Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π²ΡΠ΅ Π½Π°ΡΠΈ ΡΠΎΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ Π²ΡΠ΅ Π½Π°ΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΏΠΎ
Π€Π°ΠΉΠ»Ρ Externs Π΄Π»Ρ Zone, Reflect ΠΈ Jasmine Π±ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΈ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ.
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Closure, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ΡΡΡΡΡΡ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ Π°ΠΊΠ΅ΡΡΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° sed, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Angular js, Π·Π°ΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ static, ΡΡΡΠΎΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΠ΅Ρ / ** @nocollapse * / . ΠΠΎΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΡΠΈΠ±ΠΊΡ Π·Π°ΠΊΡΡΡΠΈΡ: google / closure-compiler # 1776
Π£Π³Π»ΠΎΠ²ΠΎΠΉ
Π‘Π°ΠΌΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ Π²Π½Π΅ΡΠ»ΠΈ Π² Angular, - ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Tsickle Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡ Π΄ΡΠΌΠ°Π»ΠΈ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ Π² ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π·, Π½ΠΎ Ρ Π½Π°Ρ Π±ΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π»ΡΡ: D
ΠΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡ, Π³Π΄Π΅ Angular Π½Π°Π·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΠ΅ΡΠ½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠ΄Π½ΠΈ ΡΡΡΠ»ΠΊΠΈ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ, Π° Π΄ΡΡΠ³ΠΈΠ΅ Π½Π΅Ρ. ΠΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Angular, ΡΡΠΎΠ±Ρ Π²Π΅Π·Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠ΅ΡΠ½ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π»ΠΈΡΡ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ Angular / Tsickle, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ .d.ts.
ΠΡ Π·Π°ΡΡΠ°Π²ΠΈΠ»ΠΈ Angular Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ES6, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π½Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ .apply ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ new.
Π¦ΠΈΠΊΠ»Π΅
ΠΡ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² tsickle, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡΡΠ°Π» Π²ΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ TypeScript Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ².
Π‘ΡΡΠ»ΠΊΠΈ Π½Π° Π²ΡΠ΅ Π½Π°ΡΠΈ ΡΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΡΠΎΠ±Ρ ΡΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΠ°Π±ΠΎΡΠ°Π»Π°
Π£Π³Π»ΠΎΠ²ΠΎΠΉ: https://github.com/lucidsoftware/angular/tree/closure-bundle
Π¦ΠΈΠΊΠ»Π΅: https://github.com/lucidsoftware/tsickle/tree/closure-bundle
RxJS: https://github.com/lucidsoftware/rxjs/tree/closure-hack
Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»: https://github.com/lucidsoftware/symbol-observable/tree/closure
Clutz: https://github.com/lucidsoftware/clutz
ΠΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π»ΠΈ ΡΠ°Π±ΠΎΡΡ @alexeagle ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΡΡ Π²Π΅ΡΡΠΈΡ Angular. ΠΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅, ΠΎΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π½Π° https://github.com/lucidsoftware/closure-typescript-example. ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ Π·Π°ΠΏΡΡΠΊΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² README Π΄Π»Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Docker, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΠΎΠΉ ΠΆΠ΅Π»Π°ΡΡΠΈΠΉ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Angular 2, clutz ΠΈ tsickle. Closure JS ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Angular 2 TS, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π² JS, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ Closure.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²Π½Π΅ΡΠ»ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ ΠΠ»Π΅ΠΊΡΠ°. ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Ρ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠΉ ΠΆΠ΅. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ngc ΠΈΠ»ΠΈ tsickle Π² Angular 2 ΠΈ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Ρ Closure.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΊΡΡΡΠΈΡ
Π‘ΡΡΠΎΠΈΡΡ ΠΈΠ· Π³ΠΎΠ»ΠΎΠ²Ρ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ· Π²Π΅ΡΡΠΈΠΉ Ρ ΠΈΡΠ½Ρ ΠΈΠ»ΠΈ ΠΈΡΠ»Ρ.
Π£Π³Π»ΠΎΠ²ΠΎΠΉ
https://github.com/lucidsoftware/angular/tree/closure-bundle
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Angular 2 Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ngc Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ js Π² Closure ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π³ΠΎΠ² tsickle Π² tsc-wrapped. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ΅ΠΌΠΎΠ², ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° TypeScript Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡΠΎΡ ΠΎΠ΄ΠΎΠ² tsickle. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Angular, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² JS, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ Closure, ΠΏΠΎΠΌΠ΅ΡΠ°Ρ Π±Π»ΠΎΠΊ
angularCompilerOptions
Π² tsconfig.json, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ"angularCompilerOptions": { "googleClosureOutput": true }
ΠΠ°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅
build.sh
ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.Π€Π°ΠΉΠ» ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ selenium-webdriver, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ selenium-webdriver ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΈ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΈ Π΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌ Ρ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ.
RxJS
https://github.com/lucidsoftware/rxjs/tree/closure-hack
ΠΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ RxJS ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Makefile ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² JS, Π° Π΄ΡΡΠ³Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° - Π² Make. ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠ΅Π»ΠΈ ΡΠ±ΠΎΡΠΊΠΈ, - ΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π»ΠΊΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΡΠ°Π²ΡΡ RxJS ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ TypeScript ΠΈ Closure.
ΡΠΈΠΌΠ²ΠΎΠ»-Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡΠΉ (Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ RxJS)
https://github.com/lucidsoftware/symbol-observable/tree/closure
RxJS ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π½ΡΡΠ΅ Π±ΡΠ» ΡΠ°ΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° RxJS, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ. ΠΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ (ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ JS), ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Closure. Π€Π°ΠΉΠ»ΠΎΠ² Π²ΡΠ΅Π³ΠΎ Π΄Π²Π°, ΡΠ°ΠΊ ΡΡΠΎ Ρ ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ Π²ΡΡΡΠ½ΡΡ.
ΡΠ΅ΡΠΏ
https://github.com/lucidsoftware/tsickle/tree/ignore-type-comments
ΠΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ Tsickle Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ --ignoreTypesInComments. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ tsickle ΠΏΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ jsdoc Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ . ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ RxJS, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΊΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² jsdoc.
- ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅
pathToModuleName
ΡΡΠΎΠ±Ρ CLI Π±ΡΠ» ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊpathToModuleName
ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² ngc. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±ΡΠ΄ΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΡΠ΅Π· tsickle ΠΈΠ»ΠΈ ngc. ΠΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π² Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠ΅ΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΈΠΉpathToModuleName
ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°Π΅Ρ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΈΠΌΠ΅Π½Π° goog.module.
ΠΏΡΠΈΠ²Π΅Ρ, Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ, Π½ΠΎ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ "make run" ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°:
'tools/@angular/tsc-wrapped/src/compiler_host.ts (55,32): ΠΎΡΠΈΠ±ΠΊΠ° TS2345: Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° ts.Program Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ° ts.Program'. '
ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΌΠ½Π΅?
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π° ΠΈΠ·-Π·Π° Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Π‘ΠΎΠΎΠ±ΡΠΈΡΠ΅ ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΠΈΠ»ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
Π£Π·Π½Π°ΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Π½Π°ΡΠ΅ΠΉ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠΎΠ² .
_ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π±ΡΠ»ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΠΎΡΠΎΠΌ. _
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΡΠΏΡΡΠΊ rxjs, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π·Π°ΠΊΡΡΡΠΈΡ, ΠΈ Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
https://github.com/alexeagle/closure-compiler-angular-bundling
ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΈΡΠ΅Π½Ρ - Angular ΠΈ Zone.js ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π² ΡΠ²ΠΎΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ .
ΠΡΠΊΠΎΡΠ΅ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅.