在Dart编辑器中构建Google Dart Web应用程序(Pub Build (Generates JS)
选项)后,文件夹布局就像this。我的应用程序同时导入了dart:html
和dart: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"> </span><span id="minute"> </span><span id="second"> </span></div>
</body>
</html>
pubspec.yaml:
name: HexClock
description: A sample web application
dependencies:
browser: any
答案 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
以查看它是否仍然生成。