Node.js项目的文件夹结构

我注意到Node.js项目经常包含这样的文件夹:

/ libs,/ vendor,/ support,/ spec,/ tests

这些是什么意思? 他们之间有什么不同,我应该在哪里包含引用的代码?

关于你提到的文件夹:

  • / libs通常用于自定义类/函数/模块
  • / vendor/ support包含第三方库(当使用git作为源代码控制时,添加为git子模块)
  • / spec包含BDDtesting的规范
  • / tests包含应用程序的unit testing(使用testing框架,参见这里 )

注意:由于NPM引入了一个干净的包pipe理,因此/ vendor和/ support都被弃用。 build议使用NPM和package.json文件处理所有第三方依赖关系

在构build一个相当大的应用程序时,我推荐以下额外的文件夹(特别是如果您使用某种types的MVC- / ORM-框架,如express或mongoose ):

  • /模型包含所有的ORM模型(在mongoose中称为Schemas
  • /视图包含您的视图模板(使用快速支持的任何模板语言)
  • / public包含所有静态内容(图像,样式表,客户端JavaScript)
    • / assets / images包含图像文件
    • / assets / pdf包含静态pdf文件
    • / css包含样式表(或由css引擎编译的输出)
    • / js包含客户端JavaScript
  • / controllers包含你的所有快速路由,由应用程序的模块/区域分开(注意:当使用express的自引导function时,这个文件夹被称为/ routes

我习惯了这种方式来组织我的项目,我认为它的工作得很好。

基于CoffeeScript的Express应用程序更新(使用连接资产 ):

  • / app包含你编译的JavaScript
  • / assets /包含所有需要编译的客户端资源
    • / assets / js包含您的客户端CoffeeScript文件
    • / assets / css包含所有的LESS /手写笔样式表
  • / public /(js | css | img)包含不被任何编译器处理的静态文件
  • / src包含所有服务器端特定的CoffeeScript文件
  • / test包含所有的unit testing脚本(使用您select的testing框架实现)
  • / views包含所有的快速视图(不pipe是玉石,ejs还是其他模板引擎)

有一个关于GitHub的讨论,因为类似于这个问题: https : //gist.github.com/1398757

您可以使用其他项目进行指导,在GitHub中search:

  • 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目录中的DB和APP文件夹。

这是间接的答案,关于文件夹结构本身,非常相关。

几年前,我有同样的问题,采取了一个文件夹结构,但不得不做很多目录后来移动,因为该文件夹的目的不同于我已经在互联网上阅读,也就是说,一个特定的文件夹具有什么一些文件夹上不同人的不同含义。

现在,做了多个项目,除了解释所有其他的答案,在文件夹结构本身,我强烈build议遵循Node.js本身的结构,可以看到: https : //github.com/ nodejs /节点 。 它有很多细节,比如棉绒和其他的,它们有什么文件和文件夹结构以及在哪里。 一些文件夹有一个自述文件,解释该文件夹中的内容。

从上面的结构开始是好事,因为有一天会有新的需求进来,但是你将会有一个改进的空间,因为Node.js本身已经被多年的维护了。

希望这可以帮助。