Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ для JavaScript Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, для сохранСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹:

  1. По максимуму ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнный Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ количСство JS ΠΊΠΎΠ΄Π°. Π§Π΅Ρ€Π΅Π· JS ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΒ Π΄ΠΎΡΡ‚ΡƒΠΏ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ структуры систСмы, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚.
  2. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅Β Π² JS ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ DOM элСмСнтам, стилям, CSS классам. Π­Ρ‚ΠΈ сущности ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚.
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ JS API, Π²Π΅Π·Π΄Π΅ Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. НапримСр, для получСния Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π»Π΅Π·Ρ‚ΡŒ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ структуры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ API. Π’Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠœΡ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π›ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΠΌ, Ссли ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ измСнилось.
  4. ΠŸΠΈΡˆΠΈΡ‚Π΅ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ JS/HTML ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ undefined behavior, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, послС обновлСния ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.
  5. Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ особСнности обновлСния, Π³Π΄Π΅ ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅ΠΌ ΠΎ вСроятных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выявили.
  6. Если ΠΌΠ½ΠΎΠ³ΠΎ JS/Python ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послС обновлСния. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для этого автоматичСскоС сравнСниС ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ² инструмСнтом BackstopJS.

ΠžΠ±Ρ‰ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

  1. Для установки Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Β«Π€ΠΈΠ»ΡŒΡ‚Ρ€Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚. Достаточно ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ (visApi.setFilterSelectedValues(id Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, Π³Π΄Π΅ происходит ΠΊΠ»ΠΈΠΊ)) Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, Π³Π΄Π΅ происходит ΠΊΠ»ΠΈΠΊ. НапримСр, Ссли Π΅ΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ visApi.setFilterSelectedValues(id ΠΊΠ°Ρ€Ρ‚Ρ‹).
  2. Для ΠΏΠΎΠΊΠ°Π·Π° числа ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… (рисунок 1) Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉΒ» Π²ΠΈΠ΄ΠΆΠ΅Ρ‚. Достаточно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ «ВСкст», Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ числа ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. НапримСр: @array[0] + @array[1]. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ взяли ΠΈ слоТили ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° числа ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JS ΠΊΠΎΠ΄. НапримСр, Math.round(@array[2]). ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ числа ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ…. Рисунок 1
  3. Если ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄, Π° ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ стандартным, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° стандартный Π² настройках Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Если добавится ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Ρƒ этого Ρ‚ΠΈΠΏΠ° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Π² ΠΊΠΎΠ΄Π΅, Ρ‚ΠΎ Ρƒ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° этого поля Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Π° Ρƒ стандартного ΠΎΠ½ΠΎ появится ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ смоТСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».
  4. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ JS Ρ„Π°ΠΉΠ»Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹. Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² руководствС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.
  5. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ кастомныС ajax запросы Π² ΠΊΠΎΠ΄Π΅ для установки Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.Π΄., Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹ΠΌ послСдствиям, послС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ. Для Ρ‚Π°ΠΊΠΈΡ… случаСв Π΅ΡΡ‚ΡŒ функция visApi(), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: установка Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, запрос Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρƒ, drilldown, drillup, подписка ΠΏΠΎ установкС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.
  6. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ JS Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹.
  7. Когда Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ JS Ρ„Π°ΠΉΠ» Π½Π° сСрвСрС, Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (window.myAdditionalLogic = function (parameter1, parameter2, ...) {}), ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всю Π»ΠΎΠ³ΠΈΠΊΡƒ. А Π² самом Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ просто Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (window.myAdditionalLogic()).
  8. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π² ΠΊΠΎΠ΄Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° (visApi.getWidgetData()), Ссли эти ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π°Π»Π΅Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π›ΠΈΡˆΠ½ΠΈΠ΅ запросы Π½Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ систСму.
  9. Для получСния Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ visApi.getSelectedValues() вмСсто visApi.getWidgetData(). Π’Π°ΠΊ ΠΊΠ°ΠΊ visApi.getWidgetData() Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ с сСрвСра, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠ΄Π΅Ρ‚ излишняя Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° сСрвСр.
  10. НС выноситС Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π°. ВмСсто этого удаляйтС ΠΈΡ…, Ссли ΠΎΠ½ΠΈ большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Из-Π·Π° Ρ‚Π°ΠΊΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ загруТаСтся дольшС.
  11. НС добавляйтС Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ JS ΠΈ CSS Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ссли Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΠΎΠΌΠ°ΡŽΡ‚ Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.
  12. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ всСгда Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ JS ΠΈΠ»ΠΈ CSS. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с приставкой min. НапримСр, tippy.min.js.
  13. НС добавляйтС Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ большиС JS ΠΈ CSS Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ JS ΠΈΠ»ΠΈ CSS Ρ„Π°ΠΉΠ» ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π°.
  14. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π΅ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ Π²Ρ‹Π²ΠΎΠ΄ Π² консоль (console.log, console.warn, console.error ΠΈ Ρ‚.Π΄.). Если ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ приходится ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², Ρ‚ΠΎ Π² консоль Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‹ΠΏΠ°Ρ‚ΡŒΡΡ лишняя информация, которая Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ поиск ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.
  15. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартныС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ («Гистограма», «ВСкст», Β«ΠšΡ€ΡƒΠ³ΠΎΠ²Π°ΡΒ» ΠΈ Ρ‚.Π΄.), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ кастомный Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Dragon D3). ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Β«ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Β». Π£ стандартных Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ свои настройки (Π»Π΅Π³Π΅Π½Π΄Π°, ось Π₯, ось Y, настройки Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, скорСС всСго, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° отрисованный Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π”Ρ€Π°ΠΊΠΎΠ½, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. Π’ΡƒΡ‚ спорный ΠΌΠΎΠΌΠ΅Π½Ρ‚. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π”Ρ€Π°ΠΊΠΎΠ½ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ использовал настройки Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°. Но Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свой Β«ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉΒ» Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½Π° Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ribbon.
  16. НС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Β«Π€ΠΈΠ»ΡŒΡ‚Ρ€Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ слСва. ВмСсто этого Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ слСва Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ «ВСкст».
  17. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π² настройках Β«OLAPΒ», Π³Π΄Π΅ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто этого Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Β«Π€ΠΈΠ»ΡŒΡ‚Ρ€Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ вынСсСн Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π°, ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
  18. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сСрий Π² ΠΊΠΎΠ΄Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°. ВмСсто этого Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сСрии Π² настройках Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° «Настройка сСрий ΠΈ сСгмСнтов».
  19. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ JS ΠΈ CSS стороннСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π»Π΅ΠΆΠ°Ρ‚ Π² ΠΏΠ°ΠΏΠΊΠ΅ dist. НапримСр, для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΒ Leaflet достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ dist/leaflet.js, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°ΠΏΠΊΠ° src) – это исходныС Ρ„Π°ΠΉΠ»Ρ‹.