Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将javascript文件加载到作用域中_Javascript_Jquery_Architecture_Client Side - Fatal编程技术网

如何将javascript文件加载到作用域中

如何将javascript文件加载到作用域中,javascript,jquery,architecture,client-side,Javascript,Jquery,Architecture,Client Side,我试图弄清楚如何将JavaScript文件的内容加载到作用域中。原因是我希望能够拥有即插即用功能,并能够将不同的功能加载到我的应用程序中。可能是用户角色决定加载什么功能,或者我想为给定的客户端定制我的应用程序 下面是我的一个可插入JavaScript文件的内容示例: myApp.LoginViewModel = (function () { //DATA var self = this; return { HelloWorld: function ()

我试图弄清楚如何将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文件中的代码。我错过了什么?这是否可行?

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

是的,您是对的。我还没有加载完JS文件。谢谢你的术语提示。