Articles of 架构

如何在NodeJs上为RestAPI创build一个干净的体系结构

我正在考虑将一些REST服务移动到NodeJS。 我唯一担心的是这种解决scheme的架构。 它是否存在某个指导方针? 当然,我看到一些图书馆喜欢restify。 这是一个好的开始,但还不够。 我期待层的分离,dependency injection,unit testing,CSRF和更多。

最好的MongoDB架构的Twitter克隆?

我知道类似的问题已经被问到,但是对一个基本问题寻找一个非常基本的答案。 我是MongoDB的新手,做一个Twitter风格的应用程序(博客,追随者等),我想知道最好的模式使用。 现在我有(非常高): Member { login: string, pass: string, posts: [ { title: string, blog: string, comments: [ { comment: string } ] } ] } 还有更多,但是这给你的想法。 现在的问题是我正在寻找添加“追随”function,我不知道最好的路线去。 我可以给成员添加一个“以下”embedded式文档,但是我不确定使用mongoDB最聪明的方法是什么。 我的主要观点显然是主要的“饲料”页面,你可以看到所有你关注的人的post。

django npm和节点包的体系结构

在我join的项目中,是node_packages的体系结构: |- Django project |– app1 |– app2 |– node_modules |— foundation-sites |— grunt |– static |— css |— images |— js |–urls.py |–settings.py |–package.json 我个人认为node_packages应该在js文件夹下的静态以及package.json如下所示: |- Django project |– app1 |– app2 |– static |— css |— images |— js |—- node_modules |—– foundation-sites |—– grunt |—- packages.json |–urls.py |–settings.py 有没有区别? 这是最好的做法? 为什么?

如何在调用responde.end()之后执行NodeJS / connect中间件?

我想实现这样的事情: var c = require('connect'); var app = c(); app.use("/api", function(req, res, next){ console.log("request filter 1"); next(); }); app.use("/api", function(req, res, next){ console.log("request filter 2"); next(); }); app.use("/api", function(req, res, next){ console.log("request handler"); res.end("hello"); next(); }); app.use("/api", function(req, res, next){ console.log("response post processor"); next(); }); app.listen(3000); 当我蜷缩的地址,我得到一个例外的控制台抱怨标题发送后不会被打扰,这是公平的。 只有我不接触响应对象。 /usr/bin/node app2.js request filter 1 request filter […]

服务器端和胖客户端Web应用程序的文件夹结构

目前我使用的Node.js的后端和extjs或主干客户端,我现在完全困惑的文件夹结构。 使用express我的文件夹结构如下 appname |–controllers |–models | |–appmodel.js |–public | |–css | |–js // any client-side javascripts |–routes | |–router.js |–views | |–appview.ejs |–app.js 其中app.js是入口点,它使用router.js来处理视图的路由和呈现。 如果只是服务器端开发,这工作得很好。 现在,如果我想为客户端使用ExtJS或Backbone,应该如何组织我的代码? 我应该将其添加到公用文件夹或views ? appname |–controllers | |–extbasedcontroller.js // correct location? |–models | |–appmodel.js | |–extbasedmodels.js // correct location? |–public | |–css | |–js | | |–extjs // extjs files |–routes […]

节点模块化架构

我正在构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 = […]