Dojo需要加载编号而不是模块

时间:2016-08-25 11:34:45

标签: javascript module dojo require dojo-build

在我的dojo应用程序中,我正在尝试动态加载模块,该模块工作正常,直到我构建我的代码。一旦使用dojo构建系统构建代码,某个模块加载的内容就像一个整数(特别是3)而不是模块本身。

以下是正在运行的代码,即在构建应用之前

var loadModule = "MyModule.js";
var path = "./js/path/to/MyModule/";
require([path+loadModule], lang.hitch(this,function (myModule) {
    //do something with myModule
   //this works without any problem
}))

现在,通过dojo构建系统获得的代码就像下面的内容一样,并且不起作用

var _23 = "MyModule.js";
var _24 = "./js/path/to/MyModule/";
require([_24 + _23], _2.hitch(this, function(_25) {
    //here this '_25' is number 3 instead of myModule. which i wonder why!
}))

对于dojo构建系统,我使用以下配置

layerOptimize: "shrinksafe",
optimize: "shrinksafe",
cssOptimize: "comments",
mini: true,
stripConsole: "warn",
selectorEngine: "lite",

编辑:在我的应用程序中,我试图动态加载的模块负责处理openlayers map。该模块的基本代码如下所示

define(["dojo/_base/declare", "dojo/_base/lang", "dojo/_base/window", "dojo/dom", "dojo/dom-construct", "dojo/topic","dojo/dom-style","dojo/on",
        "dijit/registry","dijit/Tooltip","dijit/TooltipDialog","dijit/popup","dijit/ConfirmDialog",
        "dojox/collections/Dictionary"
        ],
        function(declare, lang, baseWindow, dom, domConstruct, topic, domStyle, on,
                registry,Tooltip,TooltipDialog,dijitPopup,ConfirmDialog,
                Dictionary){

    var olMapModule = {};

    olMapModule.initMap = function(){
        //Code for openlayer go here    
    };


    olMapModule.initMapInteractions = function(){
        //code for initiating the map interactions go here
    };
    return olMapModule;
});

Edit2:错误地放置了逗号。还有一点是,这段代码在完成dojo构建之前确实很完美。

1 个答案:

答案 0 :(得分:0)

当在一个字符串中使用`require``instead speciy时,尽量避免字符串连接。这应该可以解决您的问题:

require(["./js/path/to/MyModule/MyModule.js"], lang.hitch(this,function (myModule{}));