node.js中的app.js,index.js和server.js的约定?

时间:2016-03-15 03:54:15

标签: node.js conventions

在node.js中,似乎我遇到了相同的3个文件名来描述应用程序的主要入口点:

  • 使用express-generator包时,会创建 app.js 文件作为生成的应用的主要入口点。
  • 通过package.json创建新的npm init文件时,系统会提示您输入主入口点文件。默认值为 index.js
  • 在我看过的一些程序中, server.js 也是主要的切入点。

其他时候,似乎它们的使用方式存在细微差别。例如,此节点应用程序目录结构在不同的上下文中使用index.jsserver.js

app
  |- modules
  |    |- moduleA
  |    |    |- controllers
  |    |    |    |- controllerA.js
  |    |    |    +- controllerB.js
  |    |    |- services
  |    |    |    +- someService.js
  |    |    +- index.js <--------------
  |    +- index.js <-------------------
  |- middleware.js
  +- index.js <------------------------
config
  +- index.js <------------------------
web
  |- css
  |- js
server.js <----------------------------

这三个名字之间有什么区别?

3 个答案:

答案 0 :(得分:11)

即使你可以调用任何你想要的文件,调用入口点index.js或server.js

也是一个优点。

为什么index.js: 当您发出npm init时,它会将模块的主入口点设置为index.js。有些人不会改变它,所以他们最终命名他们的主要入口点index.js。这意味着要少做一件事。

为什么是server.js: 如果您的节点包不会被另一个包使用,而是一个独立的应用程序,那么如果您调用主入口点server.js,那么您可以发出npm start并启动您的应用程序。默认情况下,npm start将运行您的server.js文件。要更改此行为,请在package.json中提供start脚本。如果存在start脚本,则npm start将运行该脚本。

app.js只是一种惯例 - 它的唯一优势是某些IDE(例如Visual Studio Code)将默认为app.js作为您调试的程序的入口点。这样当使用最常见的框架Express时,会创建一个app.js文件,&#34;它只是工作&#34;

答案 1 :(得分:4)

在我工作的地方,我们并没有真正选择格式,所以我们有一些带有index.js的应用程序,有些带有server.js。 另外,在某些情况下,我们在根级别有一个config.js文件,其他文件在config文件夹中(所以需要(config / config.js)。 我们甚至有一个server.js在服务器文件夹中。

当我们想要自动化部署过程时,就会遇到麻烦。当我们必须对每项服务进行一些小修改时,它就像技术债务。

那就是说,选择一种对你有意义并坚持下去的格式。

答案 2 :(得分:3)

事实上,所有这些只是名字,你必须在自己的工作中保持一致,正如@Oka在之前的回答中指出的那样。

这里唯一有效的一点是节点的模块化性质可能在您的决策中发挥重要作用,正如NodeJS文档的Folders as Modules部分所指出的,文件夹可以通过3种方式传递给需要( )作为参数,第二个和常见的是自动加载文件夹中的index.js文件,这是很多NPM包的构建方式,因为它简单而标准的根据自动加载NodeJS功能。如果您正在开发NPM包,它似乎是最佳选择。

最后,正如其他人指出的那样,你可以选择三者中的任何一种,甚至是另一种,但坚持你的决定。我的决定是始终根据上面提到的事实使用index.js。