组织后端(节点)进程和使用这些进程一部分的前端(Vue / Nuxt)的最佳方法

时间:2019-05-23 11:36:03

标签: javascript node.js express vue.js nuxt

我有一些微型节点应用程序在做一些基本的事情,例如检查事物和填充数据库(由CRON触发)。在我的Nuxt应用程序中,我将需要使用部分这些Node应用程序。最好的组织方式是什么,我应该将它们分开还是与Nuxt应用程序融合在一起?我是从这些节点应用程序中复制所需的文件并在Nuxt中进行调整,还是使用服务器端中间件将这些节点应用程序添加到Nuxt项目中,还是使用express创建我的Nuxt应用程序,还是使用/server/index.js来以某种方式将我的节点应用添加到那里?

让我们举个例子。您有一个节点应用程序,它非常每小时检查一些数据并填充数据库。在Nuxt应用程序中,有一个页面显示了数据库的内容,但是您首先要确保自上一个小时以来无需在数据库中添加任何新内容。我必须在每个Nuxt页面上运行的代码与Node应用程序相同的代码(检查并填充数据库)。在两个地方有两次相同的代码看起来有点愚蠢(并且难以维护和更新)。但是我不确定我的Nuxt应用程序中每小时如何运行此节点应用程序。任何建议将不胜感激

1 个答案:

答案 0 :(得分:0)

这是一个控制流,可以帮助您考虑设计此CRON微服务。有很多方法可以做到这一点,但这可能不是最好的方法,但是我认为这将适用于您的用例。

  1. 服务器中有一个services目录(也可以称为middleware)。
  2. 包括一个cron.js文件,其中包含任务运行程序的逻辑。
  3. cron.js内,从节点到Vue发出计划的响应,例如res.JSON({message: 'checkNewData'})之类的JSON关键字。这将称为“服务器发送事件”。服务器发送的事件只是在节点环境中按定义的时间表自动发生的事件。
  4. 在Vue中,在根级别App.vue处,使用created()钩子注册事件侦听器,该侦听器将侦听服务器发送的"checkNewData" JSON对象。当此事件侦听器听到JSON响应时,应触发Vue检查适当的组件,打包所有新数据,然后通过postput http调用将其发送到DB,具体取决于您是要添加新数据还是要用新数据替换旧数据。

此配置将为您提供一个用于自动更新的闭环系统。下一个挑战将是使此操作特定于客户端,但是一旦您完成此工作,便会担心。同样,其他人可能对此采取不同的方法,但这就是我处理流程的方式。