带CDN的自定义模块

时间:2013-12-17 15:58:06

标签: javascript dojo

我正在使用Esri的ArcGis CDN,我想要一些自定义模块。我的目录结构如下

Scripts
    app
        basemap.js
        test.js
Views
    Maps
        General.cshtml

General.html中,我有这个用于我的dojo配置

<script data-dojo-config="async: 1, dojoBlankHtmlUrl: '/blank.html',
    packages: [ {
        name: 'app',
        //Can't configure location correctly
        location: location.pathname.replace(/\/[^/]+$/, '') + ''
    } ]"
src="//js.arcgis.com/3.7/"></script>

测试test.js中的用法

require([
   "dojo/ready",
   "app/basemap"
], function (ready, basemap) {

    basemap.test();

}

如果我使用绝对路径location: 'http://localhost:53862/Scripts/app',那么它可以正常工作。

我为''尝试过其他一些内容,但我似乎无法从Maps文件夹导航到我的app文件夹。我查看的所有示例都指定了该位置的子目录或绝对路径。我有办法可以做../Scripts/app吗?

2 个答案:

答案 0 :(得分:1)

我建议您阅读"Configuring Dojo with dojoConfig""Using Custom Modules with a CDN"

例如Google CDN。

dojo配置,查看属性baseUrl

<script data-dojo-config="async: 1,
               dojoBlankHtmlUrl: '/blank.html',
               baseUrl: '/Scripts',
               packages:[
               { name:'dojo',location:'//ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo/'},
              { name:'app',location:location.pathname.replace(/\/[^/]+$/, '') + 'app'}]"
            src="//ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo/dojo.js">
</script>

之后,测试您的自定义模块

require([
   "dojo/ready",
   "app/basemap"
], function (ready, basemap) {

    basemap.test();

}

答案 1 :(得分:0)

我将我的dojoconfig更改为以下

<script data-dojo-config="
    packages: [ {
        name: 'app',
        location: '//' + window.location.host + '/Scripts/app'
    } ]"
src="//js.arcgis.com/3.7/"></script>

将我的app包设置为http://localhost:53862/Scripts/app