Dart绝对网址为资产。或者在单独的服务器/文件夹上提供资源

时间:2014-10-10 11:27:53

标签: django dart dart-polymer

我正在构建使用Django作为后端的Polymer.dart应用程序。 我想将所有静态文件保存在“/ static /”目录中,或者使用cdn服务器。 但是“pub build”为脚本和其他资产创建了相对的URL。在“pub build”期间,有没有办法在url中为release发布注入绝对前缀?

UPD: 最简单的解决方案是制作变压器:

import 'dart:async';
import 'package:barback/barback.dart';

class UrlTransformer extends Transformer {
  UrlTransformer.asPlugin();

  String get allowedExtensions => '.html';

  Future apply(Transform transform) {
    return transform.primaryInput.readAsString().then((contents) {
      transform.addOutput(new Asset.fromString(
          transform.primaryInput.id,
          contents.replaceAllMapped(
              new RegExp(r'src="([^\{"]+)"'),
                  (Match m) => "src=\"/static/${m[1]}\"").replaceAll("href=\"", "href=\"/static/")
          )
      );
    });
  }
}

但我不知道如何将dart2js变换器的结果放到适当的文件夹中。生成的JS文件现在与* .html位于同一目录中。 我试图在pubspec中的$ dart2js后放置我的变换器,但是在变压器初始化步骤pub build时会抛出错误。所以我不能为此制造变压器。

1 个答案:

答案 0 :(得分:0)

有一个开放的Polymer问题可以支持此http://dartbug.com/20691

链接的讨论提到了一种解决方法:

服务器可以重定向包含[.../]package/...

的所有请求