加载并使用从jQuery的Dojo小(Load and use Dojo widget from j

2019-10-17 13:53发布

我知道有很多关于这一主题的论坛上的问题,但我仍然无法找到答案...

我有基于jQuery的JS应用。 现在,我必须做一些整合基于Dojo的一些小部件。 我想加载道场,只有当它是必要的部件,所以希望异步地做到这一点。 我有道场存储在我的网站,所以从我的空间加载它。

下面是我尝试jQuery中使用的代码:

$.getScript("/Content/3rd/dojo/dojo/dojo.js")
.done(function (script, textStatus) {
    dojo.ready(function () {
        dojo.require("dojo.io.script");

        alert('Dojo ready!')
    });
})
.fail(function (jqxhr, settings, exception) {
    alert('error!');
});

当我尝试打电话给我的问题,从一开始就开始dojo.require("dojo.io.script"); 这是需要异步请求,我看到,它试图从以下网址加载dojo.io.script - “/Example/io/script.js”这不是它的确切位置所在地。 我怀疑,我错过了一些配置问题,但无法理解其中的一个......有人可以帮我解决这个问题?

也许是微不足道的问题,但我从来没有使用Dojo工作,需要做的仅仅基于道场,jQuery的MYY主要应用小部件快速整合...

解:

为了以防万一,如果有人有兴趣,我用的是下一个脚本加载控件:

//  Load Dojo and scripts for JSDraw2 asyncronously
dojoConfig = {
    baseUrl: "/Content/3rd/dojo-1.8.3/dojo"
};

$.getScript("/Content/3rd/dojo-1.8.3/dojo/dojo.js")
.done(function (script, textStatus) {
    dojo.ready(function () {
        dojo.require("dojo.io.script");

        var deferred = dojo.io.script.get({ url: "/Content/3rd/JSDraw2.1.4/JSDraw2.js" });
        deferred.then(function () {
            // init the Dojo widget... 
            oThis.jsDraw = new JSDraw(oThis.element.get(0));
        }, function () {
            alert('Cannot load Scilligence.JSDraw2.js');
        });
    });
})
.fail(function (jqxhr, settings, exception) {
    alert('Cannot load Dojo.js');
});

Answer 1:

很好地使用Dojo它需要一个配置去用它,而这需要的dojo.js脚本在拉之前加载。

该道场文档建议把配置到您的索引文件(或同等学历)的头,但我猜你拉下道场的代码之前,你可以创建它,特别是如果你知道,当你需要它。

因此,或许可以尝试创建一个名为“dojoConfig”全局变量你dojo.js.拉之前 这里是不是很久以前我在一个Web应用程序使用的示例配置,但将有利于你读了它,以及获得的,为什么,什么是有一个圆的想法,什么道场确实和时间。 我建议你阅读的道场开始和招呼道场教程最低限度,然后通过移动的配置和窗口小部件基础教程。 你可能想在读了道场如何使用AMD的原则为好。

<script>
    var dojoConfig = {
        baseUrl: "./",//this is where dojo will lok from for all locations configured
        async: true,
        isDebug: false,
        parseOnLoad: false,//false to allow for us to call this independently in js later on

        //here are the packages dojo will be aware of and related js files
        packages: [
            //dojo specific packages
            {name: "dojo", location: "libs/dojo/1.8.1/dojo", main: "dojo.js.uncompressed.js"}, //dojo.js.uncompressed.js for dev, use dojo.js for release
            {name: "dijit", location: "libs/dojo/1.8.1/dijit"},
            {name: "dojox", location: "libs/dojo/1.8.1/dojox", main: "dojo.js"}
        ]
    };
</script>

我的配置包括DojoX中和的dijit,当然,如果你不需要他们,那么只是删除这些行。 虽然你没有提到Dojo小部件和Dijit是哪里道场从得到它的“小工具的力量”。

您将要更改配置的基本URL以反映道场您自己的位置,同样的位置。 看看道场配置教程关于这个问题和其他属性的更多详细信息。

对不起,以上环节众多,同时道场1.8是一个很好的框架,尤其是与模块工作时,它会采取学习开始使用它,你打算的曲线。 我从来没有试图加载道场在后期比赛前那样,所以我很感兴趣地听到你上车是诚实的。

祝你好运反正。



文章来源: Load and use Dojo widget from jQuery
标签: jquery dojo