用于将Dart嵌入HTML的脚本标记

时间:2016-04-25 12:43:20

标签: dart

通常,Dart通过以下代码连接到HTML:

<script type="application/dart" src="script.dart"></script>
<script src="packages/browser/dart.js"></script>

通过运行Build,IntellijIdea将第一行转换为<script src="script.dart.js">并删除第二行,OK。但是我有一些问题:

  1. 创建构建文件后,我的缩进被破坏。
  2. 谷歌PageSpeed Insight测试说“太多的http请求”,或类似的东西。
  3. 我用这种方式解决了这个问题。没有Build文件,我使用Dart2js + Terminal创建script.dart.js。至于HTML代码,我在下面写了这个小东西。

    <script type="application/dart" src="script.dart" id="dart-script"></script>
    <script>
      (function() {
        if (navigator.userAgent.indexOf('(Dart)') === -1) {
          var dartScript = document.querySelector('#dart-script');
          dartScript.type = 'application/javascript';
          dartScript.src = 'script.dart.js';
        }
      })();
    </script>
    

    效果很好。你觉得怎么样?

4 个答案:

答案 0 :(得分:1)

我还没有听说过Dart脚本标签的任何问题。

使用https://pub.dartlang.org/packages/dart_to_js_script_rewriter的变换器 删除只有直接支持Dart的浏览器才需要的Dart脚本标记,这只是Dartium,它不应该用于访问Web(仅用于开发目的),因此对于部署,此脚本标记是无关紧要的。

答案 1 :(得分:0)

Dart插件在IntelliJ IDEA,WebStorm和其他JetBrains&#39;中是相同的。集成开发环境。并且它在构建时对源代码没有做任何事情,它只调用{ "template": "dades2", "order": 1, "settings": { "number_of_shards": 1 }, "mappings": { "dades2": { "_all": { "enabled": false }, "properties": { "location": { "type": "geo_point", "geohash": true, "geohash_prefix": true } } } } } ,就像从命令行运行它一样(假设你在谈论&#39; Pub:build&#39; action in pub build文件的上下文。

答案 2 :(得分:0)

我不想挑剔Idea或WebStorm,但这是我在运行Build(OSX El Capitan)之后获得的,html + head移位并且底部有一个巨大的空白。虽然代码的含义是相同的,但我不会对我的缩进进行任何修改,抱歉。

<!DOCTYPE html><html lang="en"><head>
    <!-- My HTML -->
  </head>
  <body>
    <!-- My HTML -->
    <script src="script.dart.js"></script>


</body></html>

答案 3 :(得分:0)

我会用这个新的多价代码来阻止我的谵妄。

<script>
  (function() {
    var elem = document.createElement('script');
    document.querySelector('body').appendChild(elem);
    if (navigator.userAgent.indexOf('(Dart)') === -1) {
      elem.type = 'application/javascript';
      elem.src = 'script.dart.js';
    }
    else {
      elem.type = 'application/dart';
      elem.src = 'script.dart';
    }
  })();
</script>

感谢掌声,这是所有人!