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

Gan*_*ngX 12 architecture directory extjs node.js express

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

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

appname
  |--controllers
  |--models
  |  |--appmodel.js
  |--public
  |  |--css
  |  |--js // any client-side javascripts
  |--routes
  |  |--router.js
  |--views
  |  |--appview.ejs
  |--app.js
Run Code Online (Sandbox Code Playgroud)

其中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
Run Code Online (Sandbox Code Playgroud)

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

Jul*_*ien 9

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

appname
  |--ServerCode
  |  |--controllers
  |  |--models
  |  |  |--appmodel.js
  |  |--routes
  |  |  |--router.js
  |  |--views
  |  |  |--appview.ejs
  |  |--app.js
  |--public
  |  |--css
  |  |--js // any client-side javascripts
  |  |--models
  |  |--controllers
  |  |--...
Run Code Online (Sandbox Code Playgroud)

主要思想是将公用文件夹放在服务器javascript文件的范围之外.

请参阅此处的示例:https://github.com/madhums/node-express-mongoose-demo/