gpt4 book ai didi

javascript - 多环境Express Api

转载 作者:搜寻专家 更新时间:2023-10-31 22:47:19 25 4
gpt4 key购买 nike

我正在研究基于 Express 框架的多环境 API。我想要的是保持我的配置动态,例如此 API 将能够为移动应用程序和 Web 应用程序提供服务。如果请求来自移动源应包含 config-app-1.json,否则包含 config-app-2.json

目前我有 config-app-1.json, config-app-2.json, config-db-1.jsonconfig-db-2.json 和一个 configManager.js 类,它在 app.listen() 中设置所需的配置。在其他应用程序模块中,我需要 configManager 并使用必要的配置。然而,这会导致单个函数中的代码重复问题。每个函数都必须在其本地范围内获取数据库和应用程序设置的引用。

我想知道使用 Express 框架构建多环境 API 的最佳实践是什么。

最佳答案

这些是配置文件,这是我的方法。

文件结构

.
├── app.js
├── _configs
| ├── configManager.js
| ├── database.js
| └── platform
| ├── mobile.js
| └── desktop.js

环境配置

配置文件是每个设备的 js 模块,然后 configManager 根据设备处理哪个是事件的。

//mobile.js example
module.exports = {
device: 'mobile',
configVar: 3000,
urls: {
base: 'DEVICE_SPECIFIC_BASE_URL',
api: 'DEVICE_SPECIFIC_BASE_URL'
},
mixpanelKey: 'DEVICE_SPECIFIC_BASE_URL',
apiKey: "DEVICE_SPECIFIC_BASE_URL",
}

数据库配置

数据库配置应该是集中的。

通常您可以在同一个 Node 实例中连接到多个数据库,但不推荐这样做。如果你绝对需要,只需使用两个对象(而不是“mongodb”替换为“mobileMongoDb”和“desktopMongoDb”)但我建议你使用一个数据库并将其分为两个主要文档,或者使用在你的平台中设置的某些前缀-特定配置。

// databse.js example
module.exports= {
mongodb: {
host : 'localhost',
port : 27017,
user : '',
password : '',
database : 'DB_NAME'
},
}

configManager.js(把东西放在一起)

这是一个仅供演示的简单文件..

var userAgent = req.headers['User-Agent'];
var isMobile = /Mobile|Android|/i.test(userAgent);



// require them all to be cached when you run node.
var configs = {
mobile: require('./platform/mobile' ),
desktop: require('./platform/desktop' )
}
var activeConfig = isMobile? configs.mobile : configs.desktop;
var dbConfigs = require('./databse');


var mongoose = require('mongoose');
var express = require('express');
var app = express();

app.get('/', function (req, res) {
var finalresp = 'Hello from ';
finalresp += isMobile? 'mobile' : 'desktop;
finalresp += activeConfig.configVar;
res.send(finalresp);
});

mongoose.connect(dbConfigs.mongodb.host, function(err) {
if(isMobile) { /* ... */ }
});

从标题中检测手机

在这里阅读更多 https://gist.github.com/dalethedeveloper/1503252

关于javascript - 多环境Express Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37719954/

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