【发布时间】:2015-08-12 18:33:08
【问题描述】:
我正在尝试找出如何最好地构建我的应用程序。但是对于初学者来说,试图了解关于将东西放在哪里的典型做法,以及应用程序应该如何连接到 server.js 之类的东西,server.js 应该如何工作,以及如何为网站保持持久连接,以及任何后端服务或模块。
这是一个普遍的问题,但让我尝试更具体一些,因为我是 Node 新手,所以我尽可能具体。并且作为开始这个问题的基础。
假设我打算设计一个简单的 Express 应用程序。
到目前为止,我已经得到了这种结构:
现在在 server.js 中,我只是在尝试连接到 mySQL 数据库。所以我有一个正在创建的连接池,一次调用存储以检索数据,当时需要我正在使用的 node-mysql 中间件,等等。
app.js 只有非常简单的代码,它还不是模块化的,甚至还没有准备好生产,但这只是我在玩代码,把事情搞砸。所以在里面我有你典型的东西,比如设置视图,var app = express();,从我的 routes\index.js 中的另一个模块导入快速路由定义,诸如此类。
如果我要保持数据库连接打开或其他东西打开,那么按照惯例如何最好地组织/完成?
如果您查看此示例代码,他正在将 var app = express() 定义移动到 service.js:https://github.com/madhums/node-express-mongoose-demo/blob/master/server.js。他保持一个开放的连接运行并从那里开始,这是有道理的,因此是“服务器”。
那么 app.js 应该做很多事情吗?什么是最佳实践或应该做的范围。一旦我开始将事物模块化到他们自己的 .js 文件和节点模块中,app.js 是如何通过所有这些重构而变形的,这意味着它的作用到底是什么,最后它是否非常薄,它只是用来连接东西起来了吗?
那么express 4现在要求的www.js应该有什么作用呢?
从一个方面开始对我来说有点困难,所以我会在上面说遍所有地方。我只想知道在 app.js 与 server.js 中放置东西的常见约定,然后是保持和管理与事物的开放连接的最佳方法......在后端和前端,例如传入的 http 请求,什么应该是中心点?当然是路由,但是 app.js 是否负责引用路由?
我找到了一些资源,例如this,但正在寻找更多资源,如果您知道或有任何意见,请回复。我更感兴趣的是关于 app.js、server.js、connections、www.js 的讨论,以及这些特定部分应该在哪里相互连接。我知道剩下的取决于你想如何命名文件夹等。
【问题讨论】:
-
不幸的是,在构建您的应用程序时,我们仍处于狂野的西部,因为没有“最佳实践”或全面“最佳”的结构。这取决于您的项目的需求和规模。
-
app.js 和 server.js 在您的情况下有何不同?和www.js?在我看来,它们将是多余的。
-
我通常将我的连接存储在
lib文件夹下的独立模块中。它只需要在 db 驱动程序中包含一个配置文件,创建一个连接池,然后导出该池。然后,任何需要访问数据库的东西都只需要那个模块。在我的情况下,该文件通过 mongoose 连接到 mongodb。我的 smtp 邮件以同样的方式处理。