使用桌面HTML应用程序框架进行Dart

时间:2014-03-18 12:29:51

标签: javascript html dart desktop

我打算用Dart创建一个跨平台的桌面应用程序。 因为还没有支持Dart的现成框架,我必须首先将Dart编译为Javascript。 由于围绕HTML5构建的桌面框架提供了一些我计划使用的自定义Javascript API(文件系统访问,本机库支持等),因此我无法在Dartium中进行完全开发。

我找到了以下可能符合我需求的框架,但我在使用Dart进行开发时寻找最佳实践。

  • node-webkit:Node和Webkit浏览器引擎的融合。以NPM的形式提供许多包。 Node和Webkit共享相同的线程,因此它在不同世界之间的通信方面是有效的。从Javascript seems problematic编写和访问本机模块。有很好的文档。有node-webkit.dart来访问Dart的一些API。
  • XULRunner:Mozilla产品背后的Gecko引擎作为可重用框架。提供它自己的UI描述符(XUL)。对原生模块(js-ctypes)有更简单的支持。似乎MDN上有详细记录。没有编写Dart库来支持开发。
  • TideKit / TideSDK:支持多种语言(稍后[link] [link]可能会支持Dart)。围绕Webkit构建。似乎有很好的记录。似乎无法找到支持它的酒吧套餐。

也许还有其他一些我尚未见过的选择。我排除了AppJs(已死)和Cappucino(仅限OSX)等项目。

2 个答案:

答案 0 :(得分:6)

一个选项是Electron框架。最初由GitHub为其Atom编辑器创建,它允许您使用Web技术为Linux,OS X或Windows构建跨平台应用程序。还有一个Dart wrapper可用。但是,这个包装器缺乏对API的完全支持,并且似乎没有正在积极开发中。

使用Electron的另一种方法是通过dart:js互操作调用所有电子和节点方法。这个方法比图书馆更成功。

Electron使用存储在main.js中的主进程来运行应用程序,并创建新的BrowserWindow,以加载您的html。我发现在Javascript中简单地编写这个文件比较容易,因为包含太多的JS方法很麻烦,而且这个脚本相对较轻。但是,您可以使用main.dart文件,只需使用dart2js构建它。只要能找到main.js文件,电子就会很开心。

您实际上可以像创建常规网页一样为应用程序构建页面。您可以在dart中编写它,在Dartium中调试,并编译为Javascript以在您的应用程序中对其进行测试。当然,您的代码无法从浏览器访问节点API,因此您每次要使用这些API时都必须构建应用程序。 (如果有人有更好的方法,请指出!)

最后一点需要注意:Dart的IO库不适用于Electron。这有点不足,因为访问文件对于几乎任何应用程序都很重要。您最好的选择是通过dart-js interop使用node的文件系统库。有时,这可能感觉有点像黑客(例如,使用回调时),但它完成了工作。

答案 1 :(得分:4)

有第一种选择。

Chrome Packaged App

您可以使用Dart编写Chrome Packaged App。

dart2js可以将dart代码编译为javascript。

并且感谢chrome.dart包,可以使用chrome API。

Spark就是一个很好的例子。见https://github.com/dart-lang/spark