Tag: 架构

节点模块化架构

我正在构build一个相当大的nodejs应用程序。 为了避免一个单一的节点应用程序,我已经走下了一个更模块化系统的架构路线,将几个组件分解成单独的npm模块。 这些使用npm发布并安装在依赖模块中。 我有大约6个不同的模块(我想要更多的),现在pipe理软件包变得困难了。 问题是: 有嵌套的依赖关系,所以如果我改变模块A和模块B依赖于模块A和模块C依赖于模块B,那么当我更新模块AI需要发布它的新版本,这意味着我需要更新它在模块B,这意味着我也需要发布,然后最后我需要在模块A中安装新版本…你可以看到哪里可能是一个痛苦。 更重要的是,所有package.json中的版本更新都是手动的,所以容易出错,并且等待每个发布是耗时的。 模块可以共享npm依赖关系,所以有时包更新时会发生冲突。 越多的模块冲突的机会越高。 好处是我们有一个非常模块化的系统,在这个系统中,库可以很容易地被重用,并且有一个明确的模块层次结构,因为不能有循环依赖。 可能的解决scheme是 Monolith – 将每个模块的依赖关系作为一个单一的应用程序来pipe理,每个模块只是成为一个服务。 这意味着只有一个更新是必要的,所有的模块apis将同步。 然而,在代码中引用库可能有点痛苦(因为我相信它们将不得不被相对于本地文件引用),我不确定模块之间的结构层次结构如何被强制执行并且代码重用将会使用仓库以外的模块会更困难。 微服务 – 使每个模块成为微服务。 这保持了模块化系统的所有好处,但是我担心它会增加构build的复杂性,并且pipe理所有的服务将成为一个全职的工作。 继续 – 制定一种方法来保持当前的体系结构,但消除推送更新等问题。也许脚本来更新版本和缩小包装,以确保正确的依赖关系。 我认为这将是困难的,并有可能导致它成为一个不同的整体系统。 选项1对我来说似乎是最易于pipe理的,但是如果我不需要,我不想失去模块化结构。 这是一个相当广泛的问题,但任何build议/build议/意见将是非常有帮助的。 谢谢

基于Mongoose的应用程序体系结构

这不是一个具体的应用程序/代码问题,只是关于通用的应用程序架构。 我试图理解正确的方式来组织我的mongoose应用程序。 因为我是mongoose新手,现在就是这样做的: 核心/ settings.js var mongoose = require('mongoose'); exports.mongoose = mongoose; mongoose.connect('mongodb://localhost/blog'); exports.db = mongoose.connection; 核心/ models.js settings = require("./settings"); // post schema var postSchema = settings.mongoose.Schema({ header: String, author: String, text: String }) //compiling our schema into a Model exports.post = settings.mongoose.model('post', postSchema) 芯/ DB-layer.js settings = require("./core/settings"); models = require("./core/models"); exports.function = […]