如何解决如何在 NodeJs 项目中组织应用程序范围的设置?
我想将设置/配置与我的 NodeJs Typescript 项目中的代码分开,以便我可以在需要时调整应用程序设置。假设我使用了许多服务,例如 Express、MongoDB、Redis、Slack 等。我希望每个服务实现都有设置文件。解决此问题的最佳/理想方法是什么?
考虑到设置的某些部分将特定于环境,而某些部分将独立于环境。
我已经实现了以下结构
.
+-- src
|. +-- lib
|. |. +--app
|. |. |. +-- app.ts
|. |. |. +-- app.config.ts
|. |. +--mongodb
|. |. |. +-- mongodb.ts
|. |. |. +-- mongodb.config.ts
每个模块都有自己的配置文件,它是一个 javascript 对象。
为了更好地理解代码的结构,请查看app
目录
app.ts
import express,{ Application } from "express";
import ExpressConfig from "./app.config";
/**
* @class App
*/
class Express {
public static app: Application;
public static init() {
/**
* make sure we don't double initialise the express application
* once it is initialised,we can safely return!!
*/
if (Express.app !== undefined) {
return;
}
Express.app = express();
/** parse incoming application/json */
Express.app.use(express.json(ExpressConfig.app.bodyParser.json));
/** parse incoming text/html */
Express.app.use(express.text(ExpressConfig.app.bodyParser.text));
/** parse incoming query params */
Express.app.use(express.urlencoded(ExpressConfig.app.bodyParser.urlencoded));
/** start up the express server */
Express.app.listen(ExpressConfig.app.port,() => {
// tslint:disable-next-line:no-console
console.log(ExpressConfig.app.startupMsg);
});
}
}
export default Express;
app.config.ts
import { OptionsExpressConfig } from "./app.types";
/**
* @description Configuration file for Express server class
* This configuration holds all the relevant options used in setting up
* express server.
*/
const ExpressConfig: OptionsExpressConfig = {
app: {
port: +process.env.PORT,bodyParser: {
json: {
limit: "50mb"
},text: {},urlencoded: {
parameterLimit: 10000,extended: true,limit: "50mb"
},},startupMsg: `Server listening to port: ${+process.env.PORT}`
}
};
export default ExpressConfig;
如果我在整个应用程序开发过程中都遵循这种方法,从长远来看会不会导致任何问题?
性能会受到影响吗?这会对 RAM 造成什么影响?
有没有更好的替代方法?我应该创建单个配置文件而不是多个文件吗?我希望有人指导我正确的方法。我的主要目标是将应用程序配置与底层实现分离,以便任何人都可以轻松地调整应用程序设置。此外,设置也可能包含环境变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。