首页 > 解决方案 > 如何改进多个客户端的配置文件

问题描述

我在 angularjs 中有一个使用 nodejs 的应用程序,我正在寻找一些想法来改进 appConfig 文件的配置在这些文件中,我有一些字段,例如

feature1 = false;
feature2 = false

我正在使用这些值在不同页面上显示/隐藏一些按钮/面板,但我为每个客户端有 1 个配置文件我想减少配置文件的数量或改进它

标签: javascriptnode.jsangularjsvue.js

解决方案


不确定这是否是特定角度的问题,但在我的 Nuxt 项目中,有一个脚本可以在应用程序启动之前生成配置文件。该脚本将生成一个配置文件,其中包含基本配置和一些项目特定选项。也许这种方法会对您有所帮助。

配置/base.js

module.exports = {
    api: '/api-path',
    someFeature: true,
    anotherFeature: true
};

配置/生产.js

module.exports = {
    someFeature: false
};

配置/clientOne.js

module.exports = {
    anotherFeature: false
};

工具/config.js

const fs = require('fs');

const base          = require('../config/base');
const production    = require('../config/production');
const dev           = require('../config/dev');
const clientOne     = require('../config/clientOne');
const clientTwo     = require('../config/clientTwo');

let result = Object.assign({}, base);

let map = {
    production,
    dev,
    clientOne,
    clientTwo
};

result = Object.assign({}, result, map[ process.env.NODE_ENV ]);

fs.writeFileSync('./static/config.json', JSON.stringify(result));

包.json

{
    "scripts": {
        "start:production": "cross-env NODE_ENV=production node ./tools/config.js && nuxt start",
        "start:dev": "cross-env NODE_ENV=dev node ./tools/config.js && nuxt",
        "start:clientOne": "cross-env NODE_ENV=clientOne node ./tools/config.js && nuxt",
        "start:clientTwo": "cross-env NODE_ENV=clientTwo node ./tools/config.js && nuxt"
    }
}

推荐阅读