我正在尝试为小型Dojo应用程序设计最佳目录结构(这是一个基本的预订系统)。 我刚刚写完登录/注册。
以下是我现在所拥有的:
.
├── app
│ ├── client
│ │ ├── JsonRest.js
│ │ ├── lib
│ │ │ ├── defaultSubmit.js
│ │ │ ├── globals.js
│ │ │ ├── globalWidgets.js
│ │ │ ├── Logger.js
│ │ │ └── stores.js
│ │ ├── login.js
│ │ ├── main.css
│ │ ├── main.js
│ │ ├── register.js
│ │ ├── rrl.css
│ │ ├── TODO.txt
│ │ ├── validators.js
│ │ └── widgets
│ │ ├── _AjaxValidatorMixin.js
│ │ ├── AlertBar.js
│ │ ├── AppMainScreen.js
│ │ ├── BusyButton.js
│ │ ├── css
│ │ │ └── AlertBar.css
│ │ ├── Dashboard.js
│ │ ├── LoginForm.js
│ │ ├── RegisterForm.js
│ │ ├── SearchPage.js
│ │ ├── StackFading.js
│ │ ├── _StackFadingMixin.js
│ │ ├── TabFading.js
│ │ ├── templates
│ │ │ ├── LoginForm.html
│ │ │ ├── RetypePassword.html
│ │ │ └── SearchPage.html
│ │ ├── ValidationEmail.js
│ │ ├── ValidationPassword.js
│ │ ├── ValidationUsername.js
│ │ ├── ValidationWorkspace.js
│ └── server
│ ├── AppErrorHandler.js
│ ├── auth.js
│ ├── db.js
│ ├── globals.js
│ ├── node_modules
│ │ ├── express
│ │ ├── jade
│ │ ├── mongodb
│ │ └── mongoose
│ ├── public
│ │ ├── app -> ../../client/
│ │ └── libs -> ../../../libs
│ ├── routes
│ │ └── routes.js
│ ├── server.js
│ ├── test.js
│ └── views
│ ├── index.jade
│ ├── login.jade
│ └── register.jade
├── libs
├── build-report.txt
├── dojo -> dojo-1.7.1
├── dojo-1.7.1
│ ├── app -> ../../app/client
│ ├── dijit
│ ├── dojox
│ ├── dojo
│ └── util
└── dojo-1.8.0
├── app -> ../../app/client
├── dijit
├── dojox
├── dojo
└── util
背后的想法是:
“app”目录将位于某个位置的git存储库中(实际上是我制作一个存储库的时间)。它有目录“client”(所有客户端代码)和“server”(节点代码)。
在“libs”中,我将添加dgrid等内容。我还注意到Dojo 1.8可以在节点(!)中加载。我稍后会玩这个 - 激动人心!
现在,在这里你可以看到我基本上使用了符号链接来使事情有效。
服务器端:在“公共”下,我有“app”和“libs”的符号链接。这样,我就可以从HTML访问诸如/libs/dojo/dojox/form/resources/BusyButton.css
或(重要!)/libs/dojo/dojo/dojo.js
和/app/main.js
之类的内容(然后使用简单的require(["app/widgets/AppMainScreen" ], function( AppMainScreen){ ...
实例AppMainScreen
客户端:我有一个最新Dojo的符号链接(我的样板文件仍然存在Dojo 1.8的问题,所以我现在仍在使用1.7)。但是,为了在app中完成这项工作:
require(["app/widgets/AppMainScreen" ], function( AppMainScreen){
我在Dojo中有一个符号链接“app”。
现在:我意识到基础知识(我认为在Dojo中的“app”的符号链接是通过简单地使用DojoConfig解决的)。但是......好吧,这是我目前100%未经优化,从未建造过的树。
我可以问你们这些树给我批准了吗?一旦我开始“建造”东西,它会起作用吗? (我离这样做还有几英里远,但最终我的[怀孕]妻子会疯了!)。避免将符号链接添加到“app”是我认为我应该做的事情之一(但是,我还需要这样做吗?)。
谢谢!
Merc的。
答案 0 :(得分:0)
虽然不是节点的粉丝(也不知道节点),但它看起来像是有一个huuge javascript库:)
我建议你应该考虑制作一个buildprofile并使用前缀键来设置脚本的位置。作为构建的结果,您将自动获得与dojo,dijit,dojox共存的“app”文件夹。
实际上,我建议一旦你的dojo应用层有一个单独的存储库,只需在SDK根目录中进行结账,例如: :
wget download.dojotoolkit.org/dojotoolkit-1.7.2-src.tar.gz -O djsrc.tar.gz && tar xfz djsrc.tar.gz && rm djsrc.tar.gz
cd dojotoolkit-1.7.2-src/
svn checkout http://example/mylibrary app
sh utils/buildscripts/build.sh --profile app/package.profile --release /var/nodejs/docroot/lib/
在您的主文档根目录(/ lib)中的其他地方开发app.widgets完全没有任何害处。您可以简单地设置一个全局变量来告诉加载器在哪里查看。
如果构建,没有什么是必要的,但就你当前的树而言,尝试这样的事情
<script>
var isDevelopement = true;
var dojoConfig = {
packages : (isDevelopement) ? [ name: 'app', location: '/app/client/' ] : []
}
</script>