2013-08-01 3 views
4

В классе Java загрузчик классов загружает динамически классы Java в JVM. В Javascript У меня часто возникает проблема с вызовом, выполняемым при незагруженной зависимости, потому что загрузка выполняется асинхронно.Эквивалент загрузчика классов в Javascript

Я использую каркас Angular JS. Например одна страница зависит от API, но получаю сообщение об ошибке при вызове Cannot read property 'realestate' of undefined

gapi.client.realestate.get(propertyId).execute(function(resp) { 
        console.log(resp); 
       }); 

, потому что API не загружен. Загрузка осуществляется

loadRealEstateAPI = function() { 
    var ROOT = 'http://localhost:8888/_ah/api'; 
    gapi.client.load('realestate', 'v1', function() { 
     console.log("Real Estate API loaded"); 
     $rootScope.$broadcast("reAPILoaded", true); 
    }, ROOT); 
} 

Я хотел бы знать, если есть библиотека JS, которые позволяют запуске приложения, когда все зависимости будут загружены.

+4

Ознакомьтесь с http://requirejs.org/docs/whyamd.html – Will

ответ

2

RequireJS does exactly this, позволяя вам определять свои зависимости, а затем выполнять ваш код только после загрузки зависимостей. Если вы используете что-то вроде API Карт Google, который загружается в нескольких зависимостях своего собственного there is even a plugin, который будет ожидать загрузки всех сторонних зависимостей.

Существует short write-up that shows you how to integrate AngularJS with RequireJS. В качестве дополнительного бонуса, Require comes with an optimizer, вы можете запустить часть процесса развертывания, чтобы скомпилировать все локальные файлы в один файл.

0

Я написал инструмент, который выполняет в основном именно это. Он определяет и управляет вашими зависимостями времени синтаксического анализа, а также обычными зависимостями времени выполнения.

это здесь: http://damonsmith.github.io/js-class-loader/

это Java на основе Java-пакетировании и детектор зависимостей, не зависимость, как и в «Я хочу, чтобы добавить JQuery на мой сайт», но зависимость, как и в «Я хочу, чтобы управлять очень большим OO -style javascript codebase от времени выполнения и зависящих от времени зависимостей, написанных командой разработчиков » Он предназначен для быстрой установки и настройки в java-приложениях и IDE, а также для приложений, не поддерживающих Java. Как только он будет установлен в вашей сборке или на вашем сервере, вам не стоит об этом беспокоиться.

Смежные вопросы