在Javascript中切换开发/测试/生产变量

时间:2014-08-19 09:21:46

标签: javascript gruntjs google-closure

我正在尝试在Devlopment,Test和Production环境中搜索管理不同值的最佳方法。
例如,我有变量jsonFile,可以是:

  

var jsonFile = http://localhost:63342/json/appsconfig.json

for development env

  

var jsonFile = http://192.168.35.59/applications/json/appsconfig.json

for test env

  

var jsonFile = http://example.com/applications/json/appsconfig.json

生产环境

我试图阅读很多关于前端开发堆栈的内容,但我对使用什么工具感到困惑。我将使用Google Closure工具进行缩小,是否也可以切换变量值?或者它可以被认为是一个Grunt任务(即使我无法理解如何正确配置Grunt任务......)?

1 个答案:

答案 0 :(得分:1)

更好的方法是将JSON写入JS文件,该文件是构建工件的一部分。类似file-creator的东西可以像这样编写一个文件(使用简单的设置,显然可以使其更具动态性)。

在你的module.exports顶部用于grunt任务,将配置文件加载到var中:

var configData = grunt.file.readJSON('../config/appsconfig.json'),

然后使用grunt file-creator module

写入新的JS文件
"file-creator": {
    'dev': {
        'build/config.js': function (fs, fd, done) {
                fs.writeSync(fd, 
                    'var yourSiteHere = yourSiteHere || {}; yourSiteHere.config = '
                    + JSON.stringify(configData) + ";"
                );
                done();
        }
    }
}

然后将此JS文件加载到页面中(甚至可能使用单独的grunt任务将其缩小)。然后,您就可以像这样引用配置数据:

var apiEndPoint = yourSiteHere.config.api.apiEndPoint,
    apiKey = yourSiteHere.config.api.apiKey;