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

Nag*_*gyI 4 html javascript desktop dart

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

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

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

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

hkk*_*hkk 6

一种选择是Electron框架.最初由GitHub为其Atom编辑器创建,它允许您使用Web技术为Linux,OS X或Windows构建跨平台应用程序.还有一个可用的Dart包装器.但是,此包装器缺乏对API的完全支持,并且似乎没有处于活动开发状态.

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

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

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

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


Sun*_*Lim 4

有第一个选项。

Chrome 打包应用程序

您可以使用 Dart 编写 Chrome 打包应用程序。

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

感谢chrome.dart包,chrome API 可用。

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