【问题标题】:Building dojo app: layer downloads but not load构建 dojo 应用程序:图层下载但不加载
【发布时间】:2011-11-21 16:18:19
【问题描述】:

我正在尝试使用它提供的构建系统构建一个 Dojo 应用程序。我有一个加载 dojo、dijit 和 dojox 库的主 index.php 文件

项目的结构是这样的:

- 根 - _轮廓 - _发布 --dojo-1.3.2-src -- 迪吉特 ——道场 -- dojox -- 实用程序 --myApp --init.js --folders_with_all_my_code --index.php

在 _profile 文件夹中,我的 myApp.profile.js 包括以下内容:

dependencies = {

    stripConsole    : 'all',
    action      : 'clean,release',
    optimize    : 'shrinksafe',
    releaseName : 'myApp',
    localeList  : 'fr,es,it',

    layers: [
        {
            name        : "../app/init.js",
            resourceName    : "myApp.init",
            dependencies    : [
                  "myApp.init"
            ]
        }
    ],

    prefixes: [
        [ "dijit",  "../dijit" ], 
        [ "dojox",  "../dojox" ],
        [ "app",    "../../app" ]
    ]

};

我正在启动这个脚本来构建应用程序:

cd ../dojo-1.3.2-src/util/buildscripts

./build.bat profileFile=../../../_profile/myApp.profile.js releaseDir=../../../_release

它可以正常构建并按预期设置 _release 目录:

- 根 - _轮廓 - _发布 --我的应用 - 应用程序 -- all_my_code --nls -- init.js.uncompressed.js -- init.js(包含所有压缩依赖项的 2Mb 文件) -- 迪吉特 ——道场 -- dojox -- 实用程序 --dojo-1.3.2-src -- 迪吉特 ——道场 -- dojox -- 实用程序 --myApp -- --index.php

在 index.php 文件中,在构建之前,我包含以下内容:

var djConfig = {
    parseOnLoad: true, 
    usePlainJson: true,
    modulePaths : { 'app' : '../../myApp/app' }
};

script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script
script ... dojo.require('app.init'); ... /script

并且工作正常。但是一旦我编译了我的层,我应该更改指向 dojo.js 的脚本以指向新创建的层并将 dojo.require 指向新的压缩层。由于在我指定的配置文件中,图层的位置与原始 init,js 文件相同,因此我得到了这个:

var djConfig = {
    parseOnLoad: true, 
    usePlainJson: true,
    <s>modulePaths : { 'app' : '../../myApp/app' }</s>
};

<s>script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script</s>
<s>script ... dojo.require('app.init'); ... /script</s>

script ... src="/_release/myApp/dojo/dojo.js"> ... /script
script ... dojo.require('app.init'); ... /script

实际上,当我启动应用程序时,它只正确加载了一个文件,所以我猜路径一切正常。实际上,在 Firebug 日志中,我可以看到 GET 请求,如果展开它,我可以看到所有应用程序都已压缩。然而,在加载它之后它会启动一个异常:

Could not load 'app.init'; last tried '../../myApp/app/init.js'

我不确定,但路径似乎没有问题,因为它正在下载文件 init.js,所以现在我有点困惑。

有什么想法吗?

谢谢!

【问题讨论】:

  • 我正在制作一个结构完全相同的测试项目,但加载了我自己的所有小部件,我只包含了一些依赖项,它工作正常。它正确加载文件并加载应用程序(顺便说一下超快),所以我猜代码中存在某种错误。但是在编译构建系统时在代码中发现了一些 JS 错误,所以我猜如果有任何错误它仍然会告诉我,对吧?如果它可以下载整个文件,为什么不加载应用程序?
  • i18n 文件可能有问题吗?我真的不明白它为什么要创建 nls 文件夹,...
  • 所以,这里的情况:通常会出现错误(无法加载...)如果:找不到文件(不是这个,它会下载它)你忘记了dojo.provide( )文件(不是这个,是第一行)代码中有一个错误:我想一定是那个,但是当应用程序没有构建时它工作正常,我猜dojo builder没有引入错误......

标签: dojo dojo-build


【解决方案1】:

尝试与modulePathsdojoConfig.baseUrl 一起玩

您也可以尝试customBase 属性,这样您只需要加载您的dojo.js,它就会包含所有内容,甚至是您的应用程序。 (https://dojotoolkit.org/reference-guide/1.10/build/customBase.html)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2020-08-01
    相关资源
    最近更新 更多