Google Dart内置的/ packages / $ sdk /文件夹是什么?

时间:2014-09-13 11:57:41

标签: dart dart-editor dart2js dartium

在Dart编辑器中构建Google Dart Web应用程序(Pub Build (Generates JS)选项)后,文件夹布局就像this。我的应用程序同时导入了dart:htmldart:async,但似乎我可以将除$sdk文件夹之外的所有内容上传到我的服务器,并且该应用程序可以在Dartium和其他浏览器中正常运行。有什么理由我需要上传$sdk文件夹,它的用途是什么?尝试谷歌搜索,但我没有回答,提前谢谢!

修改:Here's a working example of my project from DartEditor 1.5.8及以下是代码。

hexclock.dart:

import 'dart:html';
import 'dart:async';
DateTime theTime;
String theHour, theMinute, theSecond;
Timer theTimer;
void main() {
  theTimer = new Timer.periodic(new Duration(seconds: 1), getTime);
}

void updateColours(){
  String bgcol = "#" + theHour + theMinute + theSecond;
  querySelector("body").style.backgroundColor = bgcol;
}

void printTime() {
  querySelector("#hour").text = theHour;
  querySelector("#minute").text = theMinute;
  querySelector("#second").text = theSecond;
}

void getTimeInit(){
  theTime = new DateTime.now();
  theHour = "${checkZero(theTime.hour)}";
  theMinute = "${checkZero(theTime.minute)}";
  theSecond = "${checkZero(theTime.second)}";
  printTime();
  updateColours();
}

void getTime(Timer t){
  theTime = new DateTime.now();
  theHour = "${checkZero(theTime.hour)}";
  theMinute = "${checkZero(theTime.minute)}";
  theSecond = "${checkZero(theTime.second)}";
  querySelector("#title").style.opacity = "0";
  querySelector("#clock").style.opacity = "1";
  printTime();
  updateColours();
}

String checkZero(int anInt){
  if (anInt < 10)
    return "0${anInt}";
  else
    return "${anInt}";
}

hexclock.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>HexClock</title>
    <script async type="application/dart" src="hexclock.dart"></script>
    <script async src="packages/browser/dart.js"></script>
    <link href='http://fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="hexclock.css">
  </head>
  <body> 
    <div id="title" class="centre">hexclock</div>
    <div id="clock" class="centre">#<span id="hour">&nbsp;&nbsp;</span><span id="minute">&nbsp;&nbsp;</span><span id="second">&nbsp;&nbsp;</span></div>
  </body>
</html>

pubspec.yaml:

name: HexClock
description: A sample web application
dependencies:
  browser: any

2 个答案:

答案 0 :(得分:2)

pub source code我发现了这个:

  // "$sdk" is a pseudo-package that allows the dart2js transformer to find
  // the Dart core libraries without hitting the file system directly. This
  // ensures they work with source maps.
  var libPath = path.join(sdk.rootDirectory, "lib");
  var sdkSources = listDir(libPath, recursive: true)
      .where((file) => path.extension(file) == ".dart")
      .map((file) {
    var idPath = path.join("lib",
        path.relative(file, from: sdk.rootDirectory));
    return new AssetId('\$sdk', path.toUri(idPath).toString());
  });

我不知道这是否与您所看到的完全匹配,但我的猜测是它与之相关。理论上,这可以通过SDK函数进行客户端调试,这可能非常有用。

答案 1 :(得分:1)

基本上,要部署整个构建文件夹 有些像*.dart.pecompiled.js这样的冗余文件只是CSP环境所必需的(例如Chrome App) 我认为最近有一个更改,因此不再生成这些文件。

可能还有其他事情是多余的,但我还没有看到任何有关它的信息。

您可以尝试使用Dart 1.6版本(稳定版本应该用完)并检查是否已经删除或是否需要进行其他解释。
我总是使用当前1.7 +的bleeding_edge。

另一种解释是,只有在您构建debug模式时才会创建此项 DartEditor默认执行此操作。

从命令行尝试pub build以查看它是否仍然生成。