我注意到Node.js项目通常包含以下文件夹:
/ libs,/ vendor,/ support,/ spec,/ tests
这些到底是什么意思? 它们之间有什么区别,我应该在哪里包含引用的代码?
#1楼
由于存在与此问题类似的问题,因此在GitHub上进行了讨论: https : //gist.github.com/1398757
您可以使用其他项目作为指导,在GitHub中搜索:
- ThreeNodes.js-在我看来,似乎具有不适合每个项目的特定结构;
- 更轻-更简单的结构,但缺乏组织性;
最后,在书中( http://shop.oreilly.com/product/0636920025344.do )提出了以下结构:
├── index.html
├── js/
│ ├── main.js
│ ├── models/
│ ├── views/
│ ├── collections/
│ ├── templates/
│ └── libs/
│ ├── backbone/
│ ├── underscore/
│ └── ...
├── css/
└── ...
#2楼
我的项目架构中的更多示例可以在这里看到:
├── 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文件夹。
#3楼
这是间接的答案,关于文件夹结构本身,非常相关。
几年前,我有一个相同的问题,采用了文件夹结构,但后来不得不做很多目录移动,因为该文件夹的目的与我在互联网上阅读的目的不同,即特定文件夹的功能不同人在某些文件夹上的含义不同。
现在,除了对所有其他答案进行解释之外,在文件夹结构本身上做了多个项目,我强烈建议遵循Node.js本身的结构,该结构可以在以下网址查看: https : //github.com/ nodejs / node 。 它详细介绍了所有内容,例如linter和其他文件,它们具有什么文件和文件夹结构以及位置。 有些文件夹具有自述文件,说明该文件夹中的内容。
从上面的结构开始是一个好习惯,因为有一天会有新的要求出现,但是您将有一个改进的余地,因为Node.js本身已经被它所遵循,并且已经维护了很多年。
希望这可以帮助。
#4楼
重要的是要指出,关于什么是最好的方法还没有达成共识,并且相关框架通常不会强制执行或奖励某些结构。
我发现这是一个令人沮丧的巨大开销,但同样重要。 它是样式指南问题的轻描淡写版本(但IMO更重要)。 我喜欢指出这一点,因为答案是相同的: 只要定义明确且连贯,使用哪种结构都没有关系 。
因此,我建议寻找您喜欢的综合指南,并明确说明该项目基于此。
这并不容易,特别是如果您是新手! 期望花费数小时进行研究。 您会发现大多数指南都推荐类似MVC的结构。 尽管几年前这可能是一个不错的选择,但如今并不一定如此。 例如, 这是另一种方法 。
#5楼
关于您提到的文件夹:
-
/libs
通常用于自定义classes/functions/modules
-
/vendor
或/support
包含第三方库(使用git作为源代码控制时添加为git子模块) -
/spec
包含BDD测试的/spec
。 -
/tests
包含应用程序的单元测试(使用测试框架,请参见此处 )
注意:自NPM引入了干净的程序包管理以来, /vendor
和/support
均已弃用。 建议使用NPM和package.json文件处理所有第三方依赖关系
在构建较大的应用程序时,我建议使用以下附加文件夹(尤其是在使用某种MVC- / ORM-Framework(例如express或mongoose )时):
-
/models
包含您所有的ORM模型(在猫鼬中称为Schemas
) -
/views
包含您的视图模板(使用express中支持的任何模板语言) -
/public
包含所有静态内容(图像,样式表,客户端JavaScript)-
/assets/images
包含图像文件 -
/assets/pdf
包含静态pdf文件 -
/css
包含样式表(或CSS引擎编译的输出) -
/js
包含客户端JavaScript
-
-
/controllers
包含所有快速路由,由应用程序的模块/区域分隔(注意:使用express的自举功能时,此文件夹称为/routes
)
我习惯了以这种方式组织项目,我认为效果很好。
基于CoffeeScript的Express应用程序的更新(使用connect-assets ):
-
/app
包含已编译的JavaScript -
/assets/
包含所有需要编译的客户端资产-
/assets/js
包含您的客户端CoffeeScript文件 -
/assets/css
包含所有的LESS / Stylus样式表
-
-
/public/(js|css|img)
包含未由任何编译器处理的静态文件 -
/src
包含所有服务器端特定的CoffeeScript文件 -
/test
包含所有单元测试脚本(使用您选择的测试框架来实现) -
/views
包含您所有的明确视图(无论是jade,ejs还是任何其他模板引擎)
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3195207