Javascript中的类加载器的等价物

时间:2013-08-01 21:08:31

标签: javascript angularjs

Java中,类加载器将Java类动态加载到JVM中。在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库让应用程序在加载所有依赖项时启动。

2 个答案:

答案 0 :(得分:2)

RequireJS does exactly this允许您定义依赖项,然后只在依赖项加载后执行代码。如果您使用的是Google Maps API,它会加载自己的there is even a plugin的多个依赖项,这些依赖项将等待加载所有第三方依赖项。

有一个short write-up that shows you how to integrate AngularJS with RequireJS。作为额外的好处,Require comes with an optimizer可以作为部署构建过程的一部分运行,以将所有本地文件编译为单个文件。

答案 1 :(得分:0)

我写了一个基本完全正确的工具。它可以检测和管理您的解析时依赖关系以及通常的运行时依赖关系。

它在这里: http://damonsmith.github.io/js-class-loader/

它是一个基于java的javascript捆绑器和依赖检测器,而不是像“我想将jquery添加到我的网站”中的依赖项,而是依赖于“我想管理一个非常大的OO风格的javascript代码库的运行时和解析由开发团队编写的时间依赖性“ 它旨在非常简单快速地安装和配置到Java Web应用程序和IDE中,它也适用于非Java应用程序。一旦它安装在您的构建或服务器中,您根本不需要担心它。