我注意到了那个 node .js项目通常包括以下文件夹:

/libs、/vendor、/support、/spec、/tests

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

推荐答案

关于你提到的文件夹:

  • 100通常用于定制classes/functions/modules
  • 100101包含第三方库(添加为git
  • 100包含BDD测试的规范.
  • 101包含应用程序的单元测试(使用测试

NOTE: both 100 and 101 are deprecated since NPM introduced a clean package management. It's recommended to handle all 3rd-party dependencies using NPM and a package.json file

在构建一个相当大的应用程序时,我推荐以下额外的文件夹(尤其是如果您使用某种MVC-/ORM框架,比如expressmongoose):

  • (你的100型mongoose 包含所有mongoose )
  • 100包含视图模板(使用express支持的任何模板语言)
  • /public contains all static content (images, style-sheets, client-side JavaScript)
    • 100包含图像文件
    • 100包含静态pdf文件
    • 100包含样式表(或css引擎编译的输出)
    • 100包含客户端JavaScript
  • 100包含所有的express routes,由应用程序的模块/区域分隔(注意:使用express的 bootstrap 功能时,此文件夹称为101)

我习惯了用这种方式组织我的项目,我觉得效果很好.

Update for CoffeeScript-based Express applications (using 100):

  • 100包含编译后的JavaScript
  • /assets/ contains all client-side assets that require compilation
    • 100包含客户端咖啡脚本文件
    • 100包含所有LESS/Stylus样式表
  • 100包含任何编译器都无法处理的静态文件
  • 100包含所有服务器端特定的CoffeeScript文件
  • 100包含所有单元测试脚本(使用您 Select 的测试框架实现)
  • 100包含所有express视图(无论是jade、ejs还是任何其他模板引擎)

Node.js相关问答推荐

容器端口是容器内 node 应用程序的端口吗?

如何使用聚合管道交换键值对

在对象的嵌套数组中使用$lookup,创建多个记录作为响应,mongodb

向url传递多个参数

Node js 处理回调和 Promise

在全局对象上声明的函数

如何使用 $PATH 变量在系统中全局自动安装 bash 脚本?或者重写脚本到node

如何从名字,中间名,姓氏中获取全名并在结果中搜索匹配?

AWS EC2 npm install 突然很慢

Node.js 大文件上传到 MongoDB 阻塞了事件循环和工作池

为什么我在生产环境中 deproy Next.js 示例项目时 CSS 不起作用?

如何更改NodeJS中的堆栈大小限制?

如何申请在NextJS上下载文件的许可?

在 Javascript 逻辑中访问 EJS 变量

制作一个接受命令行参数的脚本

在多个 .env 文件之间切换,例如 .env.development 和 node.js

如何在 Node.js 中等待子进程完成

编写可维护的事件驱动代码

如何使用 Node.js、Express 和 Mongoose 进行身份验证?

mongo 可以 upsert 数组数据吗?