我真的不知道从哪里开始。
我浏览了每一篇教程、文章和博客文章,试图让 dojo 能够让它发挥作用,但我从来没有遇到过这样的问题,至少只是一点点。我发现文档和工作脚本的人之间存在激烈的争吵,但没有任何发布或概述。在 SO,我发现这是一个非常常见的问题,但有一半的时间没有解决。
免责声明:忘记 1.6。我从来没有用过1.6。因此,我在网上找到的一半资源都是无效的,我的书也是如此。我们开始吧。
问题 1
很多关于使用这种格式的帖子有什么区别:
dependencies = {
stripConsole: "all",
action: "release",
optimize: "shrinksafe",
// Omitted options...
layers: [{
name: "dojo.js",
customBase : true,
dependencies: [
"dojox.gauges.AnalogNeedleIndicator",
"myApp.smartmix"]
}
],
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
[ "myApp", "../../../myApp" ]
]
};
...vs 这种格式:
var profile = {
basePath: './',
stripConsole: 'all',
selectorEngine: 'lite',
layers: {
'dojo/dojo': {
include: ['dojo/dojo', 'dojo/domReady', 'dojo/_base/declare'],
boot: true,
customBase: true
},
'dgrid/dgrid': {
include: ["dgrid/List", "dgrid/OnDemandGrid", "dgrid/Selection", "dgrid/Keyboard", "dgrid/test/data/perf"]
}
}
// static-has-features removed
};
layers
对象在两者之间有两个非常重要的区别,要么 A)每个人似乎只是“知道”,没有任何理由或理性,或者 B)人们似乎只是“知道” ”。我还没有找到任何关于这两种语法(语法?语法?)之间差异的文章,这与新的 AMD 结构和构建系统的重写有关。
我见过的最接近的是对象名称无关紧要,声明也无关紧要。它可以是“全局”变量(省略 var
关键字),也可以不是,只要返回的对象包含必要的信息,名称就无关紧要。
第二种格式给我一个“意外字符串”错误,并且 99% 的时间都失败了,即使是复制/粘贴的配置文件也是如此。
问题 2
究竟需要什么?! Dojo 的文档说 package.json 和 appName.profile.js 文件是必需的,但在我见过的所有教程中,只需要和使用配置文件。因此,Dojo 的主要网站上有一半关于建筑的信息没有被使用。所以…………?
Dojo 网站说要使用 src
版本进行构建。 Nabble 的一个人说你必须得到 svn
版本,因为 src 版本已经“构建”了。
...那么谁先上呢?
问题 3
有没有人愿意分享一个工作目录结构和 profile.js
文件?我已经尝试了一切。我的意思是一切,得到一个构建。一个建议是使用一个空的配置文件对象。这行得通,而且没用。
另一个建议是使用 dojo 样板构建。如果任何更改破坏了模板,它有什么用? 你尝试了什么是一个有争议的问题,正如我所尝试的,用 Tony Stark 的话来说,“每个已知 [javascript 对象变体] 的每个排列。没有任何效果。”
我很快就会失去信心。不是因为经过数小时的反复试验我无法弄清楚,而是因为很多人都在同一条船上。下沉了。
最后一个问题
所以,我的最后一个请求是,请有人能解释一下这个构建系统是如何工作的,而不仅仅是指向在 Google 上可以找到的已经变紫的阅读和重新阅读链接的链接?
如何...您...配置 Dojo 构建配置文件...并执行它...没有错误?!这个系统的糟糕程度太疯狂了 A) 记录在案和 B) 实现,而我正在使用它 C) 教的。太累了。
我访问过的一些(许多)网站:
- Nabble SVN vs. SDK
- SitePen tutorial that... doesn't produce.
- One "Boilerplate" Profile (from SitePen)
- Dojo Boilerplate Profile (github)
- Dojo Tutorial
更新
非常感谢@xesxz 和@Craig Swing。经过一些小事后,我得到了一个构建配置文件,它可以提供我需要的东西!
最佳答案
What's the difference between a LOT of posts about using this format...
您的第一个示例是针对 Dojo 1.7 之前的构建。如果您使用的是 1.7 或更高版本,则需要第二个示例。
The Dojo site says to use the src release for builds. A guy at Nabble said you must get the svn version as the src version is already "built".
... so who's on first?
您需要来自 http://dojotoolkit.org/download/ 的 SDK
在页面上它被标记为“来源”。这包含一个包含所有构建脚本的 util 目录,以及包含非构建版本的 dojo 文件的其他目录。
Does anyone, anyone at all, have a working directory structure and profile.js file they'd care to share?
我正在从事的项目与@xesxz 发布的项目具有相似的结构。但是,我尝试使用 boot: true, customBase: true
没有成功。以下是我的个人资料。
(我的目录结构有点不同,所以路径与@xesxz 发布的不匹配)。
在我的应用程序中,我将包含以下内容
- dojo/dojo.js
- myCore/core.js
- myAppModuleX/app.js,其中 X 是我在页面上使用的特定模块。
core.profile.js(用于构建)
var profile = (function(){
var coreRequires = [
"dojo/_base/declare",
"dojo/_base/fx",
"dojo/_base/lang",
"dojo/currency",
"dojo/fx",
"dojo/number",
"dojo/on",
"dojo/query",
"dijit/dijit",
"myCore/ACoreWidget"
];
return {
basePath: "./dojo-release-1.8.3-src",
releaseDir: "../../DEV-REL",
action: "release",
cssOptimize: "comments",
selectorEngine: "acme",
packages:[{
name: "dojo",
location: "dojo"
},{
name: "dijit",
location: "dijit"
},{
name: "dojox",
location: "dojox"
},{
name: "myCoreModule",
location: "../myCore"
},{
name: "myAppModule1",
location: "../myAppModule1"
},{
name: "myAppModule2",
location: "../myAppModule2"
}],
layers: {
"myCore/core": {
include: coreRequires
},
"myAppModule1/app": {
include: [
"myAppModule1/WidgetX"
],
exclude: coreRequires
},
"myAppModule2/app": {
include: [
"myAppModule2/WidgetY"
],
exclude: coreRequires
}
}
};
})();
How... do you... configure a Dojo build profile... and execute it... without error?
我使用节点来构建。这将在包含构建配置文件的目录中执行。
node dojo-release-1.8.3-src/dojo/dojo.js load=build --profile core.profile.js --release --version=1.8.3
我的建议是尝试使用非常简单的单个自定义小部件来完成构建。如果这行得通,那么你真正的小部件
关于意外字符串
,
- 您的所有小部件都使用新的 AMD 语法吗?
- 你有 dgrid,但我相信它依赖于
put-selector
和xStyle
关于build - Dojo 1.8 和构建(或缺少),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404173/