(JS) Доработка библиотеки для подгрузки модулей

Владимир16 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
15.01.2014

Имеется "библиотека" отвечающая за подгрузку файлов и модулей (boot.js – свой "недоаналог" RequireJS).

Описание работы

*********************

Суть работы "библиотеки" скрипта такова:

1. boot.js прописывается как обычный скрипт на странице

2. После чего возможна загрузка файлов и модулей посредством команд:

* boot.library( %name% );

* boot.module( %name% );

* boot.addon( %name% );

(первыми должны загружаться всегда библиотеки, после чего модули и аддоны соответственно, сейчас с этим проблемы)

3. boot.js в свою очередь обращается по путям вида: /client/%type%/%name%/, и считывает файл %name%.boot.js, в котором находится нечто вроде этого:

boot.css( { file: 'navigator.main' } );

boot.js( { file: 'navigator.interface', initialize: [ 'interface.navigator' ], require: [ 'core.jQuery', 'core.localization' ] } );

boot.js( { file: 'navigator.core', initialize: [ 'core.navigator' ], require: [ 'interface.navigator' ] } );

(здесь вначале подгрузится файл navigator.main.css,

потом должен jQuery.core.js если он не загружен (но это происходит не всегда, об этом ниже), localization.core.js,

navigator.interface.js, navigator.core.js)

4. После подгрузки всех файлов – происходит их инициализация – путём обращения к моделям вида (к тому что указано в initialize):

var core =

(function( core )

{

with( core )

{

var navigator = core.navigator = core.navigator || {};

navigator.initialize = function( )

{

//** Здесь код

}

}

return core;

})( core || { } );

Проблемы / Не доработки

********************************

Вроде-бы как в всё хорошо, но имеется ряд проблем которые необходимо решить

( так же возможны другие модификации по Вашему совету – но без разрушения структуры ):

1. В случаях когда файлов нет в кеше совсем (например первый запуск сайта в браузере, очистка кеша или не хранение его почему-то не помогает воспроизвести проблему),

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

Данная проблема скорее всего не только с jquery но и другими модулями, просто данная ошибка самая приметная.

(в общем приоритетов никаких нет)

(выводится текст: function ( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context, rootjQuery ); } – это из файла jQuery)

2. Не работает в IE

3. Необходима придумать/реализовать модель загрузки "системных" модулей, или подобного которые будут загружены и инициализированы до всего (например вначале jquery, потом локализация и тестирование браузера на поддерживаемые технологии).

4. Нужна возможность прерывания дальнейшей загрузки скриптов, например в случае неудачного проведения теста на поддерживаемые технологии.

Как вариант о котором я думал – возможно следует немного разделить логику изначальной инициализации скриптов – с подзагрузкой.

Прочее

*********

Данная "библиотека" писалась не мной, я – "правоприёмник".

Потратив много времени на решение вышепоставленных задач – решил что с этим разберётся лучше тот кто уже сталкивался с подобным.

Архив с библиотекой и примером – во вложениях.

Уточняйте стоимость работ, и примерное время.

Оплата при помощи WebMoney (если не устраивает думаю что-то сможем придумать).

Заявки фрилансеров