SORU
2 Mayıs 2013, PERŞEMBE


Nasıl Angular.js farklı ortamlarda yapılandırabilirim?

Nasıl farklı ortamlar için yapılandırma değişkenler/sabitler başarıyorsun?

Bu bir örnek olabilir:

API localhost:7080/myapi/, ama Git sürüm kontrol altında aynı kod üzerinde çalışan arkadaşım ulaşılabilir benim rest API localhost:8099/hisapi/ onun Tomcat üzerine yığdı.

Böyle bir şey var diyelim ki :

angular
    .module('app', ['ngResource'])

    .constant('API_END_POINT','<local_end_point>')

    .factory('User', function($resource, API_END_POINT) {
        return $resource(API_END_POINT   'user');
    });

Nasıl API uç noktası, ortama bağlı olarak doğru değeri dinamik olarak enjekte edebilirim?

Ben PHP genellikle config.username.xml bir dosya ile bu tür şeyler, temel yapılandırma dosyası (config.xml yerel çevre yapılandırma dosyası kullanıcı adı ile tanınan ile birleştirilmesi. Fakat JavaScript bu tür bir şey yönetmek için nasıl bilmiyorum?

CEVAP
20 AĞUSTOS 2013, Salı


Konuya biraz geç kaldım ama eğer Grunt kullanıyorsanız grunt-ng-constant ile büyük başarı elde ettik.

Benim ngconstant config section Gruntfile.js gibi görünüyor

ngconstant: {
  options: {
    name: 'config',
    wrap: '"use strict";\n\n{%= __ngModule %}',
    space: '  '
  },
  development: {
    options: {
      dest: '<%= yeoman.app %>/scripts/config.js',
    },
    constants: {
      ENV: 'development'
    }
  },
  production: {
    options: {
      dest: '<%= yeoman.dist %>/scripts/config.js',
    },
    constants: {
      ENV: 'production'
    }
  }
}

ngconstant kullanan görevleri benziyor

grunt.registerTask('server', function (target) {
  if (target === 'dist') {
    return grunt.task.run([
      'build',
      'open',
      'connect:dist:keepalive'
    ]);
  }

  grunt.task.run([
    'clean:server',
    'ngconstant:development',
    'concurrent:server',
    'connect:livereload',
    'open',
    'watch'
  ]);
});

grunt.registerTask('build', [
  'clean:dist',
  'ngconstant:production',
  'useminPrepare',
  'concurrent:dist',
  'concat',
  'copy',
  'cdnify',
  'ngmin',
  'cssmin',
  'uglify',
  'rev',
  'usemin'
]);

Bu yüzden grunt server çalışan gibi görünüyor app/scripts/ 17 *bir dosya oluşturur

"use strict";
angular.module("config", []).constant("ENV", "development");

Son olarak, ne olursa olsun modülleri lazım: bağımlı ilan ediyorum

// the 'config' dependency is generated via grunt
var app = angular.module('myApp', [ 'config' ]);

Şimdi benim sabitler gereken yerlerde bağımlılık enjekte edilebilir. E. g.,

app.controller('MyController', ['ENV', function( ENV ) {
  if( ENV === 'production' ) {
    ...
  }
}]);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • backyardjay

    backyardjay

    8 ŞUBAT 2009
  • Jonathan Morrison

    Jonathan Mor

    24 Mart 2010
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008