回答
关于文件夹:
- /库通常用于自定义类/功能/模块
- /供应商或/支撑包含第三方库(添加作为GIT中 子模块使用git作为源控件时)
- /spec包含BDD测试的规范。
- /测试包含单元测试用于应用(使用测试 框架,见 here)
注:由于NPM引入干净包管理两者/供应商和/支撑已被弃用。建议使用NPM和包处理所有第三方依赖项。JSON文件
当建立一个相当大的应用程序,以下笔者推荐的其他文件夹(尤其是如果你正在使用某种形式的MVC-/ORM框架像express或mongoose):
- /模型包含了所有的ORM模型(猫鼬称为
Schemas
) - /视图包含您的视图模板(使用快递支持的任何模板语言)
- /公共包含所有静态内容(图片,样式表,客户端的JavaScript)
- /资产/图像包含图像文件
- /资产/ PDF包含静态的PDF文件
- /CSS包含样式表(或编译的输出通过一个CSS发动机)
- /JS包含客户端的JavaScript
- 包含所有的快递路线,您的应用程序的模块/区域隔开/控制器(注:使用快递的引导功能时,该文件夹被称为/路线)
我习惯了这种方式来组织我的项目,我认为它工作得很好。
更新基础的CoffeeScript-Express应用程序(使用connect-assets):
- /应用包含您编译的JavaScript
- /资产/包含需要编译 所有客户端资产
- /assets/js包含您的客户端的CoffeeScript文件
- /资产/ CSS包含所有LESS /手写笔样式表
- /公/(JS | CSS |图片)包含您所不处理静态文件任何编译器
- /src目录包含了所有你的服务器端特定的CoffeeScript文件
- /测试包含了所有的单元测试脚本(使用您选择的测试框架实现)
- /视图包含所有发表看法(无论是玉石,EJS或任何其他模板引擎)
没有因为类似这样的问题在GitHub上的讨论: https://gist.github.com/1398757
您可以使用其他项目的指导,在GitHub上搜索:
- ThreeNodes.js - 在我看来,似乎有不适合每个项目的具体结构;
- 打火机 - 更简单的结构,但缺乏一点组织;
最后,在一本书(http://shop.oreilly.com/product/0636920025344.do)表明,这种结构:
- 的index.html
- JS/
- main.js
- 型号/
- 意见/
- collections/ 个
- 模板/
- 库/
- 骨干/
- 下划线/
- ...
- CSS/
- ...从我的项目架构
更多例子,你可以在这里看到:基本上
├── Dockerfile
├── README.md
├── config
│ └── production.json
├── package.json
├── schema
│ ├── create-db.sh
│ ├── db.sql
├── scripts
│ └── deploy-production.sh
├── src
│ ├── app -> Containes API routes
│ ├── db -> DB Models (ORM)
│ └── server.js -> the Server initlializer.
└── test
,分离数据库逻辑应用程序和SRC目录中的APP文件夹。
前端应用程序获取自己的文件夹(使用自己的'package.json'和类似的文件夹结构)? – wal 2017-05-12 00:09:30
@wal我更喜欢将前端项目分离到另一个存储库,因为它更有组织 – 2017-08-09 18:46:15
这是间接的答案,关于文件夹结构本身,非常相关。
几年前我有同样的问题,采取了一个文件夹结构,但不得不做很多目录后来移动,因为该文件夹的目的不同于我在互联网上阅读的目的,也就是什么特定文件夹对于某些文件夹上的不同人员具有不同的含义。
现在,除了解释所有其他答案以外,还对文件夹结构本身做了多个项目,我强烈建议遵循Node.js本身的结构,该结构可以在以下位置看到:https://github.com/nodejs/node。它有很多细节,例如棉绒和其他人,他们有什么文件和文件夹结构以及在哪里。一些文件夹有一个自述文件,解释该文件夹中的内容。
从上面的结构开始是很好的,因为有一天会有新的需求进来,但是您将有一个改进的范围,因为它已经被多年来维持的Node.js本身所遵循。
希望这会有所帮助。
重要的是要指出,关于什么是最佳方法和相关框架一般不强制或奖励某些结构没有共识。
我觉得这是一个令人沮丧和巨大的开销,但同样重要。它是style guide issue的一种低调版本(但IMO更重要)。我喜欢指出这一点,因为答案是一样的:只要明确定义和连贯,您使用的结构并不重要。
因此,我会建议寻找一份您喜欢的综合指南,并明确说明该项目是基于此。
这并不容易,特别是如果你是新手!预计花上几个小时的研究。你会发现大多数指南推荐了一个类似于MVC的结构。虽然几年前这可能是一个坚实的选择,但现在不一定是这样。例如here's another approach。
- 1. 启动node.js项目
- 2. 没有package.json的Node.js项目
- 3. 开源Node.js(和Express)项目
- 4. Node.js pm2多项目启动?
- 5. 的Node.js - 广东话运行项目
- 6. 为了在项目的环
- 7. 了解iPhone项目的Entitlements.plist
- 8. 了JavaFx的WebView项目
- 9. 了解node.js
- 10. Angular 2和Node.js项目结构
- 11. Node.js或Java在线出租车项目
- 12. 使用Travis-CI进行Node.js项目
- 13. Node.js如何构建HTTP REST APi项目?
- 14. Node.js Express - 公开运行项目
- 15. 在visual studio中使用socket.io node.js项目
- 16. C项目不知道我的方式做了我的项目
- 17. Android Listview混合了项目
- 18. 了以“项目”为重点
- 19. 了解数组项目
- 20. Spring.NET项目死了吗?
- 21. 了解Eclipse CDT项目
- 22. 欧拉项目#163了解
- 23. urlrewriter.net项目停止了吗?
- 24. 项目欧拉9了解
- 25. 如何在NPM上处理git项目中的Node.js依赖项?
- 26. jquery removeClass除了第一个项目以外的所有项目?
- 27. 了解Express中的vhost Node.js
- 28. 了解node.js服务器的目录结构和安全性
- 29. 我的Laravel项目除了主页
- 30. 卡住了“实用的Django项目”
你会在哪里把你的客户端JS,CSS,图像? 会建议在公共文件夹类似的文件夹结构,如: 公共/资产 公共/资产/ CSS 公共/资产/图像 公共/资产/文档 公共/库 公共/支持 公共/测试 大众/模型 大众/观点 公共/控制器 ? – ezmilhouse 2011-08-23 11:00:30
expressjs创建./routes目录,是否与您的示例中的./controllers相同? – chovy 2012-09-17 03:02:10
你为什么不用这个建议创建一个Yeoman发电机?它可能成为一个标准。 – 2013-06-07 12:28:15