app - node + dojo的最佳目录结构:这会有用吗?

时间:2012-08-16 05:31:15

标签: javascript node.js dojo

我正在尝试为小型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的。

1 个答案:

答案 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>