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
会引发错误。所以我不能为此做出变压器。
你可以创建一个酒吧构建,增加了变压器的所有请求前缀/更改您的HTML或CSS文件中的URL。 – Fox32 2014-10-10 16:20:35
你的意思是'your_package/static','your_package/web/static'或'your_package/lib/static。你可以在'lib/...'中使用'src'属性引用资源的绝对URL。导入处理有点不同。 – 2014-10-10 20:30:40
我的意思是链接到生产中的资产html应该是静态的,比如'src =“http://eaxmple.com/static/js/my_app.dart.js”'或者与web根目录相关。 – 2014-10-15 10:13:46