Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dart与桌面HTML应用程序框架_Javascript_Html_Dart_Desktop - Fatal编程技术网

Javascript Dart与桌面HTML应用程序框架

Javascript Dart与桌面HTML应用程序框架,javascript,html,dart,desktop,Javascript,Html,Dart,Desktop,我计划用Dart创建一个跨平台的桌面应用程序。 因为还没有现成的框架支持Dart,所以我必须首先将Dart编译成Javascript。 我无法在Dartium中完全开发,因为围绕HTML5构建的桌面框架提供了一些我计划使用的定制Javascript API(文件系统访问、本机库支持等) 我发现以下框架可能适合我的需要,但我正在寻找使用Dart开发时的最佳实践 :节点和Webkit浏览器引擎的融合。以NPM的形式提供许多包。Node和Webkit共享同一个线程,因此在不同世界之间的通信方面非常高

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

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

  • :节点和Webkit浏览器引擎的融合。以NPM的形式提供许多包。Node和Webkit共享同一个线程,因此在不同世界之间的通信方面非常高效。从Javascript编写和访问本机模块。有很好的文档。从Dart访问一些API是非常困难的
  • :Mozilla产品背后的Gecko引擎是一个可重用的框架。提供它自己的UI描述符(XUL)。更容易支持本机模块()。似乎在MDN上有很好的记录。还没有为支持开发而编写的Dart库
  • /:支持多种语言(以后可能支持Dart)。围绕Webkit构建。似乎有很好的记录。似乎找不到支持它的发布包

也许还有一些我还没有看到的选择。我排除了(dead)和(仅限OSX)等项目。

有第一个选项

你可以用Dart编写Chrome打包的应用程序

dart2js可以将dart代码编译成javascript

多亏了这个软件包,ChromeAPI才可用

Spark就是一个很好的例子。请参见

一个选项是框架。最初由GitHub为Atom编辑器创建,它允许您使用web技术为Linux、OS X或Windows构建跨平台应用程序。还有一个可用的。然而,这个包装器缺乏对API的完全支持,并且似乎没有处于积极的开发阶段

使用Electron的另一种方法是通过
dart:js
interop调用所有的Electron和node方法。我用这种方法比图书馆更成功

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

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


最后一个警告:Dart的IO库不能与Electron一起使用。这是一个小缺点,因为访问文件对于几乎任何应用程序都很重要。您最好通过dart js interop使用节点的文件系统库。有时,这可能感觉有点像黑客(例如,在处理回调时),但它完成了任务。

Chrome打包的应用程序呢?似乎正在朝着它们看起来像本机应用程序的方向发展。另请看,我想目前还没有构建桌面应用程序的最佳实践,因为Dart目前主要专注于web。不过,桌面应用可能会成为未来的目标。@Günther Zöchbauer:我在sunglim的回答中对此发表了评论。我知道Chrome打包的应用。但据我所知,你必须先安装Chrome才能安装我自己的应用程序。我在描述中链接的框架侧重于创建能够独立工作的应用程序。或者可能不是那么简单:2015年以来有什么变化吗?目前,您将如何在桌面应用程序中使用Dart?