Angular如何注入API基本URL

时间:2014-02-18 16:10:11

标签: angularjs angularjs-service

也许我只是错误地想到这一点,但我似乎无法找到正确答案:

“如何将API网址注入我的服务?”

特别是在.NET中,我会在.config文件中创建值,并使用转换来转换适当环境的值(debug,QA,PROD),然后注入该值。

对于AngularJS,我唯一能想到的就是使用每个环境的端点创建一个价值服务然后呢? - 或者使用Grunt来改变价值(虽然它如何知道它的环境)。

我对Angular很陌生,所以试图了解不同环境的部署是如何工作的。请注意,Angular站点不与API在同一服务器上托管,因此我无法使用相对路径。

提前致谢

2 个答案:

答案 0 :(得分:1)

虽然,这是一个很老的帖子,但我认为有人可能会发现它有用,我有一个类似的架构,我不得不指向网站上的不同API URL,我能够使用以下帖子

http://newtriks.com/2013/11/29/environment-specific-configuration-in-angularjs-using-grunt/

更新

总之,您可以安装环境配置生成器或手动创建这些文件

npm install generator-env-config

并创建配置文件,如果已使用

安装了生成器
yo env-config:development 

然后在Grunt.js中使用grunt-replace来替换不同的配置文件,就像使用.Net配置文件一样 E.g

replace: {
development: {
        options: {
          patterns: [{
            json: grunt.file.readJSON('./config/environments/development.json')
          }]
        },
        files: [{
          expand: true,
          flatten: true,
          src: ['./config/config.js'],
          dest: '<%= yeoman.app %>/scripts/services/'
        }]
      },
uat: {
        options: {
          patterns: [{
            json: grunt.file.readJSON('./config/environments/uat.json')
          }]
        },
        files: [{
          expand: true,
          flatten: true,
          src: ['./config/config.js'],
          dest: '<%= yeoman.app %>/scripts/services/'
        }]
      },
}

现在如果你运行grunt replace:development,你应该从开发中获得配置文件 希望这有帮助

答案 1 :(得分:0)

使用grunt-env插件:https://npmjs.org/package/grunt-env

并设置您的配置:

grunt.initConfig({
  env : {
    options : {
      //Shared Options Hash
    },
    dev : {
      NODE_ENV : 'development',
      DEST     : 'temp'
    }
  },
  'another-task': {}
});

我从这个链接找到答案:

NodeJS environment variables in Grunt