Angular: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Closure Compiler с Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΌ компилятором шаблонов

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 9 мая 2016  Β·  105ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: angular/angular

Новый Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ компилятор Angular Π±Ρ‹Π» продСмонстрирован @robwormald Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ng-conf, дСнь 2. Он Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ES6. Π—Π°Ρ‚Π΅ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ шага:

  • запуститС tree-shaker, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ES6, нСдоступныС ΠΈΠ· Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°, Π² нашСй дСмонстрации ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ свСртку
  • запуститС сборщик, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄ΠΎ объявлСний Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅; ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ system.js
  • Π½ΠΈΠΆΠ΅ уровня ES5 - ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TypeScript
  • minify, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° символов, ΠΌΡ‹ использовали uglify.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получился JS-Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 49 ΠšΠ‘, Π½ΠΎ ΠΎΠ½ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большой настройки.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Google Closure (https://developers.google.com/closure/compiler/) создаСт ΠΎΡ‡Π΅Π½ΡŒ малСнький JS. Он выполняСт всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ шага, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… Π²Ρ‹ΡˆΠ΅, поэтому конфигурация Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ мСньший Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° для ng2-hello-world, ΠΎΠΊΠΎΠ»ΠΎ 36 ΠšΠ‘.

Для этого трСбуСтся:

  • [x] Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ закрытия tsickle Π² `ngc
  • [x] ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ дистрибутив Angular ES6, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» совмСстим с Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ компилятором.
  • [Икс] ?? ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ дистрибутив ES6 Π½Π°ΡˆΠΈΡ… зависимостСй (rxjs, zone.js), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» совмСстим с компилятором замыкания
  • [x] ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ сборку (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, сцСнарий ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ), которая ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ вмСстС с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ ΠΈ Π΅Π³ΠΎ зависимостями.
  • [x] Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΌΡ‹ это сдСлали, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΈ воспроизвСсти
  • [x] ΡΠ²ΡΠ·Π°Ρ‚ΡŒ externs с Angular, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ тСстированиС транспортира (Ρ‚ΠΈΠΏ BrowserNodeGlobal )
packaging feature medium

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

БСгодня Ρƒ нас Π΅ΡΡ‚ΡŒ выпуск rxjs, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с компилятором закрытия, ΠΈ я ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².
https://github.com/alexeagle/closure-compiler-angular-bundling

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡ΠΈΡ‰Π΅Π½Ρ‹ - Angular ΠΈ Zone.js Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ внСшниС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² своих ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ….
ВскорС ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ объявлСниС ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅.

ВсС 105 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ большС всСго Π½ΡƒΠΆΠ½ΠΎ вашС руководство, это Ρ‚ΠΎ, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ это вписываСтся Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ процСсс сборки 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 отсутствуСт, ΠΈ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ совмСстимым с Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ.

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 двумя способами:

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --ignoreTypesInComments. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ появлСниС ошибки tsickle ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ jsdoc Π² коммСнтариях. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для компиляции RxJS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΡƒΡ‡Ρƒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² jsdoc.
  2. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ 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, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π½Π΅ страдаСт ΠΎΡ‚ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

https://github.com/google/closure-compiler-js/issues/23

Π― Ρ‚ΠΎΠΆΠ΅ это ΡΠ»Ρ‹ΡˆΠ°Π». Нам ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡƒΠ·Π΅Π» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
--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, поэтому ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (Ссли Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚), Ссли ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π΅ Π² этом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ быстрыС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходят Π½Π° ΡƒΠΌ

  • Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ URL. ΠœΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ рСсурсы Π² машинописном тСкстС (ΠΈΠ»ΠΈ html) ΠΊΠ°ΠΊ require('./asset.png') ΠΈ просто выполняя это, Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, сТатиС ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.
  • автоматичСскоС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с использованиСм Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° angular2, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ этому ) ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ System.import Π²ΠΎ всСм вашСм ΠΊΠΎΠ΄Π΅ для Π»Π΅Π³ΠΊΠΎΠΉ Π»Π΅Π½ΠΈΠ²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ любого ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°
  • Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° для ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° angular2, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π² настоящСС врСмя ΠΈΠΌΠ΅Π΅Ρ‚ ссылки Π½Π° ΠΎΠΊΠ½Π° для поиска ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠ² машинописного тСкста, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ __extends поэтому ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ это Π½Π° global ( ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ). Π”Π°ΠΆΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ элСгантно (ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ хакСрски) с webpack, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΡˆΡƒ сборку Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для
  • Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ»Π°Π³ΠΈΠ½ html Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ наш Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ index.html послС запуска ΠΏΠΎΠ»Π½ΠΎΠΉ сборки / ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ этом ΠΎΠ½ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ javascript Π±Ρ‹Π»ΠΈ созданы (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡ… ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΈ Ρ…ΡΡˆΠΈ) ΠΈ создаСт наш ΠΊΠΎΡ€Π΅Π½ΡŒ html шаблон с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ URL-адрСсами скриптов с Ρ…Π΅ΡˆΠ°ΠΌΠΈ ΠΈ Ρ‚. Π΄. соотвСтствСнно

чСстно говоря, я Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π» Ρ‚ΠΎΡ‚ ΠΆΠ΅ (ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ) ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· с Ρ‡Π΅ΠΌ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, начиная с 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 ΠΈΡ… слСдуСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° мСстС. ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ, я позволю Вобиасу ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ...

ΠΎΠ΄Π½ΠΎ Π΄Π΅Π»ΠΎ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ сгСнСрированныС Ρ„Π°ΠΉΠ»Ρ‹ .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 ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π° наш Ρ€Π°Π΄Π°Ρ€, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π΅!

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ закрытия, это Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ использованиС Π±ΡƒΠ΄Π΅Ρ‚

  • Closure скомпилируйтС ваш ΠΊΠΎΠ΄, Angular ΠΈ Π΅Π³ΠΎ зависимости (особСнно rxjs) Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
  • ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ externs закрытия для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с / ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° закрытия
  • Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΡ… ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π½Ρ‹ΠΉ js-дистрибутив Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ‚Π΅Π³Π΅ скрипта.

Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈ Π² 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 . МоС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

  • ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ свою Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ копию источника RxJS, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ имя этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ исправлСниС. Если Ρ‚Π°ΠΊ, Ρ‚ΠΎ ...
  • Π—Π°Π΄Π°ΠΉΡ‚Π΅ вопрос (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ PR) RxJS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ этот this ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ this . НадСюсь, ΠΊΠΎΠΌΠ°Π½Π΄Π° RxJS ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ достоинства Ρ‚Π°ΠΊΠΎΠ³ΠΎ измСнСния; Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ±Ρ€ΠΎΠ΅ слово ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Angular ( @alexeagle ?) По Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.
  • ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с простым ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ случаСм для Closure, ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ 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:

  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ мСньшС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ if ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ исходный ΠΊΠΎΠ΄.
  • Π‘Π½ΠΎΠ²Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ настроСнный доступ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ количСству этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ встроСнных массивах поставщиков.
  • НастройтС компилятор (Π²Π»ΠΈΡΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΊ Π½Π° JIT, Ρ‚Π°ΠΊ ΠΈ Π½Π° AOT), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ ΠΊΠΎΠ΄Π° для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ / поставщиков Π² сгСнСрированный ΠΊΠΎΠ΄ ... Ссли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

МнС интСрСсно, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· основной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚ ΠΎΠ± этом, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ это ΠΎΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΎ ΡƒΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ Π»ΠΈ интСрСс Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΉΡ‚ΠΈ ΠΏΠΎ этому ΠΏΡƒΡ‚ΠΈ.

БСгодня Ρƒ нас Π΅ΡΡ‚ΡŒ выпуск rxjs, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с компилятором закрытия, ΠΈ я ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².
https://github.com/alexeagle/closure-compiler-angular-bundling

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡ΠΈΡ‰Π΅Π½Ρ‹ - Angular ΠΈ Zone.js Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ внСшниС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² своих ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ….
ВскорС ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ объявлСниС ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° всС это устранСно, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρƒ вас Π΅ΡΡ‚ΡŒ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ это Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ с ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ инструмСнтария?

Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​опция Π² @ ngtools / webpack для автоматичСского запуска Π²Ρ‹Π²ΠΎΠ΄Π° AOT Ρ‡Π΅Ρ€Π΅Π· Closure (ΠΈ / ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ шаги ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для webpack-closure-compiler)? Или это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ‚?

МоТно Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ngx-bootstrap с Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ?

https://github.com/valor-software/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 двумя способами:

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --ignoreTypesInComments. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ появлСниС ошибки tsickle ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ jsdoc Π² коммСнтариях. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для компиляции RxJS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΡƒΡ‡Ρƒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² jsdoc.
  2. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ 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'. '
НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΌΠ½Π΅?

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° автоматичСски Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈΠ·-Π·Π° бСздСйствия.
Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅, Ссли Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΈΠ»ΠΈ связанной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ нашСй ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ автоматичСской Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΎΠ² .

_Π­Ρ‚ΠΎ дСйствиС Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ автоматичСски Π±ΠΎΡ‚ΠΎΠΌ. _

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

lsim picture lsim  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

andlcool picture andlcool  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

wardbell picture wardbell  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

nosachamos picture nosachamos  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

wangzilong picture wangzilong  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ