如何从 Aurelia 应用程序内部访问 Azure 应用程序设置?

How do I access a Azure application setting from inside an Aurelia application?

我在 Azure 应用服务中托管了一个 Aurelia 应用。我想通过在应用程序设置中定义它来配置 Aurelia 连接到的 api 端点。我如何读取 Aurelia 中的设置?

Aurelia 不是 JavaScript 客户端框架吗,例如all-in-browser 没有后端?应用程序设置是应用服务中的服务器端事物(key-value商店)。没有后端,没有应用程序设置。

通过调用 /settings/{app-setting-name}:

var restify = require('restify');

function respond(req, res, next) {
  // Returns app setting value.
  // Provides zero input validation,
  // DO NOT COPY PASTE INTO PROD,
  // ALL YOUR BASE WILL BELONG TO US.
  res.send(process.env[req.params.setting]);
  next();
}

var server = restify.createServer();
server.get('/settings/:setting', respond);
server.head('/settings/:setting', respond);

server.listen(process.env.PORT || 3000, function() {
  console.log('restify listening...');
});

希望这一切现在更有意义。

正如其他答案和评论中提到的,Aurelia 作为客户端应用程序运行,不了解后端驱动的应用程序。所以像 web.config 或 appsettings.json 这样的概念在没有一些严肃的黑客攻击的情况下是不可用的。你不想去那里。

话虽这么说,当然可以! :) 您几乎可以定义任何您喜欢的设置文件,类似于 ASP.NET(核心)应用程序的 appsettings.json 的概念,但在 Aurelia 中。

Aurelia 开源插件就是一个很好的例子Aurelia-Configuration

简单的说明是您首先将您喜欢的任何 .json 文件(如 config.json)添加到您的项目。接下来,在您的 Aurelia 启动中注册它:

export function configure(aurelia) {
    aurelia.use
        .standardConfiguration()
        .developmentLogging()
        .plugin('aurelia-configuration'); // <-- there you go

    aurelia.start().then(a => a.setRoot());
}

最后,只需使用 AureliaConfiguration 读出数值。下面的示例使用依赖注入对其进行了说明:

import {inject} from 'aurelia-framework';
import {AureliaConfiguration} from 'aurelia-configuration';

@inject(AureliaConfiguration)
export class MyComponent {
    constructor(config) {
        this.config = config;

        this.config.get('endpoint');
    }
}

README 说明了一切。

注意:我不属于 aurelia-configuration 插件,只是它的粉丝。