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

目前我使用的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,应该如何组织我的代码? 我应该将其添加到公用文件夹或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文件夹,感觉就像我在一个文件夹中混合客户端和服务器代码,这将是混乱…

在你的地方,我会那样做:

 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/

只需将整个/webapp放在/public下,就可以在/public/webapp/models下创build前端的/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 

下面是我build议的文件夹结构:

 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”文件夹中。 如果你真的需要一个名为“公共”的文件夹(我不记得如果expression需要或不),我认为你可以重命名“webapp”文件夹“公开”,或“公共”的“webapp”文件夹。 我也build议使用AngularJS而不是.ejs,但是要做你想做的事情。 🙂