Comment passer (Debug vs Release) à une application Aurelia dans Asp.Net MVC

Comment allez-vous passer les arguments Debug vs Release à une application Aurelia?

Dans mon cas, j'ai Aurelia dans une application MVC. Je souhaite configurer certains paramètres (URL, etc.) pour Aurelia en fonction de mes valeurs web.config.

Y a-t-il un moyen pour quelque chose comme ça:

<script src="~/Aurelia/jspm_packages/system.js"></script> <script src="~/Aurelia/config.js"></script> <script> System.import('aurelia-bootstrapper', @this.ViewBag.MyArgs); </script> 

This.ViewBag.MyArgs contient des arguments chargés à partir de MVC?

Je pourrais alors utiliser ces args dans mes services Aurelia tels que

 this.httpClient.configure(x => { x.withBaseUrl(globalArgs.myBackendUrl); }); 

Enregistrez votre chaîne de configuration en tant que module:

Index.html

 <script src="~/Aurelia/jspm_packages/system.js"></script> <script src="~/Aurelia/config.js"></script> <script> // register a module named "my-args" that has a single export: "MyArgs" whose value is whatever the viewbag.MyArgs contains... System.set('my-args', System.newModule({ MyArgs: '@this.ViewBag.MyArgs' })); // standard bootstrapping logic... System.import('aurelia-bootstrapper'); </script> 

L'hypothèse ici est que le rasoir va étendre { MyArgs: '@this.ViewBag.MyArgs' } dans n'importe quel @this.ViewBag.MyArgs retourne … eg { MyArgs: 'debug=true' } ou quelque chose … vous aurez Pour jouer avec cette partie.

Ensuite, dans votre code javascript, vous pourrez accéder aux args comme ceci:

 import {MyArgs} from 'my-args'; 

Voici un plongeur actif:

http://plnkr.co/edit/Scu8bN?p=preview

Voici les documents sur l'API System.set :

https://github.com/systemjs/systemjs/blob/master/docs/system-api.md#systemsetmodulename-module

Je me rends compte que cela a déjà été répondu mais j'ai une autre suggestion qui peut s'avérer utile, peut-être.

Nous voulions utiliser une URL de Breeze différente en fonction de la version de débogage ou de la version et, à la fin, a créé un ConfigController dans l'application MVC. Cela renvoie un objet json de paramètres appropriés en fonction de la configuration du serveur. Ensuite, dans le client Aurelia, nous avons un module de configuration qui appelle le point de terminaison MVC à l'aide du client http et définit les paramètres du côté client, au besoin.

ConfigController est quelque chose d'aussi simple que:

  [HttpGet] public IDictionary<string, object> Get() { return new Dictionary<string, object> { { "Application Name", "My app name" }, { "Debug", true } { "APIHost", ApiSettings.APIHost }, { "APIBaseURL", ApiSettings.APIBaseURL }, { "LoginURL", ApiSettings.LoginURL } }; } 

Et le module client contient quelque chose comme:

 loadConfig() { let self = this; let url = 'api/config'; let req = new HttpClient(); return req.get(url) .then(result => { return applyConfig(result); }); } function applyConfig(responseMessage) { if (responseMessage.statusCode === 200) { self.appConfig = JSON.parse(responseMessage.response); } else { self.appConfig = { // Apply some defaults or something here }; } return self.appConfig; } } 

L'un des avantages de cela est qu'il est facile d'ajouter des paramètres, par exemple, aux chaînes d'environnement d'application Web Azure. Une fois que j'avais eu la tête ronde, Promises, ça a bien fonctionné 🙂