Three.js: Π€Π°ΠΉΠ» "externs" компилятора Google Closure для three.js?

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 10 июл. 2011  Β·  61ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: mrdoob/three.js

ΠŸΡ€ΠΈΠ²Π΅Ρ‚

Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ внСшний Ρ„Π°ΠΉΠ» для three.js? Π― имСю Π² Π²ΠΈΠ΄Ρƒ Ρ‚Π°ΠΊΡƒΡŽ:

http://code.google.com/closure/compiler/docs/api-tutorial3.html#externs

Бпасибо
Π Π΅ΠΌΠΎ

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

Π₯ΠΌΠΌΠΌ, я всС Π΅Ρ‰Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ мноТСством ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² ΠΊΠΎΠ΄Π΅. Иногда я задаюсь вопросом, Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Π»ΠΈ Π±Ρ‹Π»ΠΎ Π±Ρ‹ пСрСнСсти всС это Π½Π° Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Ρ€ΠΎΠ΄Π΅ TypeScript (Таль, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Microsoft).

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

НСт, Ρƒ three.js Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй, поэтому Π² Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ Π±Ρ‹Π»ΠΎ нСобходимости.

Π― знаю, Π½ΠΎ для собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ THREE.js Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ срСду.

Как Π±Ρ‹ выглядСл Ρ‚Π°ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»? Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, Ссли это ΡƒΠΆΠ΅ объяснСно ΠΏΠΎ ссылкС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ подСлились, я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ страница Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π° (слишком ΠΌΠ½ΠΎΠ³ΠΎ тСкста), ΠΈ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ / ΠΏΠΎΠ½ΡΡ‚ΡŒ.

@mrdoob , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎ адрСсу:

http://code.google.com/p/closure-compiler/source/browse/#svn% 2Ftrunk% 2Fexterns

ΠΈΠ»ΠΈ

http://code.google.com/p/closure-compiler/source/browse/#svn% 2Ftrunk% 2Fcontrib% 2Fexterns

Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

http://code.google.com/closure/compiler/docs/js-for-compiler.html

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ / Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ? Π― Π΄ΡƒΠΌΠ°ΡŽ, это Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ...

Π”Π°, Π½ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для этого внСшнСго Ρ„Π°ΠΉΠ»Π°, Π° Π½Π΅ для всСго ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½ΠΎ Π² этом Π½Π΅Ρ‚ нСобходимости.

Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» это с http://www.dotnetwise.com/Code/Externs/index.html . Но ΠΎΠ½ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ с Three.js. НС всС опрСдСлСния ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹.

Π’ΠΎΡ‚ запись Π² Π±Π»ΠΎΠ³Π΅:

http://blog.dotnetwise.com/2009/11/closure-compiler-externs-extractor.html

ΠŸΠΎΡ…ΠΎΠΆΠ΅, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ шаблон this.method = function(){} , Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ ...

@mrdoob , ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ THREE.js Π² собствСнноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ компилятора закрытия? ΠŸΡ€Π°Π²Π΄Π° Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π² настоящСС врСмя это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ?

Насколько я понимаю, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ классы, Π²Π΅Ρ€Π½ΠΎ? По ΠΈΠ΄Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ... Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

Π― Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ three.js, Π½ΠΎ я помню, Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ использовались для Π²Π·Π»ΠΎΠΌΠ° ΠΊΠΎΠ΄Π°. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, это Π±Ρ‹Π»ΠΎ нСбСзопасно - с простой ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½Π° всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° - Π½Π΅Ρ‚.

Он Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠ΄, Ссли Π²Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (с Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ) ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π²Π΅Ρ€Π½ΠΎ?

@mrdoob, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ со скомпилированным (ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ) ΠΊΠΎΠ΄ΠΎΠΌ, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Β«externsΒ» -Ρ„Π°ΠΉΠ» для объявлСния всСх классов ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘Π΅Π· Π½Π΅Π³ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Π΅ΡΡ‚ΡŒ Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с three.js? МнС это Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ (ΡΠΊΡ€Ρ‹Ρ‚ΡŒ) ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ three.js. Один ΠΈΠ· ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ²: https://github.com/mishoo/UglifyJS . Но я Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π».

Google closure externs - это Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт Ρ†Π΅Π»Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² нашСм скомпилированном ΠΊΠΎΠ΄Π΅.
Π‘Π΅Π· этого Ρ„Π°ΠΉΠ»Π° компилятор просто Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ· ΠΈΠΌΠ΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ a () ΠΈΠ»ΠΈ b ().

НапримСр, это для JQuery: http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/jquery-1.7.js

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли externs Π±ΡƒΠ΄Π΅Ρ‚ для three.js.

МнС это нравится, Π½ΠΎ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этим сам. ΠšΠΎΠΌΡƒ-Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ ΠΊ этому вопросу.

@yurikor , ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ node.js, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ node-browserify ΠΈ uglify-js вмСстС. Π’ΠΎΠ³Π΄Π° Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

@remoe Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо Π·Π° совСт. Π― ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π΅ использовалась, Π½ΠΎ Π½Π° случай, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π²ΠΎΡ‚ нСкоторая Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация:

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор закрытия Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π» ΠΌΠΎΠΈ символы общСдоступного интСрфСйса, ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько строк ΠΊΠΎΠ΄Π° (эти Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ СдинствСнными общСдоступными функциями ΠΌΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ компилятор замыкания ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ всС свойства, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· blah.xyz , Π½ΠΎ Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ свойства, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· blah["xyz"] .

НаконСц, строка window['ColladaLoader2'] = ColladaLoader2 (Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС строки) Π±Ρ‹Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ компилятору замыкания, Ρ‡Ρ‚ΠΎ этот класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ экспортирован Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости.

Но Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ для производства, Π° просто провСряСтС ошибки? я
Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, стоит Π»ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ внСшний Ρ„Π°ΠΉΠ». ΠŸΡ€ΠΎΡΡ‚ΠΎ запуститС Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅
Π±Π΅Π· агрСссивных ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ понадобится внСшний Ρ„Π°ΠΉΠ»
Π½ΠΎ Π²Ρ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ подтвСрТдСния, я полагаю, ΠΈΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, всС
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°. ΠœΠΎΠΆΠ΅Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ?

ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ с Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ.
12 фСвраля 2013 Π³. Π² 5:19 Β«Π ΠΎΠ±Π΅Ρ€Ρ‚ ΠšΠ°Ρ€Π½Π΅ΠΊΠΈΒ» [email protected] написал:

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Π°, Π½ΠΎ Π½Π° случай, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚
Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π²ΠΎΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация:

Для своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° я создал простой Ρ„Π°ΠΉΠ» https://github.com/crobi/ColladaAnimationCompress/blob/master/threejs-exports.js с достаточным объСмом экспорта threejs, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я ΠΌΠΎΠ³ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚
с аннотациями Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ вСсьма ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ позволяло Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅
компилятор, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ всС Ρ‚ΠΈΠΏΡ‹ ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°Ρ€Ρƒ ошибок Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅. Ρƒ мСня Π΅ΡΡ‚ΡŒ
создал этот Ρ„Π°ΠΉΠ» Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ компилятор закрытия Π² основном для ошибки
ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, для фактичСского ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΌΠ΅Π½Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ, Π½ΠΎ бСзопасный
uglifyjs https://github.com/mishoo/UglifyJS.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор закрытия Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π» ΠΌΠΎΠΉ общСдоступный интСрфСйс
символов, ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько строк ΠΊΠΎΠ΄Π° . ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
Ρ‡Ρ‚ΠΎ компилятор закрытия ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ всС свойства, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· blah.xyz,
Π½ΠΎ Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ свойства, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· blah ["xyz"].

НаконСц, строка https://github.com/crobi/ColladaAnimationCompress/blob/366344d3aa5dbbc0a53c47a2c1759b86bb1e0fcd/ColladaLoader2.coffee#L3383 window ['ColladaLoader2']
= ColladaLoader2 (Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС строки) Π±Ρ‹Π» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ
компилятор закрытия, Ρ‡Ρ‚ΠΎ этот класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ экспортирован Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости.

-
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ просмотритС Π΅Π³ΠΎ Π½Π° Gi tHubhttps: //github.com/mrdoob/three.js/issues/341#issuecomment -13426131.

Насколько ΠΌΠ½Π΅ извСстно, простой Ρ€Π΅ΠΆΠΈΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ выполняСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Он ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ, Ссли встрСчаСт нСизвСстный символ, оставляСт Π΅Π³ΠΎ Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌ, прСдполагая, Ρ‡Ρ‚ΠΎ это глобальная пСрСмСнная.

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ компилятор Π½Π° строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ информация ΠΎ Ρ‚ΠΈΠΏΠ΅ доступна): ΠΎΠ½ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚ ΠΎ нСизвСстных функциях ΠΈΠ»ΠΈ свойствах, ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚, Ссли Π²Ρ‹ Π²Ρ‹Π·Π²Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Ссли Π²Ρ‹ использовали строковый ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π³Π΄Π΅ число Π±Ρ‹Π»ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌ.

НапримСр, простой Ρ€Π΅ΠΆΠΈΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄

function fn() {
    var foo = {}; // local variable, safe to rename this
    foo.bar();    // undefined property, will crash here
}
fn();

Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π²

function fn(){({}).bar()}fn();

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΈΠ· строя Π½Π° ({}).bar() . Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄

({}).a(); // fn() inlined, private member 'bar' renamed to 'a'

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚, Π½ΠΎ компилятор Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅

Property bar never defined on foo at line 3 character 0.
  • ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ошибок ΠΎΡ‚Π½ΠΎΡΠΈΠ»ΠΎΡΡŒ ΠΊ Ρ‚ΠΈΠΏΡƒ ошибок, ΠΊΠΎΠ³Π΄Π° Ρƒ мСня Π±Ρ‹Π»Π° ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° я ΠΏΠ΅Ρ€Π΅Π΄Π°Π» ΠΎΠ΄ΠΈΠ½ THREE.Vector3 Π² Matrix4.makeTranslation вмСсто Ρ‚Ρ€Π΅Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² x, y ΠΈ z. .
  • Если Π±Ρ‹ Ρƒ мСня Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ тСстовоС ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ (Ρ‡Π΅Π³ΠΎ Ρƒ мСня Π½Π΅Ρ‚), я Π±Ρ‹ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ нашСл эти ошибки. Однако ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡ… Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ, Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ сразу.
  • Если threejs поставляСт ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» экспорта с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π½ΠΎΠ²Ρ‹ΠΌ выпуском (ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ усилия для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ), компилятор закрытия ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ API (ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Π² случаС с Matrix4.makeTranslation ).
  • Для мСня настройка компилятора закрытия - слишком большая Ρ€Π°Π±ΠΎΡ‚Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для этого Π½ΡƒΠΆΠ½Π° срСда выполнСния java. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для создания ΠΌΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, основаны Π½Π° node / javascript.

Π’ настоящСС врСмя я создаю Ρ„Π°ΠΉΠ» externs.js своСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ закрытия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ THREE.js с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Closure. Π’ основном ΠΌΡ‹ пытаСмся Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:
Π•ΡΡ‚ΡŒ Π»ΠΈ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ список всСх классов THREE.js ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²-ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚? Бписок Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ:

ВРИ ВСкстура
THREE.Texture.constructor
THREE.Texture.clone
ВРИ. ВСкстура. Π£Ρ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
THREE.DataTexture.clone

(ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅...)

Ps- Three.js Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ΅Π½, Π½ΠΎ с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ jsDocs этот список ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ :)

Π£ мСня Π΅ΡΡ‚ΡŒ частичная рСализация three.js экспорта здСсь (написано Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, поэтому ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки).

@crobi : Π·Π°Ρ‡Π΅ΠΌ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ? ΠŸΠΎΡ…ΠΎΠΆΠ΅, это заняло довольно ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ...

@taoeffect : ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² основном относятся ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌΡƒ Ρ€Π΅ΠΆΠΈΠΌΡƒ компилятора закрытия. МнС нравится строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

@crobi , ΠΎ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ приводят ΠΊ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ

Волько Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ компилятор закрытия для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ошибок Ρ‚ΠΈΠΏΠ°. Подобно ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠΌΡƒ тСксту . Оба ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ javascript Π² простой javascript. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²ΠΎ врСмя компиляции.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ закрытия здСсь Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ инструмСнт для автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… externs для любой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ http://www.dotnetwise.com/Code/Externs/

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ three.js Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… для вашСго ΠΊΠΎΠ΄Π°, Π° Π½Π΅ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ внСшнюю Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³

--language_in=ECMASCRIPT5

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ± этом сообщСниС Π² Π±Π»ΠΎΠ³Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, взяв пСрформанс
критичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, запускаСтся Π»ΠΈ ΠΎΠ½ Ρ‡Π΅Ρ€Π΅Π· Google Closure
компилятор с Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
-Π‘Π΅Π½

Π’ ΠΏΠ½, 13 января 2014 Π³., Π² 12:31, Π ΠΎΠ΄Ρ€ΠΈΠ³ΠΎ Π€ΠΎΡ€ΠΌΠΈΠ³ΠΎΠ½ <
[email protected]> написал:

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ three.js Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² свой ΠΊΠΎΠ΄ вмСсто
просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ внСшнюю Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³

--language_in = ECMASCRIPT5

-
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ просмотритС Π΅Π³ΠΎ Π½Π° Gi tHubhttps: //github.com/mrdoob/three.js/issues/341#issuecomment -32191167
.

Π‘ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌΠΈ поТСланиями,
Π‘Π΅Π½ Π₯ΡŒΡŽΡΡ‚ΠΎΠ½
Голосовой: 613-762-4113 Skype: ben.exocortex Twitter: @exocortexcom
http://Clara.io - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ 3D-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ уровня Π½Π° основС WebGL

Π”ΡƒΠΌΠ°ΡŽ, я ΠΌΠΎΠ³ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ пост. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Three.js Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ (с Ρ„Π°ΠΉΠ»ΠΎΠΌ externs ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ), Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π—Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π² написании ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° JavaScript (Π² частности, ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π· ΠΊΠΎΠ΄Π°). ЦСль состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Β«ΠΏΡ€ΠΈΡ€ΡƒΡ‡ΠΈΡ‚ΡŒΒ» JavaScript (написаниС собствСнного JS), Π° Π½Π΅ Β«ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒΒ» Π΅Π³ΠΎ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GWT ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… инструмСнтов). Если Π²Ρ‹ просто ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Three.js ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Closure, компилятор ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΎΡ€Π°Ρ‚ΡŒ Π½Π° вас, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Three.js ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ· Π΅Π³ΠΎ стандартов (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, нСдостаточно JSDoc?). ИспользованиС Ρ„Π»Π°Π³Π° компилятора --language_in Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ прямо сСйчас, хотя Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ нСсколько ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. Если Π²Ρ‹ просто Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой собствСнный JS-ΠΊΠΎΠ΄, Π½ΠΎ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° Three.js ΠΊΠ°ΠΊ Π½Π° внСшнюю Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ (Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, оставляя всю ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Three.js Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΠΎΠΉ ΠΈ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ), Π²Π°ΠΌ понадобится Ρ„Π°ΠΉΠ» externs, упомянутый Π²Ρ‹ΡˆΠ΅. Π‘Π΅Π· Ρ„Π°ΠΉΠ»Π° externs Closure выдаст ошибки компиляции, говоря, Ρ‡Ρ‚ΠΎ THREE. * НигдС Π½Π΅ объявлСно ΠΈ Ρ‚. Π”.

Π₯отя я Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сообщСниС Π² Π±Π»ΠΎΠ³Π΅, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰Π΅Π΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Three.js Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Closure, Π²ΠΎΡ‚ Π»ΡƒΡ‡ΡˆΠ°Ρ вводная прСзСнтация ΠΎΠ± инструмСнтах Google Closure, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π²ΠΈΠ΄Π΅Π»: (Из Google I / O 2011) https://www.youtube.com/watch?v=M3uWx-fhjUc (я знаю, Ρ‡Ρ‚ΠΎ это Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, Π½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ²Π° Ρ†Π΅Π»ΡŒ компилятора ΠΈ Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ компиляции. Он Ρ‚Π°ΠΊΠΆΠ΅ описываСт Π·Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ„Π°ΠΉΠ» externs).

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, я с Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρƒ возмоТности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния с использованиСм three.js ΠΈ поэтому ТСлаю ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠΏΡ†ΠΈΠΈ ADVANCED_OPTIMIZATIONS.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для встраивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Three.js.

Π’ настоящСС врСмя для three.js трСбуСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠ΅ использованиС ограничиваСтся Ρ„Ρ€Π°Π·ΠΎΠΉ «ВрСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ three.min.js!Β». Π­Ρ‚ΠΎΡ‚ классичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π½ΠΎ для ΠΊΠΎΠ΄Π°, написанного с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ JavaScript ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ΄. size Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° счСт сокращСния ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (нСэффСктивно для ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…), удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² (эффСктивно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² с отступом, табуляции ΠΈ Ρ€Π°Π·Ρ€Ρ‹Π²ΠΎΠ² строк) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π΅ΡˆΠ΅Π²Ρ‹Ρ… ΡƒΠ»ΠΎΠ²ΠΎΠΊ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ADVANCED_OPTIMIZATIONS Π² ΠΊΠΎΠ΄Π΅ Β«Closure compiler styleΒ», ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Β«Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² основном ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π’Π°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°ΠΊ Closure library, стали большими, Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ это Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π° Π½Π° этапС компиляции.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ three.js ΡƒΠΆΠ΅ написан Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ стилС, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ (тСхничСски) нСслоТно ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ вСсь ΠΊΠΎΠ΄ Π΄ΠΎ ΠΊΠΎΠ΄Π° Β«Π² стилС компилятора ClosureΒ». Π’ΠΎ, ΠΎ Ρ‡Π΅ΠΌ я бСспокоюсь ...

  • Π‘Ρ‚ΠΈΠ»ΡŒ компилятора закрытия Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΡ… Π½Π΅Ρ‚. Бколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ потрСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎ всСм ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ функциям?
  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ замыкания Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ строгих ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ². Π”Π°ΠΆΠ΅ для null ΠΈ undefined Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ тяТСлая Ρ€Π°Π±ΠΎΡ‚Π° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ "Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ", ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ "Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ" ΠΈ Ρ‚. Π”.
  • Π’Π°ΠΌ слСдуСт ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» externs, Ссли Π²Ρ‹ с Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Β«Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΏΠΎΠ»Π½ΠΎΠΉ вСрсиСй», скомпилированной ADVANCED_OPTIMIZATIONS.

Π₯Π°ΠΉ Π©Π΅Π΄ΡƒΠ» ΠšΡΠΎΡ€,

Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя. НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ нСбольшой ΠΎΡ‚Ρ€Ρ‹Π²ΠΎΠΊ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ
это Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² three.js?

Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ,

Рамсундхар ΠœΠ°Π΄Ρ…Π°Π²Π°Π½

Π’ΠΎ Π²Ρ‚ΠΎΡ€Π½ΠΈΠΊ, 24 июня 2014 Π³., Π² 16:23, Schedul Xor [email protected]
написал:

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, я с Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρƒ возмоТности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с использованиСм three.js ΠΈ
поэтому ТСлая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠΏΡ†ΠΈΠΈ ADVANCED_OPTIMIZATIONS.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для встраивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ
Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Three.js.

Π’ настоящСС врСмя для three.js трСбуСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ
ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠ΅ использованиС ограничиваСтся Ρ„Ρ€Π°Π·ΠΎΠΉ «ВрСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ three.min.js!Β». Π­Ρ‚ΠΎΡ‚ классичСский
ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ прост для понимания, Π½ΠΎ для ΠΊΠΎΠ΄ΠΎΠ², написанных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°,
ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ JavaScript ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° счСт сокращСния ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
(Π½Π΅ дСйствуСт для ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…), ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² (эффСктивно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ
для отступов, табуляции ΠΈ Ρ€Π°Π·Ρ€Ρ‹Π²ΠΎΠ² строк) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π΅ΡˆΠ΅Π²Ρ‹Π΅ ΡƒΠ»ΠΎΠ²ΠΊΠΈ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ADVANCED_OPTIMIZATIONS для "Closure compiler style"
ΠΊΠΎΠ΄Π°, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС "Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² основном
большиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Closure library
https://developers.google.com/closure/library/ стал большим, Π½ΠΎ
ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ это Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ
большая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π° Π½Π° этапС компиляции.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ three.js ΡƒΠΆΠ΅ написан Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ стилС, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это
Π½Π΅ (тСхничСски) слоТно ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ вСсь ΠΊΠΎΠ΄ Π΄ΠΎ "Closure compiler"
стилизованный ΠΊΠΎΠ΄. Π’ΠΎ, Ρ‡Ρ‚ΠΎ мСня бСспокоит ...

  • Π‘Ρ‚ΠΈΠ»ΡŒ компилятора закрытия Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
    На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΡ… Π½Π΅Ρ‚. Бколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ потрСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ
    ΠΊΠΎ всСм функциям ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ?
  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ замыкания Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ строгих ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ². Π”Π°ΠΆΠ΅ для null ΠΈ
    undefined, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ тяТСлая Ρ€Π°Π±ΠΎΡ‚Π° для
    Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ "null-allowed", "undefined-allowed"
    ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ...
  • Π’Π°ΠΌ слСдуСт ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» externs, Ссли Π²Ρ‹ с Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Π΅Ρ‚Π΅
    для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Β«ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΒ», скомпилированной
    ADVANCED_OPTIMIZATIONS.

-
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ просмотритС Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/mrdoob/three.js/issues/341#issuecomment -46957189.

@ schedul-xor Π½Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ с этим ... Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ трСбуСтся анонтация ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ достаточно externs?

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,

Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² этом сообщСствС, ΠΌΠ½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ интСрСсно внСсти свой Π²ΠΊΠ»Π°Π΄ Π² эти
измСнСния.

Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ,

Рамсундхар ΠœΠ°Π΄Ρ…Π°Π²Π°Π½

Π’ΠΎ Π²Ρ‚ΠΎΡ€Π½ΠΈΠΊ, 24 июня 2014 Π³., Π² 19:23 Π³-Π½ doob [email protected] написал:

@ schedul-xor https://github.com/schedul-xor Π½Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ
с этим ... Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ трСбуСтся анонтация ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ этого достаточно с
ΡΠΊΡΡ‚Π΅Ρ€ΡŒΠ΅Ρ€Ρ‹?

-
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ просмотритС Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/mrdoob/three.js/issues/341#issuecomment -46973166.

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ оптимизация Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ стиля кодирования, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½Π° Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ ваш ΠΊΠΎΠ΄. НапримСр, three.js ΡΠΌΠ΅ΡˆΠΈΠ²Π°Π΅Ρ‚ uniforms["diffuse"] ΠΈ uniforms.diffuse , Ρ‡Ρ‚ΠΎ нСдопустимо ΠΏΡ€ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ закрытия. Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ # 3222.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ строгого Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ - это ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ объСм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ большого количСства строк ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² (Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ это ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΎ количСство строк Π² 2 Ρ€Π°Π·Π°).

ΠŸΡ€ΠΈΡΡ‚Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ externs для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² / языков.

Богласно руководству , externs ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ (Π² стилС компилятора Π±Π΅Π· закрытия) сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π² стилС компилятора с Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ, ΠΎΡ‚ агрСссивного пСрСимСнования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π― Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ компилятор ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΉ ΠΊΠΎΠ΄, Π΄Π°ΠΆΠ΅ Ссли Ρ„Π°ΠΉΠ» externs - СдинствСнноС, Ρ‡Ρ‚ΠΎ прСдоставляСтся. Π‘ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ссли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ» externs, Π° Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎ всСм функциям ...

Π₯отя, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ externs, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ впослСдствии станСт Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» externs, Ссли Ρ„Π°ΠΉΠ» опрСдСлСния Ρ‚ΠΈΠΏΠ° ΠΈ исходный ΠΊΠΎΠ΄ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сСбС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Ρ‚ΡŒ, Ссли ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ исправлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ обновлСния Ρ„Π°ΠΉΠ»Π° externs. Π›ΡŽΠ±ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ (externs ΠΈΠ»ΠΈ / ** * / ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ функциям) Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΠΎΠ±Π΅ΠΆΠ΄Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ простой ΠΌΠ΅Ρ‚ΠΎΠ΄.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ three.js - большой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΌΠ½Π΅ интСрСсно, Π½Π°Π΄ Ρ‡Π΅ΠΌ ΠΌΠ½Π΅ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ слСдуСт ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π›ΡƒΡ‡ΡˆΠ΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Как насчСт размСщСния Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ², измСнСния стиля опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

THREE.Material = function(){
  :
};
THREE.Material.prototype = {
    constructor: THREE.Material,
    setValues: function ( values1, value2 ) {}
    getValues: function () { return this.a; }
    :
};

↓

goog.provide('THREE.Material'); ← Write goog.provide('package.classname') at the first line

← three empty lines before <strong i="10">@constructor</strong>

/**
 * <strong i="11">@constructor</strong> ← Add <strong i="12">@constructor</strong> annotation to constructor
 */
THREE.Material = function(){
  :
};

← two empty lines before function definition
/**
 * <strong i="13">@param</strong> {!Array.<!string>} values1 Values1 explanation ← values1 is an array of strings. values1 can't be null, and elements inside values1 can't be null.
 * <strong i="14">@param</strong> {!number} value2 Value2 explanation ← value2 is a number.
 */
THREE.Material.prototype.setValue = function(values1, value2){
  goog.asserts.assertArray(values1);
  goog.asserts.assertNumber(value2);
  :
};


/**
 * <strong i="15">@return</strong> {!number} ← This function returns a non-null number.
 */
THREE.Material.prototype.getValue = function(){
  return this.a;
};

Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ всС Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упростит ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ошибок компиляции ADVANCED_OPTIMIZATIONS.

Π₯ΠΌΠΌΠΌ, я всС Π΅Ρ‰Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ мноТСством ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² ΠΊΠΎΠ΄Π΅. Иногда я задаюсь вопросом, Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Π»ΠΈ Π±Ρ‹Π»ΠΎ Π±Ρ‹ пСрСнСсти всС это Π½Π° Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Ρ€ΠΎΠ΄Π΅ TypeScript (Таль, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Microsoft).

Випскрипт Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ javascript, Ρ‡Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΌΠΎΠΉ ΠΎΠΏΡ‹Ρ‚ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ я пСрСписал Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΊΠΎΠ»Π»Π°Π΄Π° срСднСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° сначала Π½Π° javascript, совмСстимый с Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π° ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст. Оба ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ ошибки Π²ΠΎ врСмя компиляции. Closure Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π° нСсколько довольно Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ (встраиваниС, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°) ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏΡ‹, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Π»ΠΎ, Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° IDE (для Π°Π²Ρ‚ΠΎΠ·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°) Π±Ρ‹Π»Π° Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ, ΠΊΠ°ΠΊ с ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΌ тСкстом. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΈΡΠ°Ρ‚ΡŒ классы Π² машинописном тСкстС Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ благодаря ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову class ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΌΡƒ Π½Π° ECMAScript6.

Но это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅. Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, я Ρ…ΠΎΡ‡Ρƒ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС обращСния ΠΊ свойствам согласованы, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ компиляции. НаличиС Ρ„Π°ΠΉΠ»Π° externs Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚, доступ ΠΊ свойствам Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ согласованным для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ _Ρ…ΠΎΡ‚ΠΈΡ‚Π΅_, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ агрСссивно ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ‹ / встроСны / ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. Π’Ρ‹ ΠΏΠΎΠΉΠΌΠ°Π΅Ρ‚Π΅ нСсогласованный доступ ΠΊ свойствам, Ссли Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс ΠΈ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это для всСй ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ three.js Π·Π°ΠΉΠΌΠ΅Ρ‚ нСсколько нСдСль (Ссли я ΡΠΊΡΡ‚Ρ€Π°ΠΏΠΎΠ»ΠΈΡ€ΡƒΡŽ, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚).

НаконСц, слСдуСт ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ пСрСнос Ρ‚Π°ΠΊΠΎΠ³ΠΎ большого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠ°ΠΊ three.js, Π½Π° любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык / Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ / ΡΡ‚ΠΈΠ»ΡŒ кодирования.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, я согласСн, Ρ‡Ρ‚ΠΎ three.js ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½, поэтому Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько нСдСль. ΠœΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠ΅ AltJS, Ρ‡Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ (Ссли Π²Ρ‹ с Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Π΅Ρ‚Π΅ возмоТности пСрСноса Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅) Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

Извини Π½Π΅ ΠΌΠΎΠ³Ρƒ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ. Π― Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»ΡΡŽ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°ΡŽ ΠΊ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,

МоТно Π»ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ этой Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ? Если Π΄Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ
to build.py ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ закрытия.

Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ,

Рамсундхар ΠœΠ°Π΄Ρ…Π°Π²Π°Π½

Π’ срСду, 25 июня 2014 Π³., Π² 6:05, Schedul Xor [email protected]
написал:

Π₯ΠΎΡ€ΠΎΡˆΠΎ, я согласСн, Ρ‡Ρ‚ΠΎ three.js ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½, поэтому добавляю Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько нСдСль. ΠœΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠ΅ AltJS, Ρ‡Π΅ΠΌ
Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ (Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ пСрСнСсти Π΅Π³ΠΎ Π½Π°
Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅) Π³Π»ΡƒΠ±ΠΆΠ΅.

Извини Π½Π΅ ΠΌΠΎΠ³Ρƒ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ. Π― Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»ΡΡŽ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°ΡŽ ΠΊ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

-
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ просмотритС Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/mrdoob/three.js/issues/341#issuecomment -47047966.

@ ramsundhar20 , Π½Π° ΠΌΠΎΠΉ взгляд, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ (Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Ρ…? Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ. Π½Π΅ большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ) Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упростит Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Π’ настоящСС врСмя Three.js содСрТит 163 Ρ„Π°ΠΉΠ»Π° javascript с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ 1354 функциями. Π”Π°, ΠΎΠ½ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½, Π½ΠΎ это Π½Π΅ такая ΡƒΠΆ далСкая Ρ†Π΅Π»ΡŒ.

// Π‘ΠΎΡŽΡΡŒ, Ссли эта Ρ‚Π΅ΠΌΠ° Π½Π΅ ΠΊ мСсту ...

@ schedul-xor Π΅Ρ‰Π΅ Ρ€Π°Π·, я Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ люблю ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ: /

@mrdoob Π₯ΠΎΡ€ΠΎΡˆΠΎ, я понял.

УваТая Π²Π°ΡˆΡƒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠ΅ΠΉ Π²ΠΈΠ»ΠΊΠ΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Ρƒ Π΄Π΅Π»Π°Ρ‚ΡŒ запросы Π½Π° вытягиваниС. ВмСсто этого я пСрСнСсу ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ three.js Π² свою Π²ΠΈΠ»ΠΊΡƒ Π² стилС замыкания. Π‘ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ Π·Π° вашС благосклонноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

Π­Ρ‚ΠΎ Π·Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ :)

Бпасибо! Π― Π½Π°Ρ‡Π½Ρƒ Π½Π°Π΄ этим Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π•ΡΡ‚ΡŒ Π»ΠΈ хотя Π±Ρ‹ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» externs three.js для использования с Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ компилятором? Для этого Π½Π΅ трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² исходном ΠΊΠΎΠ΄Π΅ Three.js Π±Ρ‹Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π² стилС Google, это просто для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ссылку ΠΈΠ· внСшнСго app.js, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ three.js достаточно ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ / Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ?

МСня Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ интСрСсуСт качСствСнный, ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» externs для three.js. Π’ΠΎΡ‚ ΠΎΠ΄ΠΈΠ½, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ:

https://github.com/cljsjs/packages/blob/master/three/resources/cljsjs/three/common/three.ext.js

Π― полагаю, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ с этого ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅.

Π”Π°, посчитайтС ΠΌΠΎΠΉ голос. ИдСально для ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°, 100% Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ threejs - ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρ„Π°ΠΉΠ»Π° externs.

Π’Ρ‹Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² стало Π»ΡƒΡ‡ΡˆΠ΅, Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ бСспорядок стал мСньшС. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ областСй видимости ΠΈ псСвдонимов ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ, ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° закрытия. Π­Ρ‚ΠΎ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни сводится ΠΊ написанию Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… встроСнных Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² случаС чистого ΠΊΠΎΠ΄Π°. Достаточно Π»ΠΈ этого, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π²Π΅ΡΠΈΡ‚ΡŒ всС прСимущСства?

БвСрхагрСссивныС настройки, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ + сТатиС JS + оптимизация Π½Π° основС Ρ‚ΠΈΠΏΠΎΠ², Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΉ ΠΊΠΎΠ΄, Π½ΠΎ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ всС классныС Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор:

Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ константы / пСрСчислСния Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ константу, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ вычислСния с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ константами ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ простоС число Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, зависимоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ подвСргаСтся ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ сайт Π²Ρ‹Π·ΠΎΠ²Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Ρ‚Π΅, Ρ‡ΡŒΡ сТатая Ρ„ΠΎΡ€ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ мСньшС, Ρ‡Π΅ΠΌ ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π±ΡƒΠ΄ΡƒΡ‚ сохранСны встроСнными. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. ВсС Π½Π΅Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° сокращСны Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°.

Поиск Π² JavaScript ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΡ€ΠΎΠ³ΠΎ обходится. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ пСрСимСнования, сворачивания констант ΠΈ встраивания ΠΈΠ·Π±Π°Π²ΠΈΡ‚ ΠΎΡ‚ мноТСства поисков ΠΈ многочислСнных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ этому, учитывая ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (ΠΎΠ½ Π΅ΡΡ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ закрытия), всС стандартизованныС константы WebGL ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠ΅Ρ‡Π΅Π½Ρ‹ Π² Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Ρ€Π΅.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΡƒΡŽ, Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ, ΡΠ°ΠΌΠΎΠ΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽΡΡ ΠΈ автоматичСски Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС ошибок ΠΏΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ агрСссивных настройках - это, вСроятно, упростит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ΄Π°. И послСднСС, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅: Π΅ΡΡ‚ΡŒ эффСкт запутывания: объСдинСниС клиСнтского ΠΊΠΎΠ΄Π° с настроСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ обСспСчиваСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ ΠΊΡ€Π°ΠΆΠΈ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ собствСнности, Ρ‡Π΅ΠΌ ΠΊΠΎΠ΄ с ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ символами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ сохранСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π°ΠΉΠ»Π° externs.

НС ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Π²Π΅Ρ‚ΠΊΡƒ. ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ вСрсиСй?

@mrdoob Π•ΡΡ‚ΡŒ Π»ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΠΏΠΎΠΌΠΎΡ‡ΡŒ.

@mrdoob Π•ΡΡ‚ΡŒ Π»ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я занимаюсь Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ WebGLRenderer πŸ˜‡

МоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ константы Π½Π° const Π° Π½Π΅ Π½Π° var ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ для всСх Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² WebGL https://kangax.github.io/compat-table/es6/ (const-> basic) ΠΈ js Π΄Π²ΠΈΠΆΠΊΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ для const УскорСниС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… констант с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ с фиксированным ΠΏΠΎΠ»Π΅ΠΌ

Однако интСрСсно, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСсто var , ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΡ‡Π΅Π½ΡŒ нСбольшой части случаСв, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я Π³ΠΎΠ²ΠΎΡ€ΡŽ, - Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ константах. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, JIT-компиляторы ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΡΠΏΠ΅ΡˆΠ°Ρ‚, поэтому ΠΎΠ½ΠΈ, СстСствСнно, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, выполняСмой Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΌ инструмСнтом. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ JS-Π΄Π²ΠΈΠΆΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ²Π°ΠΆΠ°Ρ‚ΡŒ структуру ΠΊΠΎΠ΄Π° ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ Π΅Π³ΠΎ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ смоТСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ консоль ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π² Π½Π΅Π΅ вставили, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Ρ‚. Π”.

ВСрнСмся ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ компилятора: я Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Π» ΠΈ поэкспСримСнтировал. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ я выяснил:

  • Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ,
  • Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ постСпСнно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ
  • Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΡƒ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ это довольно просто.

Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования:

  1. МодСли ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ вмСстС с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ.
  2. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° сТаты. МодСли Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя выполнСния.
  3. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° скомпилирована Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ…ΠΎΡ‡Π΅Ρ‚ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Π° externs для всСх Three.js ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ для слишком малСнькой Π²Ρ‹Π³ΠΎΠ΄Ρ‹ IMO. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… - Π² любом случаС, это ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅:

Когда компилятор Π²ΠΈΠ΄ΠΈΡ‚

anObject['aProperty']

ΠΎΠ½ Π½Π΅ коснСтся ΠΈΠΌΠ΅Π½ΠΈ свойства (Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ строки Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ).

anObject.aProperty

с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, позволяСт компилятору ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свойство, Ссли ΠΎΠ½ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ anObject являСтся внСшним ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π·Π½Π°Π΅Ρ‚ ΠΎΠ± этом ΠΈΠ· встроСнного ΠΈΠ»ΠΈ явно прСдоставлСнного _externs_.

Π’ΠΎΡ‚ Ρ€Π΅Ρ†Π΅ΠΏΡ‚:

  • ΠœΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ обращался ΠΊ свойствам, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ.
  • ΠœΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ Π²Π²ΠΎΠ΄ ΠΈ пишСм Ρ„Π°ΠΉΠ» externs Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для JSON .
  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ с использованиСм этого Ρ„Π°ΠΉΠ»Π° externs Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ всСм, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования 2.
  • Для Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования 1 ΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ» externs, Π° вмСсто этого удаляСм ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² JSON:
{
    "camera": {
        "object": {
    // ...

просто стал Π±Ρ‹

{
    camera: {
        object: {
    // ...

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ просто, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ?

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ использования 1 становится Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ JSON позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшниС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (сырыС ΠΈΠ»ΠΈ сТатыС Ρ‡Π΅Ρ€Π΅Π· webgl-loader ΠΈΠ»ΠΈ o3dgc) - тСхничСски Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° функция, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ закрытия.

Π€Π°ΠΉΠ» externs Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ страницы Wiki, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° :-).

Π― знаю, Ρ‡Ρ‚ΠΎ этот вопрос ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚. Однако Π½Π΅Π΄Π°Π²Π½ΠΎ Ρƒ мСня Π±Ρ‹Π»Π° такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с использованиСм three.js Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ компилятора закрытия, ΠΈ я ΠΏΠΎΠΏΠ°Π» Π½Π° эту страницу. Π― написал инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ .d.ts (Ρ„Π°ΠΉΠ»Ρ‹ объявлСний машинописного тСкста) Π² Ρ„Π°ΠΉΠ» компилятора закрытия. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот инструмСнт ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ описанный Ρ„Π°ΠΉΠ» дСскриптора DefinitoTyped / threejs, ΠΎΠ½ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.
Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚: https://github.com/eredo/tsd2cce ΠΈΠ»ΠΈ установитС Ρ‡Π΅Ρ€Π΅Π· npm install -g tsd2cce

НадСюсь это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚...

@eredo, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ мСня ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Ρ€ΡƒΡ‡ΠΈΠ». Π’ΠΎ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π», отсутствовало большоС количСство ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ three.js. Бпасибо!

@eredo @Corkle ΠΈΠ»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Π΅, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ tsd2cce ? ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ явно являСтся Ρ„Π°ΠΉΠ»ΠΎΠΌ опрСдСлСния .d.ts, Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ² Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚? Π― ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. https://github.com/eredo/tsd2cce/issues/6

На самом Π΄Π΅Π»Π΅ я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ использованиС r73 d.ts с фСвраля ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с tsd2cce, хотя r73 для мСня слишком стар.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это сСйчас - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ tsickle для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² d.ts.

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚,

Для ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² ΠΈ всСобщСго Π±Π»Π°Π³Π° я Ρ€Π΅ΡˆΠΈΠ» ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ здСсь ΠΎ своих собствСнных ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… Π΅Ρ‰Π΅ большС ΡΠΆΠ°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ADVANCED_OPTIMIZATIONS компилятора Google Closure Compiler ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… настроСк.

Π― создал extern.js, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Three.min.js с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π­Ρ‚ΠΎ Π”ΠΠ›Π•ΠšΠž ΠΎΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ, я Π½Π°Ρ‡Π°Π» с extern.js Π½Π° основС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² этом ΠΏΠΎΡ‚ΠΎΠΊΠ΅. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ компиляции Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Ρ‹Π»Π° ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π° ΠΈΠ·-Π·Π° искаТСнных свойств, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² этот внСшний Ρ„Π°ΠΉΠ». Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --property_renaming_report Π² компиляторС закрытия, я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΏΠΎΠ»Π½Ρ‹ΠΉ список искаТСнных свойств. ПослС добавлСния Π’Π‘Π•Π₯ этих свойств Π² extern.js свойства большС Π½Π΅ искаТались, ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π±Ρ‹Π» Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ SIMPLE_OPTIMIZATIONS. ΠžΡ‚Ρ‚ΡƒΠ΄Π° я Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎ / Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π°Ρ‡Π°Π» ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ extern.js ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

МнС Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ extern.js, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ бСзопасно искаТаСт ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΈΠΌΠ΅Π½ свойств. Π£ мСня Π±Ρ‹Π»Π° идСя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты для THREE.JS ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ искаТСнныС ΠΈΠΌΠ΅Π½Π° свойств ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ тСстам, Π½ΠΎ Π² настоящСС врСмя Π½Π΅ прСдставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ phantomjs. (НавСрноС, ΠΈΠ·-Π·Π° WebGL)?

Π’ любом случаС это «прогрСсс» ΠΊ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡŽ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰Π΅ΠΉ ΠΌΠ½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ JavaScript-ΠΊΠΎΠ΄Π° SPA.

externs.js

ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ​​команда package.json build-closure

Π― Ρ‚Π°ΠΊΠΆΠ΅ использовал ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°ΠΌΠ΅Π½Ρ‹ строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС сообщСния console.warn ΠΈ console.error ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ build-closure. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого, Π° Ρ‚Π°ΠΊΠΆΠ΅ коммСнтируя ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΊΠΎΠ΄Π°, я сократил ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 20%, ΠΈ Π΅ΡΡ‚ΡŒ возмоТности для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ.

@mrdoob Выполняя здСсь Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ΠΌΠΎΠ΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ extern.js, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ADVANCED_OPTIMIZATIONS, Π½Π΅ загромоТдая ΠΊΠΎΠ΄ аннотациями, спСцифичными для этого компилятора, Ρ‡Ρ‚ΠΎ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, Π±Ρ‹Π»ΠΎ вашСй основной Π·Π°Π±ΠΎΡ‚ΠΎΠΉ.

@ medmr1 Π—Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ! Π’Ρ‹ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ three.js Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π»Π°ΠΊΠΎΠ½Π΅? Π’ ΠΈΠ΄Π΅Π°Π»Π΅ это ΠΈΠ·Π±Π°Π²ΠΈΠ»ΠΎ Π±Ρ‹ ΠΎΡ‚ нСобходимости Π²ΠΎ внСшнСм Ρ„Π°ΠΉΠ»Π΅.

Π― Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всС Π² Ρ€Π°ΠΌΠΊΠ°Ρ… замыкания, Π½Π΅Ρ‚. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ я ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ всС Π΅Ρ‰Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… свойств, упомянутых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ? IE Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ var thing = ShaderLib[ shaderType + "BumpMapFrag"] Но, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, я избавлю сСбя ΠΎΡ‚ мноТСства ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ?

Π”Π°, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ var thing = ShaderLib[ shaderType + "BumpMapFrag"] сломаСтся ΠΏΡ€ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. ссылки Π½Π° свойства Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ статичСски Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

function(shaderType) {
  if (shaderType == "a") {
    return ShaderLib.aBumpMapFrag;
  }
  if (shaderType == "b") {
    return ShaderLib.bBumpMapFrag;
  }
...

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° externs ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Closure Compiler, Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

ВмСсто externs Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ @export .
https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#export -export-sometype

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