Зміни коду JavaScript у макросах RoomOS
Ми оновили механізм, що працює з макросами на RoomOS, і в результаті цих оновлень деякі правила та функції JavaScript більше не будуть доступні для макросів. Зокрема, функції, пов'язані з CommonJS, більше не доступні. Деякі поширені приклади коду, що потребує перезапису:
require(), в тому числі:require('xapi')- потребує перезапису на стандартний ECimportMAScript. Наприклад, зміconst xapi = require('xapi')нено наimport xapi from 'xapi'require.main
module, в тому числі:module.exports- потребує перезапису на стандартний ECMAScriptexportmodule.name- слід замінити на_main_module_name()
Як це включається і вимикається?
Ці зміни набувають чинності після xConfiguration Macros EvaluateTranspiledперемикання з Trueна False. Цей параметр існує вже давно, і зміна виконується шляхом зміни значення за замовчуванням у нових випусках з Trueна False.
Якщо макроси порушуються при цій зміні, явне встановлення перемикача back (xConfiguration Macros EvaluateTranspiled: True) є короткочасним виправленням, щоб вони працювали, як і раніше. Однак зауважте, що це лише тимчасове рішення: цей перемика ч зникне після перехідного періоду.
Аналогічно, на старих версіях RoomOS цю зміну можна перевірити без оновлення, встановивши перемикач на False.
Примі тка. Якщо макрос зберігається на пристрої під час перемикання, Falseі ви згодом вирішите повернути перемикач назад True, може знадобитися повторне збереження цих макросів у редакторі макросів.
Коли ці зміни набудуть чинності?
Значення за замовчуванням перемика EvaluateTranspiledча було змінено на поч Falseаток з RoomOS травня 2025 року (11.28), що означає, що пристрої будуть перемикатися за замовчуванням під час оновлення. У тій же версії крок транспіляції при збереженні макросів через XAPI вимкнено за замовчуванням. Якщо транспіляція потрібна через XAPI, параметр команди transpile повинен бути явно встановлений на true.
Почина ючи з RoomOS, липень 2025 (11.30), діагностика буде показана, коли перемикач буде встановлено на. True Він все одно буде працювати, як і раніше.
Просуваючись вперед, перемикач буде повністю видалений, і пристрій буде поводитися так, ніби він був встановлений False. Ми прагнемо впровадити цю зміну в RoomOS листопаді 2026 року (27.0).
Будь-які клієнти, які, незважаючи на наші зусилля, намагаючись сповістити та інформувати про зміни, бачать, що їхні макроси виходять з ладу, коли зміни постійно діють у RoomOS, можуть все одно використовувати (до) 6-місячне оновлення програмного забезпечення із затримкою, яке надається через Control Hub для хмарних пристроїв, щоб затримати зміни.
Навіщо це необхідно? Технічні деталі
Основним драйвером цієї зміни є те, що ми оновили наш двигун JavaScript для використання QuickJS, який служить сучасним оновленим виконанням JavaScript для вбудованих систем. Після цього, оскільки він більше не потрібен сучасному движку JavaScript, ми зараз видаляємо підтримку транспіляції JavaScript. Видалення додаткового кроку транспіляції всього коду скорочує час завантаження під час розгортання та виконання коду, а також зменшує складність платформи.
Перемикач двигуна JavaScript управляється xConfiguration Macros QuickJSEngine: Offзміненим на On. Ця зміна була впроваджена в RoomOS грудень 2023 року (11.11), і ми плануємо видалити цей перемикач конфігурації на тій же часовій шкалі, що і. EvaluateTranspiled
Ми робимо ці зміни, щоб забезпечити максимальну продуктивність RoomOS, і щоб ми могли допомогти вам ефективно та безпечно масштабувати розгортання розширень JavaScript.
Детальніше про макроси читайте на сайті roomos.cisco.com.