Google Dart构建中的/packages/$sdk/文件夹用于什么?

Google Dart构建中的/packages/$sdk/文件夹用于什么?,dart,dart-editor,dart2js,dartium,Dart,Dart Editor,Dart2js,Dartium,在Dart编辑器中构建Google Dart web应用程序(发布构建(生成JS)选项)后,文件夹布局如下所示。我的应用程序同时导入了dart:html和dart:async,但我似乎可以将$sdk文件夹以外的所有内容上载到我的服务器,并且该应用程序在Dartium和其他浏览器中都能正常运行。我需要上传$sdk文件夹有什么原因吗?为什么?尝试过谷歌搜索,但我没有看到答案,提前谢谢 编辑:下面是它的代码 hexclock.dart: 导入'dart:html'; 导入“dart:async”; 日

在Dart编辑器中构建Google Dart web应用程序(发布构建(生成JS)选项)后,文件夹布局如下所示。我的应用程序同时导入了
dart:html
dart:async
,但我似乎可以将
$sdk
文件夹以外的所有内容上载到我的服务器,并且该应用程序在Dartium和其他浏览器中都能正常运行。我需要上传
$sdk
文件夹有什么原因吗?为什么?尝试过谷歌搜索,但我没有看到答案,提前谢谢

编辑:下面是它的代码

hexclock.dart:

导入'dart:html';
导入“dart:async”;
日期时间;
把小时、分钟、秒串起来;
定时器;
void main(){
Timer=new Timer.periodic(新的持续时间(秒:1),getTime);
}
void updateColor(){
字符串bgcol=“#”+小时+分钟+秒;
querySelector(“body”).style.backgroundColor=bgcol;
}
无效打印时间(){
查询选择器(“小时”)。text=小时;
查询选择器(“分钟”)。text=分钟;
querySelector(“#second”).text=theSecond;
}
void getTimeInit(){
theTime=新的DateTime.now();
theHour=“${checkZero(theTime.hour)}”;
theMinute=“${checkZero(theTime.minute)}”;
theSecond=“${checkZero(theTime.second)}”;
打印时间();
更新颜色();
}
void getTime(计时器t){
theTime=新的DateTime.now();
theHour=“${checkZero(theTime.hour)}”;
theMinute=“${checkZero(theTime.minute)}”;
theSecond=“${checkZero(theTime.second)}”;
查询选择器(“标题”).style.opacity=“0”;
查询选择器(“时钟”).style.opacity=“1”;
打印时间();
更新颜色();
}
字符串校验零(int-anInt){
if(anInt<10)
返回“0${anInt}”;
其他的
返回“${anInt}”;
}
hexclock.html:


十六进制时钟
十六进制时钟
#      
pubspec.yaml:

名称:HexClock
描述:一个示例web应用程序
依赖项:
浏览器:有吗
在中,我发现:

/“$sdk”是一个伪包,允许dart2js转换器查找
//Dart核心库不会直接命中文件系统。这
//确保他们使用源映射。
var libPath=path.join(sdk.rootDirectory,“lib”);
var sdkSources=listDir(libPath,递归:true)
.where((文件)=>path.extension(文件)==“.dart”)
.map((文件){
var idPath=path.join(“lib”,
相对(文件,来自:sdk.rootDirectory));
返回新的AssetId(“\$sdk”,path.toUri(idPath.toString());
});

我不知道这是否与你看到的完全相符,但我猜这是相关的。这在理论上甚至可以通过SDK功能进行客户端调试,这可能非常有用。

基本上,整个构建文件夹都是要部署的。
有一些冗余文件,如
*.dart.pecompiled.js
,仅在CSP环境(例如Chrome应用程序)中需要这些文件。
我认为最近有一个变化,使这些文件不再生成

可能还有其他多余的东西,但我还没有看到任何关于它的信息

您可以尝试使用Dart 1.6版本(stable应该是out),并检查此版本是否被删除或是否需要其他解释。
我使用的是always bleeding_edge,目前为1.7+

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


请尝试从命令行中执行
pub build
,查看它是否仍然生成。

我没有此文件夹。你用的是什么飞镖版本?我有飞镖编辑器1.5.8好的,我知道了。我已经更新到1.6,现在当我从Dart编辑器运行
build
时,
/packages/
中的
/$sdk/
文件夹仍会出现,但
/browser/
文件夹不会出现(而且构建的应用程序不工作!)。当我从命令行运行
pub build
时,
/packages/
文件夹根本不会出现。浏览器在依赖项文件中,所以我不知道这里发生了什么。你说这是一个简单的例子。你能发布代码(
index.html
index.dart
pubspec.yaml
)让我们看看吗。也许你要查找的(浏览器目录)只是内联到
*.html
*.dart
文件中。您是否尝试在浏览器中打开条目页?我没有对构建输出进行过太多的研究,但通常如果它在从DartEditor构建时运行,那么它也会在从命令行构建时运行(只要您不使用反射/镜像;-))您的
pubspec.yaml
依赖项中是否有
browser
包?也许这以前是一个可传递的依赖项,现在不再是了。您还可以尝试使用参数
启动Chrome--允许从文件访问文件
太好了!这本不应该是必要的,但事实上是必要的。谢谢你的反馈。