2014-10-10 50 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/...

相關問題