2014-10-10 23 views
2

我正在构建使用Django作为后端的Polymer.dart应用程序。 我想保留所有静态文件在“/静态/”目录,或使用cdn服务器为例。 但“pub build”为脚本和其他资源制作相关URL。在“pub build”期间有什么方法可以在url中注入绝对前缀?Dart资产的绝对网址。或在单独的服务器/文件夹上提供资产

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变压器的结果apropriate文件夹。生成的JS文件现在与* .html位于同一个目录中。 我试图把我的变压器放在pubspec中的$ dart2js之后,但是在变压器初始化步骤时pub build会引发错误。所以我不能为此做出变压器。

+0

你可以创建一个酒吧构建,增加了变压器的所有请求前缀/更改您的HTML或CSS文件中的URL。 – Fox32 2014-10-10 16:20:35

+0

你的意思是'your_package/static','your_package/web/static'或'your_package/lib/static。你可以在'lib/...'中使用'src'属性引用资源的绝对URL。导入处理有点不同。 – 2014-10-10 20:30:40

+0

我的意思是链接到生产中的资产html应该是静态的,比如'src =“http://eaxmple.com/static/js/my_app.dart.js”'或者与web根目录相关。 – 2014-10-15 10:13:46

回答

0

有一个开放的高分子问题,以支持这一http://dartbug.com/20691

链接的讨论中提到了一个解决办法:

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

相关问题