【问题标题】:Dart absolute url for assets. Or serving assets on separate server/folderDart 资产的绝对 URL。或在单独的服务器/文件夹上提供资产
【发布时间】:2014-10-10 11:27:52
【问题描述】:

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

统一更新: 所以最简单的解决方案是制作一个变压器:

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 在变压器初始化步骤时它会引发错误。所以我不能为此制作变压器。

【问题讨论】:

  • 您可以为 pub build 创建一个转换器,添加前缀/更改 HTML 或 CSS 文件中的 url。
  • 您是指your_package/staticyour_package/web/static 还是your_package/lib/static. You can have absolute URLs for assets in lib/...` 您使用src 属性引用。导入的处理方式略有不同。
  • 我的意思是生产 html 中的资产链接应该是静态的,例如 src="http://eaxmple.com/static/js/my_app.dart.js" 或与 Web 根目录相关。

标签: django dart dart-polymer


【解决方案1】:

有一个公开的 Polymer 问题来支持这个http://dartbug.com/20691

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

服务器可以重定向所有包含[.../]package/...的请求

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2022-08-04
    • 1970-01-01
    • 2020-08-13
    相关资源
    最近更新 更多