【问题标题】:How set/get environment specific variable in a Yeoman Ember app如何在 Yeoman Ember 应用程序中设置/获取特定于环境的变量
【发布时间】:2014-01-11 15:11:46
【问题描述】:

考虑一个 Yeoman Ember 应用程序。

我看过不同的工具,例如:

但我不太明白如何根据某些 grunt/node 环境在 router.js 中设置/获取不同的适配器 url。

【问题讨论】:

    标签: node.js ember.js yeoman


    【解决方案1】:

    一种方法是拥有两个文件:development.properties 和 production.properties,使用 grunt 您可以将它们复制到 current.properties 文件,然后您可以始终读取 current.properties 文件,例如使用 @ 987654321@ 从您的应用程序的任何地方。

    你只需要在你的 grunt 文件中使用 grunt-contrib-copy 任务。

    总结:创建一个从命令行读取环境的 gruntfile 并将相应的文件属性复制到 current.properties,然后在你的 route.js 中你只需包含 nconf 并使用它。

    nconf 还可以在运行时从提供给 node 的命令行中读取参数,因此您可以避免使用 grunt 文件并像 node app.js --property=value 一样运行它并获取属性的值使用 route.js 中的 nconf

    【讨论】:

      【解决方案2】:

      所以我最终找到了一种效果很好但只有两个 env 的方法:

      我为 ember-generator 提出了一个拉取请求,以开始使用该模式: https://github.com/borisrorsvort/generator-ember/commit/66f26e9e5a7599da53cb99b85e8ef5864648349b

      这是一个适用于 yeoman ember 生成器的实现:

      您的替换任务应如下所示:

      replace: {
        app: {
          options: {
            variables: {
              ember: 'bower_components/ember/ember.js',
              ember_data: 'bower_components/ember-data-shim/ember-data.prod.js',
              app_config: 'scripts/app_config/development.js'
            }
          },
          files: [{
            src: '<%= yeoman.app %>/index.html',
            dest: '.tmp/index.html'
          }]
        },
        dist: {
          options: {
            variables: {
              ember: 'bower_components/ember/ember.prod.js',
              ember_data: 'bower_components/ember-data-shim/ember-data.prod.js',
              app_config: 'scripts/app_config/production.js'
            }
          },
          files: [{
            src: '<%= yeoman.app %>/index.html',
            dest: '.tmp/index.html'
          }]
        }
      }
      

      ======

      然后在@@ember 和@@ember_data 下添加'@@app_config' index.html 以便它被正确的字符串替换

      ======

      然后创建两个文件:

      • app/templates/scripts/app_config/development.js
      • app/templates/scripts/app_config/production.js

      这些包含您可以在 Ember 应用中使用的 AppConfig 对象

      var AppConfig = {};
      

      ======

      现在假设您想在构建应用程序时更改适配器:

      只需使用:

      MyApp.ApplicationAdapter = DS.RESTAdapter.extend({
        host: AppConfig.apiAdapterUrl
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-01
        • 2012-10-03
        • 2016-06-06
        • 2012-06-08
        • 2017-11-14
        • 2021-05-27
        相关资源
        最近更新 更多