我真的不知道从哪里开始。
我已经阅读了每个教程,文章和博客文章,试图获得dojo为其工作的一件事,并且从来没有让我有这样的问题让某些东西起作用,至少只是一点点。我发现了文档上的火焰战争以及有工作脚本的人,但没有发布或概述。在SO,我发现这是一个非常普遍的问题,但没有一半时间解决。
免责声明:忘记1.6。我从来没用过1.6。因此,我在网上找到的资源有一半是无效的,我的书也是如此。我们走了。
关于使用此格式的大量帖子之间有什么区别:
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)人们似乎只是“知道”。我还没有找到任何关于两种语法(syntaxis?syntax's?)之间的差异的文章,它们与新的AMD结构和构建系统的重写有关。
我见过的最接近的是对象名称无关紧要,声明也没有。它可以是一个“全局”变量(省略var
关键字),或者不是,只要返回的对象包含必要的信息,名称就无关紧要。
第二种格式给出了“意外的字符串”错误,并且99%的时间都失败了,即使使用复制/粘贴的配置文件也是如此。
究竟需要什么?! Dojo的文档说package.json和appName.profile.js文件是必需的,但是在我看过的所有教程中,只有配置文件是必需的,并且用于此事。因此,不使用Dojo主网站上有关建筑的一半信息。所以........?
Dojo网站表示要使用src
版本进行构建。 Nabble的一个人说你必须得到svn
版本,因为src版本已经“建成”了。
...那么谁先上了?
是否有人,任何人都有一个工作目录结构和他们想要分享的profile.js
文件?我试过了一切。我的意思是一切,以获得一个构建。一个建议是使用空的配置文件对象。这有效,而且没用。
另一个建议是使用dojo样板构建。如果有任何改动,模板有什么用呢? 你尝试了什么是一个没有实际意义的点,正如我用Tony Stark所说的那样,“每个已知[javascript对象变体]的每个排列。没有任何作用。”
我很快就失去了信心。并不是因为经过数小时的试验和失败后我无法弄明白,而是因为很多人都在同一条船上。它正在沉沦。
所以,我的最后一个请求是,有人可以,请说明这个构建系统是如何工作的,而不只是链接到谷歌上已经发现的读取和重读的链接?
如何......你...配置一个Dojo构建配置文件......并执行它......没有错误?!令人疯狂的是这个系统是多么糟糕A)记录和B)实施,而我在它C) 授课。这太累了。
我去过的一些(很多)网站:
非常感谢@xesxz和@Craig Swing。经过一些小的事情,我得到了一个构建的配置文件,让我得到我需要的东西!
答案 0 :(得分:7)
关于使用此格式的大量帖子之间的区别是什么......
您的第一个示例是针对pre Dojo 1.7版本。如果您使用1.7或更高版本,则需要第二个示例。
Dojo网站说要使用src版本进行构建。 Nabble的一个人 说你必须得到svn版本,因为src版本已经存在 “内置”。
...那么谁先上了?
您需要http://dojotoolkit.org/download/
中的SDK在页面上,它被标记为“来源”。它包含一个util目录,其中包含所有构建脚本,以及包含非构建版本的dojo文件的其他目录。
是否有人,任何人都有一个工作目录结构和 他们想分享的profile.js文件?
我正在处理的项目与@xesxz发布的项目结构相似。但是,我尝试使用boot: true, customBase: true
但没有成功。以下是我的个人资料。
(我的目录结构有点不同,所以路径与@xesxz发布的路径不匹配。)
在我的应用中,我将包含以下内容
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
}
}
};
})();
如何......你...配置一个Dojo构建配置文件......并执行它......没有错误?
我使用node来构建。这将在包含构建配置文件的目录中执行。
node dojo-release-1.8.3-src/dojo/dojo.js load=build --profile core.profile.js --release --version=1.8.3
我的建议是尝试使用一个非常简单的自定义窗口小部件来完成构建。如果可行,那么你真正的小部件
关于unexpected String
,
put-selector
和xStyle
答案 1 :(得分:6)
我刚刚完成了这个过程,我完全理解你的挫折感。我尝试了Dojo Boilerplate没有成功。然后我按照Dojo教程。我的目录是扁平的,像这样,
____app
| |__app.profile.js
| |__package.json
| |__app.js (main js file, which requires other modules)
| |__other.js
|
|__dojo
|__dijit
|__dojox
|__util
|__application.profile.js
应用程序构建配置文件(application.profile.js)是从Dojo Boilerplate复制的,看起来像这样,
var profile = {
basePath: '.',
action: 'release',
cssOptimize: 'comments',
mini: true,
optimize: 'closure',
layerOptimize: 'closure',
stripConsole: 'none',
selectorEngine: 'acme',
packages: [
{name: 'dojo', location: 'dojo'},
{name: 'dijit', location: 'dijit'},
{name: 'dojox', location: 'dojox'},
{name: 'util', location: 'util'},
{name: 'app', location: 'app'}
],
layers: {
'dojo/dojo': {
include: ['dojo/i18n', 'dojo/domReady'],
boot: true,
customBase: true
},
'app/app': {}
},
staticHasFeatures: {
'dojo-trace-api': 0,
'dojo-log-api': 0,
'dojo-publish-privates': 0,
'dojo-sync-loader': 0,
'dojo-xhr-factory': 0,
'dojo-test-sniff': 0
}
};
在我自己的app目录中,我有package.json(指定" dojoBuild":" package.js"属性)和包构建配置文件package.js文件,看起来像这样,
var profile = {
resourceTags: {
test: function (filename, mid) {
return false;
},
copyOnly: function (filename, mid) {
return (!/\.js$/.test(filename) && !/\.css$/.test(filename));
},
amd: function (filename, mid) {
return !this.copyOnly(filename, mid) && /\.js$/.test(filename);
},
miniExclude: function (filename, mid) {
return mid in {
'app/package': 1
};
}
};
然后我运行直到/ buildscripts / build.sh --profile application.profile.js。我仍然会遇到很多错误,但最后,我将我的版本放在发布目录中,它似乎工作正常。我的下一步是找出那些错误。 我希望这会有所帮助。