如何将JavaScript文件加载到范围中

时间:2014-03-11 18:42:06

标签: javascript jquery architecture client-side

我试图弄清楚如何将JavaScript文件的内容加载到范围中。原因是我希望能够具有即插即用功能,并能够在我的应用程序中加载不同的功能。也许用户角色决定了加载了哪些功能,或者我想为给定的客户端定制我的应用程序。

以下是我的一个可插入JavaScript文件的内容示例:

myApp.LoginViewModel = (function ()
{
    //DATA
    var self = this;

    return {
        HelloWorld: function ()
        {
            alert('Hellow World from Login View Model');
        }
    };
})();

以下是配置文件的示例,其中列出了应加载的JS文件:

var myApp = myApp || {};

myApp.ViewModelRegistry =
{
    BaseViewModel: { JavaScriptPath: "/Scripts/ViewModels/BaseViewModel.js"},
    LoginViewModel:{ JavaScriptPath: "/Scripts/ViewModels/LoginViewModel.js"}
};

这是我的代码循环浏览ViewModelRegistry并使用jQuery加载脚本:

    InitializeApp: function ()
    {
        //REGISTER VIEW MODELS
        for (var viewModelName in myApp.ViewModelRegistry)
        {
            var registeredModel = myApp.ViewModelRegistry[viewModelName];

            $.getScript(registeredModel.JavaScriptPath, function (data, textStatus, jqxhr)
            {
            });
        }

        console.log(myApp);
    }
};

我的目标是将JavaScript函数从JS文件加载到myApp范围。每个可插入的JS文件都限定为myApp。我认为只使用jQuery的getScript加载JS文件会自动更新myApp范围,因为所有可插入的JS文件都是针对该范围设计的。但是,console.log(myApp)不会显示JS文件中的代码。我错过了什么?这甚至可行吗?

1 个答案:

答案 0 :(得分:1)

我相信你的console.log是在检索和解析任何JS文件之前执行的。除此之外,你似乎正确的做法。这绝对是可行的,用于描述您想要实现的内容的术语称为异步模块定义。