Dart有一个标准的方法来外部化设置,比如Java属性?

Dart有一个标准的方法来外部化设置,比如Java属性?,dart,Dart,我正在寻找在我的服务器Dart应用程序中外部化设置的正确方法 在Java中,常用的方法是属性文件。Dart中是否存在类似的内容?您可以使用Dart脚本进行设置。如果没有具体原因,使用不同的格式没有意义。 通过一个简单的导入,您就可以以键入的方式使用它 您可以使用全局变量,例如: DB_URL = 'localhost:5432/mydb'; DB_PASS = 'my_pass'; import 'production_config.dart' as prodConfig; main(Lis

我正在寻找在我的服务器Dart应用程序中外部化设置的正确方法


在Java中,常用的方法是属性文件。Dart中是否存在类似的内容?

您可以使用Dart脚本进行设置。如果没有具体原因,使用不同的格式没有意义。
通过一个简单的导入,您就可以以键入的方式使用它

您可以使用全局变量,例如:

DB_URL = 'localhost:5432/mydb';
DB_PASS = 'my_pass';
import 'production_config.dart' as prodConfig;

main(List<String> args) {
  var ENV = getEnvFromArgs(args);
  if(ENV == 'PROD') {
    prodConfig.loadConfig();
  }
  //do other stuff here
}
dart myprogram.dart -env=PROD
然后,您可以为每个环境创建不同的配置文件。例如,对于production,您可以创建一个production_config.dart,它可以包含:

loadConfig() {
  DB_URL = '123.123.123.123:5432/mydb';
  DB_PASS = 'my_prod_pass';
}
然后,如果环境是生产环境,则可以在主函数中调用
production\u config.loadConfig
,例如:

DB_URL = 'localhost:5432/mydb';
DB_PASS = 'my_pass';
import 'production_config.dart' as prodConfig;

main(List<String> args) {
  var ENV = getEnvFromArgs(args);
  if(ENV == 'PROD') {
    prodConfig.loadConfig();
  }
  //do other stuff here
}
dart myprogram.dart -env=PROD

这种方法的优点是不需要为此创建单独的属性、json或yaml文件,也不需要解析它们。此外,属性类型为ckecked。

当实现
资源
类时,我只会使用与我的程序一起部署的JSON文件

main() { 
  var env = const String.fromEnvironment("ENV", defaultValue: "local");
  print("Env === " + env);

}
运行Dart应用程序时为环境提供选项 发布服务--端口=9002--定义环境=dev

参考资料:

我喜欢将配置放在Dart类中,但也可以选择使用包。使用此选项,您可以在yaml文件中输入值。从文件中引用:

使用以下属性定义配置的子类:

class ApplicationConfiguration extends Configuration {
  ApplicationConfiguration(String fileName) : 
      super.fromFile(File(fileName));

  int port;
  String serverHeader;
}
YAML文件应包含这两个区分大小写的密钥:

port: 8000
serverHeader: booyah/1
要读取配置文件,请执行以下操作:

var config = new ApplicationConfiguration("config.yaml");
print("${config.port}"); // -> 8000
print("${config.serverHeader}"); // -> "booyah/1"

另请参见Aqueduct中的设置。

外部配置文件的要点通常是,开发和生产环境可以使用不同的值。这与您提出的解决方案不太合适。如果您不签入它,您就只能这样做。您也不会使用服务密码签入设置文件。这是不需要编译步骤的脚本语言的一个优点。当你说“Dart脚本”时,你是在说什么?@Suragch是的,这就是我的意思。是的,这是一个很好的解决方案,但你不能从外部文件加载配置。如果您想更改生产URL,则需要重新构建和重新部署。