2011-08-25 86 views
20

我正在寻找实施骨干到一个大型的网络项目与多个“应用程序”,将使用它,我想弄清楚组织我的文件的好方法。这两个我来了这么远是:你如何组织你的Backbone文件?

js 
+- models 
| +- search 
| | +- result.js 
| | +- ... 
| +- cart 
| | +- item.js 
| | +- ... 
| ... 
+- collections 
| +- search 
| | +- results.js 
| | +- ... 
| +- cart 
| | +- items.js 
| | +- ... 
| ... 
+- views 
| +- search 
| | +- resultRow.js 
| | +- ... 
| +- cart 
| | +- itemRow.js 
| | +- ... 
| ... 
+- routers 
| +- search 
| +- cart 
| ... 

而且

js 
+- search 
| +- models 
| | +- result.js 
| | +- ... 
| ... 
| +- collections 
| | +- results.js 
| | +- ... 
| ... 
| +- views 
| | +- resultRow.js 
| | +- ... 
+- cart 
| +- models 
| | +- item.js 
| | +- ... 
| ... 
| +- collections 
| | +- items.js 
| | +- ... 
| ... 
| +- views 
| | +- itemRow.js 
| | +- ... 
+- routers 
| +- search 
| +- cart 
| ... 

我倾向于后者,因为它有网站的部分之间更清晰的线条和应用程序保持在一起,但我们目前的后端框架结构更像前者。

+0

将模型和集合放在一个文件夹中,将它们称为result.js和result_collection.js。 – Vojto

回答

21

我会去修改第二个版本......基本上,将m,v和c文件夹放到您的每个网站部分中。当文件名和类名已经反映它们的内容时,真的不需要将它们分离到子文件夹中。

js 
+- search 
| +- result.js 
| +- results.js 
| +- resultRow.js 
| +- ... 
+- cart 
| +- item.js 
| +- items.js 
| +- itemRow.js 
| +- ... 
+- routers 
| +- search 
| +- cart 
| ... 

看这个布局,我仍然知道,“项目”是一个模型,“项目”是一个集合,“itemRow”是一个观点,因为这是你已经设置了该公约。在我看来,添加额外的文件夹名称层只会增加复杂性并且不会增加任何值。

也 - (你可能知道这一点,但如果其他人阅读这篇文章不...)一定要使用像require.js的东西来巩固/缩小所有的js到一个单一的文件,然后部署到您的生产环境。保持这样组织的代码非常适合开发和调试目的。但是当生产系统使用代码时,将其分解为多个文件会给最终用户造成严重的延迟。 require.js通过提供一种简单的方法解决了这个问题,在开发过程中既有两个组织的文件,又有一个用于生产的缩小文件。

+1

是的,我们使用自定义服务器端打包器,它使用.htaccess规则通过它传递所有js文件请求,然后将文件捆绑在一起,然后依赖关系决定是否缩小取决于环境。它是缓存的服务器端和客户端,直到新的推送生成新的缓存密钥(在开发中,此缓存密钥被覆盖为当前时间)。 – JaredMcAteer

+0

还有什么其他替代方法需要js,你推荐?只是为了将所有文件打包到一个文件中(可以缩小) – Samson

+0

我使用Grunt.js。这很棒。 :) http://gruntjs.com –