gpt4 book ai didi

hapijs - Hapi.js 应用架构

转载 作者:行者123 更新时间:2023-12-03 22:33:36 28 4
gpt4 key购买 nike

我一直在研究 hapi.js 应用程序并具有以下架构:

Database
--Models
--usermodel.js
--anothermodel.js
Routes
--private
--controllers
--ctrl1.js
--ctrl2.js
--validators
--validatr1.js
--validtr2.js
--public
--controllers
--ctrl1.js
--ctrl2.js
test
--dbtest.js
--functiontest.js
server.js

我们在使用 express 时采用了这种结构。 ,但我从一个新应用程序开始,想知道是否有资源可以找到更好的应用程序结构?我在官方网站上查看了 hapi 和其他资源,但找不到任何有趣的东西。

任何帮助表示赞赏。谢谢。

最佳答案

hapi 的好处是它不会决定你应该如何构建你的应用程序。这取决于你,因为在你的生活中任何有意义的事情。你可以把你拥有的所有东西都放在一个 index.js 中。文件并仍然使用所有 hapi 功能,但是您以后可能会很难阅读/维护该毛球。

如果您以前使用过的上述结构对您的应用程序仍然有意义,那么绝对没有什么能阻止您使用相同或相似的结构。
models - 只是与您的数据库对话的非 hapi 特定节点模块

exports.getUser = function (id, callback) { 

Db.get('users', id, callback)
};
controllers -
导出路由处理程序的模块
var User = require('../models/user');

exports.showUserPage = function (request, reply) {

User.getUser(request.params.id, function (err, user) {

if (err) {
throw err;
}

if (!user) {
return reply('User not found').code(404)
}

reply.view('user', user);
});
}
validators - 导出 joi 模式的模块
exports.showUserPage = {
params: {
id: Joi.number().required()
}
}
server.js - 将所有这些粘合在一起
var Hapi = require('hapi');

var server = new Hapi.Server();
server.connection({ port: 7843 });

server.route({
method: 'GET',
path: '/users/{id}',
handler: require('./controller/users').showUserPage,
config: {
validate: require('./validators/users').showUserPage
}
});

server.start();

插件

您可能应该利用 plugins ,它们允许您将应用程序拆分为逻辑 block 。您仍然可以使用上述结构,但将其放在插件中。如果它们不相关(分析、存储等),您稍后添加的新功能可以进入另一个插件。这使您可以构建一个微服务架构,在其中可以轻松地仅扩展应用程序中需要扩展的特定部分。

其他人在做什么?

如果你想改变它只是因为你可以,看看一些已经用 hapi 构建的项目,看看他们是如何做到的:
  • NPM网站:https://github.com/npm/newww
  • Postmile App(过期的hapi版本):
  • https://github.com/hueniverse/postmile-api
  • https://github.com/hueniverse/postmile-web
  • https://github.com/hueniverse/postmile
  • 关于hapijs - Hapi.js 应用架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218282/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com