0

我正在尝试为小型 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 可以在节点中加载(!)。我稍后会玩这个 - 令人兴奋!

现在,在这里您可以看到我基本上使用符号链接来使事情正常进行。

服务器端:在“public”下,我有指向“app”和“libs”的符号链接。这样,我可以从 HTML 中访问,/libs/dojo/dojox/form/resources/BusyButton.css或(重要的!)/libs/dojo/dojo/dojo.js/app/main.js(然后使用简单的实例 AppMainScreenrequire(["app/widgets/AppMainScreen" ], function( AppMainScreen){ ...

客户端:我有一个指向最新 Dojo 的符号链接(我的样板文件仍然存在 Dojo 1.8 的问题,所以我现在仍在使用 1.7)。但是,为了在应用程序中进行这项工作:

require(["app/widgets/AppMainScreen" ], function( AppMainScreen){ 

我在 Dojo 中有一个指向“应用程序”的符号链接。

现在:我了解了基础知识(例如,我认为Dojo 中“app”的符号链接可以通过简单地使用 DojoConfig 来解决)。但是...嗯,这是我目前 100% 未优化的、从未构建的树。

我可以请你们给我对这棵树的认可吗?一旦我开始“构建”东西,它会起作用吗?(我离做这件事还有很长的路要走,但我最终会,否则我的[怀孕的]妻子会发疯的!)。避免指向“应用程序”的符号链接是我认为我应该做的事情之一(但话又说回来,我需要这样做吗?)。

谢谢!

默克。

4

1 回答 1

0

虽然不是节点的粉丝(也不是知识渊博),但在我看来,它有一个巨大的 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>
于 2012-08-16T20:57:00.643 回答