Джаваскрипт-включения - напрасная надежда на уэб-уэркеры

Mar 19, 2012 19:24


Пробежав Using web workers, сперва возрадовался весьма при виде многообещающей функции importScripts. Думал, вот он, чаемый аналог PHP-шного include для клиентских скриптов.

Агащазкагже. Во-первых, эта функция действует только внутри уэб-уэркеров (и действительно позволяет наращивать модули друг на друге как дивное дерево, но…). Что за беда? Можно было бы попытаться создавать уэб-уэркер из основного скрипта, а дальше подключать модули к нему. Но, во-вторых, из уэб-уэркеров нельзя ни трогать DOM, включая и window, ни передать в создающий их скрипт функции, а ведь для группировки функций и нужны на ~99 % модули.

Так что увы, пришлось пока остаться с приспособленным к нашим условиям классическим решением через применение функции eval к коду, загружаемому через HTTPRequest в виде текста. Чем оно мне не нравится, понятно - eval считается небезопасной функцией, хотя я не знаю, что грозит в данном случае, когда на исполнение запускается Javascript-библиотека, которая и должна быть запущена на исполнение. Ну, кроме того, у eval свой контекст выполнения и передать созданные в нём объекты, включая функции, наружу тоже невозможно требует небольшого трюка. Третий недостаток - обязательность внутри eval кодировки UTF-8 - носит временный характер, пока остальной код у нас по старой памяти в Windows-1251.

Если кто по доброте душевной решит подкинуть мне совет, имейте в виду: я знаю, что можно пихать в DOM узел , но этот метод для организации модульности не годится, ибо подключенный таким образом код выполнится не сразу после подключения (и, соответственно, того кода, который написан ниже), а в последнюю очередь, в то время как библиотечные функции нужны тут же, сразу после инструкции подключения.

javascript, Web-программирование

Previous post Next post
Up