ΠΡΠΈΠ²Π΅Ρ
ΠΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ three.js? Π― ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ ΡΠ°ΠΊΡΡ:
http://code.google.com/closure/compiler/docs/api-tutorial3.html#externs
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
Π Π΅ΠΌΠΎ
ΠΠ΅Ρ, Ρ 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. .Matrix4.makeTranslation
).Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΡΠΎΠ·Π΄Π°Ρ ΡΠ°ΠΉΠ» 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Β». Π’ΠΎ, ΠΎ ΡΠ΅ΠΌ Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ ...
Π₯Π°ΠΉ Π©Π΅Π΄ΡΠ» ΠΡΠΎΡ,
ΠΡΠΎ Ρ
ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ. ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΡΡΡΠ²ΠΎΠΊ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ
ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² 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-Π΄Π²ΠΈΠΆΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π°ΠΆΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠ΄Π° ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ Π΅Π³ΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, ΡΡΠΎ ΡΠΌΠΎΠΆΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΊΡΡΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈ Π½Π°ΠΉΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π² Π½Π΅Π΅ Π²ΡΡΠ°Π²ΠΈΠ»ΠΈ, Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Ρ. Π.
ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°: Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΈΡΠ°Π» ΠΈ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π». ΠΠΎΡ ΡΡΠΎ Ρ Π²ΡΡΡΠ½ΠΈΠ»:
ΠΡΡΡ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
Π’ΡΠ΅ΡΠΈΠΉ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ°ΠΉΠ»Π° externs Π΄Π»Ρ Π²ΡΠ΅Ρ Three.js ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ Π΄Π»Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΉ Π²ΡΠ³ΠΎΠ΄Ρ IMO. ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΎΡΡΠ°Π½ΠΎΠ²Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ Π΄Π²ΡΡ - Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅:
ΠΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΠΈΠ΄ΠΈΡ
anObject['aProperty']
ΠΎΠ½ Π½Π΅ ΠΊΠΎΡΠ½Π΅ΡΡΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° (Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΡΡΡΡ).
anObject.aProperty
Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π·Π½Π°Π΅Ρ, ΡΡΠΎ anObject
ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π½Π°Π΅Ρ ΠΎΠ± ΡΡΠΎΠΌ ΠΈΠ· Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΡΠ²Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ _externs_.
ΠΠΎΡ ΡΠ΅ΡΠ΅ΠΏΡ:
{
"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.
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ββΠΊΠΎΠΌΠ°Π½Π΄Π° 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
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π₯ΠΌΠΌΠΌ, Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π² ΠΊΠΎΠ΄Π΅. ΠΠ½ΠΎΠ³Π΄Π° Ρ Π·Π°Π΄Π°ΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, Π½Π΅ Π»ΡΡΡΠ΅ Π»ΠΈ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π²ΡΠ΅ ΡΡΠΎ Π½Π° ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π²ΡΠΎΠ΄Π΅ TypeScript (ΠΆΠ°Π»Ρ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Microsoft).