3

首先,我们是 Dojo 的新手,可以自由地以“新”方式做事,所以我基本上忽略了文档中 1.7 之前的部分。不过,在比较各种文章、文档和示例脚本时,我仍然感到困惑。

最重要的是,我找不到关于如何为 Dojo 创建和部署自定义构建的简单文章。最具体地说,我们需要部署哪些 .js 和 .css 文件。有很多关于创建构建的文档,但我在部署时没有找到。

我最终收集到,将所有内容构建到单个 dojo.js 中对于移动设备来说是一种合理的做法,我只需从构建目录中提取一个文件并将其部署到我的服务器,但随后我会丢失 CSS 引用,并且试错似乎不是解决这些问题的正确方法。

这是我们当前的具体案例:

<script type="text/javascript">
        require(
                // deviceTheme to auto-detect device styles
                [   
                    "dojox/mobile",
                    "dojox/mobile/parser",
                    "dojox/mobile/deviceTheme"
                ]);
</script>

这是构建配置文件:

dependencies = {
    stripConsole: "normal",

    layers: [
        {
            name: "dojo.js",
            customBase: true,    // prevent automatic inclusion of dojo/main
            dependencies: [
                "dojox.mobile.parser",
                "dojox.mobile",
                "dojox.mobile.deviceTheme"
            ]
        }
    ],

    prefixes: [
        [ "dijit", "../dijit" ],    // example included; not clear why
        [ "dojox", "../dojox" ]
    ]
}

(由dojo-release-1.7.2-src\dojox\mobile\build\build.bat脚本执行。)

所以我想具体的问题是:

  1. 对于这种情况,我应该部署哪些 CSS 文件?
  2. 我一般如何知道要部署哪些文件,包括 CSS 文件?
  3. 我缺少一个好的当前教程吗?
  4. 现有的脚本是最新的吗?例如,为什么mobile-all.profile.js使用dependencies=而不是profile=1.7构建教程描述的?
4

1 回答 1

8

对于这种情况,我应该部署哪些 CSS 文件?

这是有条件的,如果页面使用特定模块并且它有自己的 css 规则,则包含它们。

不是方法,但从 dojo.css(基础、重置)、dijit.css(基础、布局等)、nihilo.css(示例主题)和 android.css(示例主题)开始将是一个很好的基础

  • 如果您想使用主题,请包含“基本名称”,例如 dojox/mobile/themes/iphone/iphone.css
  • 例如,如果 iphone.css 没有“@import”您使用的某些外来小部件,请包括由小部件本身提供的 css(例如,dojox/widget/ColorPicker/ColorPicker.css)。每个小部件的文档 _should not make this.

我一般如何知道要部署哪些文件,包括 CSS 文件?

  • 上传所有文件没有害处,加载程序将决定从缓存构建中获取哪些文件,不理会哪些文件以及在运行时下载哪些文件。
  • 部署一切.. 当你构建一个'action = release'时,所有文件都在定义的dojo(默认值,allways),dijit,dojox和你添加的任何包的前缀内被缩小。
  • 构建会优化工具包树,部署全部,否则您可能会遇到缺少条件包含(例如 Toggler.js 或 acme.js 选择器等)的情况。

我缺少一个好的当前教程吗?

通过'thumbrule',任何 1.6+ 文档都是稳定的,但他们大多说相同。当您启动配置文件时,它可能会经历一些试验和错误(脚本文件的 inline-html 包含顺序是最重要的)。您发布的内容看起来不错,但请考虑 customBase:true 是否必要。

确保您已经在1.6-1.7 和1.8版本中看到了这一点

现有的脚本是最新的吗?例如,为什么 mobile-all.profile.js 使用 dependencies= 而不是 1.7 构建教程描述的 profile=?

您可以使用现有的,开箱即用。然而,构建器正在发生变化,与备受争议的 2.0 版本相抗衡。目前,新方案和常规方案一样被允许。但实际上变量名可以是 foo 或 bar,只是使用变量的值。该文件必须“返回”一个对象。

据我了解,原因是CommonJS Packages/1.0是 AMD 和 builder 1.7+ 的新圣经。然而,它一直是包层次结构所遵循的“拇指”方案——但随着我们接近 2.0,语法很可能会变得越来越严格。(看看你是否可以在#dojo @ irc.freenode.org 上连接 snover)

于 2012-06-29T11:49:00.497 回答