【问题标题】:Angular 2 externalization (properties file)Angular 2 外部化(属性文件)
【发布时间】:2016-10-07 10:59:52
【问题描述】:

在 Angular 2 应用程序或一般的 JavaScript 应用程序中外部化字符串常量的认可方式是什么?我的意思是类似于 Java 中的 .properties 文件,其中存储了后端连接属性。

据我所知,JavaScript 不支持在客户端轻松读取文件。我目前的解决方案是使用可注入服务类,它将键值对存储为对象属性。然后我只是将服务注入需要这些值的其他服务中。这是合理的方法,还是 JavaScript/A2 提供了一些更统一的方式来处理值注入?

【问题讨论】:

  • Angular 团队正在“很快”发布一些正在进行的工作。

标签: javascript html angularjs build angular


【解决方案1】:

我认为这样做的方法是正确的。

您可以在请求完成后异步引导。这是一个示例:

var app = platform(BROWSER_PROVIDERS)
  .application([BROWSER_APP_PROVIDERS, appProviders]);

var service = app.injector.get(ConfigService);

service.getConfig().flatMap((config) => {
  var configProvider = new Provider('config', { useValue: config });
  return app.bootstrap(appComponentType, [ companiesProvider ]);
}).toPromise();

看到这个问题:

如果您能够在服务器端更新index.html 页面(主入口点),我会看到另一种方法。这是一个示例:

<script>
  var params = {"token": "@User.Token", "xxx": "@User.Yyy"};
  System.import('app/main').then((module) => {
    module.main(params);
  });
</script>

看到这个问题:

您也可以为此注册一个APP_INITIALIZER 提供程序:

provide(APP_INITIALIZER, {
  useFactory: (service:ConfigService) => () => service.loadConfig(), 
  deps:[ConfigService, HTTP_PROVIDERS],
  multi: true}),

查看此问题了解更多详情:

【讨论】:

  • 执行最简单的任务需要这么多的冗长。 Angular 2 代码似乎最终难以维护,我希望他们会随着时间的推移适应约定而不是配置方法
  • 是的,也许将来使用 ng-constants 之类的工具会更容易解决打包问题...
  • 使用 environment.ts 怎么样?
猜你喜欢
  • 2018-02-21
  • 2018-08-01
  • 2017-03-15
  • 1970-01-01
  • 2020-05-05
  • 2020-01-27
  • 2020-07-25
  • 1970-01-01
  • 2020-07-30
相关资源
最近更新 更多