服务器端和胖客户端Web应用程序的文件夹结构

时间:2013-05-25 05:30:06

标签: node.js extjs architecture express directory

目前我使用Node.js作为后端,并为客户端使用extjs或骨干,现在我对文件夹结构感到困惑。

使用express我的文件夹结构如下

appname
  |--controllers
  |--models
  |  |--appmodel.js
  |--public
  |  |--css
  |  |--js // any client-side javascripts
  |--routes
  |  |--router.js
  |--views
  |  |--appview.ejs
  |--app.js

其中app.js是入口点,它使用router.js来处理视图的路由和呈现。如果它只是服务器端开发,这可以正常工作。现在,如果我想为客户端使用ExtJS或Backbone,我应该如何组织我的代码?我应该将其添加到public文件夹还是views

appname
  |--controllers
  |  |--extbasedcontroller.js // correct location?
  |--models
  |  |--appmodel.js
  |  |--extbasedmodels.js // correct location?
  |--public
  |  |--css
  |  |--js
  |  |  |--extjs // extjs files
  |--routes
  |  |--router.js
  |--views
  |  |--appview.ejs
  |  |--extbasedview.ejs // correct location?
  |--app.js

如果是这种情况,我应该在哪里放置我的extjs文件的模型?如果我把它放在models文件夹中,感觉就像是在一个文件夹中混合客户端和服务器代码而且会让人感到困惑......

3 个答案:

答案 0 :(得分:9)

在你的位置,我会这样做:

appname
  |--ServerCode
  |  |--controllers
  |  |--models
  |  |  |--appmodel.js
  |  |--routes
  |  |  |--router.js
  |  |--views
  |  |  |--appview.ejs
  |  |--app.js
  |--public
  |  |--css
  |  |--js // any client-side javascripts
  |  |--models
  |  |--controllers
  |  |--...

主要想法是将公共文件夹置于服务器javascript 文件的范围之外。

请在此处查看示例:https://github.com/madhums/node-express-mongoose-demo/

答案 1 :(得分:2)

只需将整个/webapp放在/public下,这样您就可以在/public/webapp/models

下创建前端模型了
appname
  |--models
  |  |--appmodel.js
  |--public
  |  |  |--webapp // extjs/backbone files
  |  |  |  |--models
  |  |  |  |--controllers
  |  |  |  |--css
  |  |  |  |--js
  |  |  |  |--img
  |  |  |  |--views
  |  |  |  |  |--appview.ejs
  |  |  |  |  |--extbasedview.ejs
  |--routes
  |  |--router.js
  |--app.js

答案 2 :(得分:0)

这是我建议的文件夹结构:

appname
  |--webapp
  |  |--img
  |  |--js
  |  |  |--controllers
  |  |  |  |--controller.js
  |  |  |--something.js
  |  |--css
  |  |--views
  |  |  |-- appview.ejs
  |  |--index
  |  |--404 etc.
  |--app.js
  |--package.json
  |--README
  |-- etc.

我认为它非常整洁且易于导航,因为所有服务器和node_modules都在外面,而我需要的应用程序文件位于“webapp”文件夹中。如果你真的需要一个名为“public”的文件夹(我不记得express是否需要一个)我认为你可以将“webapp”文件夹重命名为“public”,或者将“webapp”文件夹放在“public”中。我还建议使用AngularJS而不是.ejs,但要做你想做的事。 :)