用JavaScript构建独立的应用程序

时间:2020-03-05 18:40:30  来源:igfitidea点击:

随着诸如YUI,JQuery和Prototype之类的JavaScript框架以及诸如Firebug之类的调试工具的强大功能,完全在浏览器端JavaScript中完成应用程序似乎是一种制作益智游戏和专用计算器等简单应用程序的好方法。

除了公开源代码之外,这还有其他不利之处吗?我们应该如何处理此类程序的数据存储?

编辑:是的,Gears和cookie可以用于本地存储,但是我们不能轻松地访问用户已经拥有的文件和其他对象。如果没有让用户调用某些浏览器功能(例如打印到PDF或者将页面另存为文件),也无法将数据保存到文件中。

解决方案

回答

Gears可能会提供我们需要的客户端持久性数据存储。但是,没有一种不公开源代码的绝妙方法。我们可以对其进行混淆,但这只会有所帮助。

我已经为Sudoku求解器之类的东西做了一些简单的应用程序。

回答

不利的一面是我们受他们启用js的摆布。我不确定现在这有什么大不了的。几乎每个浏览器都支持js,并且默认情况下启用了js。

当然,另一个缺点是性能。我们再次受客户处理所有繁重工作的支配。这也可能没什么大不了的,它取决于我们正在构建的应用程序的类型。

我从未使用过Gears,但看起来值得一试。备份计划是通过ajax运行一些服务器端脚本,该脚本将数据转储到某个地方。

并不完全是客户端,但是很好。

回答

SproutCore是一个完全由JavaScript托管的应用程序框架,特别借鉴了Cocoa(例如KVO)和Ruby on Rails(例如在模型,视图和控制器中使用CLI生成器)的概念。它包括Prototype,但在此之上构建了很多东西,例如复杂的控件。它的"照片"演示可以说是令人印象深刻的(尤其是在Safari 3.1中)。

格雷格已经将我们指向了Gears;此外,HTML 5将带有标准化的本地存储方式。 Safari 3.1附带一个实现,其中我们具有一个每个站点的SQLite数据库,该数据库具有用户可设置的最大大小,以及一个带有SQL查询的内置数据库浏览器。不幸的是,要获得广泛的浏览器支持还需要很长时间。在此之前,Gears确实是一个替代品(但Safari浏览器还没有?)。为了简化存储,当然总会有cookie。

回答

Nihilogic(不是我的网站)使用Javascript做了大量工作。他们甚至有一些用Java语言制作的游戏。

我也看过用Javascript制作的整洁的roguelike游戏。不幸的是,我不记得它叫什么了。

回答

假设我们完全受客户端Java解释器的支配,则可能会遇到性能问题。 Gears将是一种很好的数据存储方式,但是我认为它并没有渗透到市场中。如果我们对这类事情不挑剔,则可以只使用Cookie。

回答

GWT中的独立游戏:

  • http://gpokr.com/
  • http://kdice.com/

回答

我已经用JS编写了几个应用程序,包括电子表格。

上行空间:

  • 很棒的语言
  • 较短的代码运行审查周期
  • DOM操作非常适合UI设计
  • 每台计算机(和电话)上的客户

缺点:

  • 浏览器之间的差异(尤其是IE)
  • 代码库可伸缩性(不固有支持名称空间和类)
  • 没有好的调试器(尤其是对于IE)
  • 性能(即使FireFox和Safari取得了巨大进步)
  • 我们还需要编写一些服务器代码。

底线:去吧。我做到了

回答

使用JavaScript开发简单的桌面(如应用程序或者游戏)的另一种选择是Adobe AIR。我们可以使用HTML + JavaScript或者使用Flash / Flex或者两者结合来构建应用程序代码。它具有跨平台(实际上是跨平台,Linux,OS X和Windows,而不仅仅是Windows和OS X)的优势。

哎呀,这可能是我们作为开发人员的职业生涯中唯一可以编写网页并且仅针对一个浏览器的时间。

回答

我的RSS提要对我很好,我发现Javascript像roguelike!

它被称为阿西洛斯之墓。

回答

我在这里与ScottKoon在一起,Adobe AIR很棒。到目前为止,我确实只制作了一个非常不错的(imho)小部件,但是我使用jQuery和Prototype.js进行了这种编写,它们以这种奇妙的方式进行铺垫,因为我不必学习全新的事件模型。 Adobe AIR真的很不错,内存占用也不算太差,AIR内置了升级到新版本的功能,因此它几乎是自动的,而且最好是跨平台的……它们甚至具有适用于Linux的alpha版本,但它在我的Eee上已经可以很好地工作了。

回答

既然我们仍然要编写一些服务器代码,那么在服务器上为许多域(地址簿,扑克分数,GUI配置等)保留存储空间就很有意义了。使用Webkit或者Gears,我们也可以将其保存在服务器上。

将其保留在服务器上的好处有两个:

  • 我们可以相当简单地将其作为模型层集成在典型的MVC框架中,并且,
  • 用户可以获得一致的视图,而不必受限于他们的浏览器/ PC,或者在不太理想的环境中(Internet Cafs)。

用于处理此问题的服务器代码也可能相当琐碎,尤其是在考虑到此任务的情况下编写的代码,因此这并不是一个巨大的认知负担。

回答

如果要编写独立的JavaScript应用程序,请查看XULrunner。这是Firefox构建的基础,但是它也是构建的,因此我们可以将其作为应用程序运行时进行分发。我们将使用JavaScript编写一些接口,并将JavaScript用于代码。

回答

关于从javascript应用程序保存文件:

我对客户端应用程序的可能性感到非常兴奋。 Flash 10引入了在浏览器中创建保存文件的功能。我以为这很酷,所以我构建了一个javascript + flash组件来包装保存功能。目前,它仅适用于创建基于文本的文件(vcard,ical,xml,html,css等)

  • 下载主页
  • Github上的源代码和文档
  • 在jQuery Starter上看到它的使用

我希望尽快添加对非文本文件的支持,但这是一个开始。

回答

和qooxdoo一起去。他们最近实现了1.0,尽管大多数用户说它至少在两个版本之前已经成熟到1.0。

我将qooxdoo与YUI和ext进行了比较,并且我认为qooxdoo是程序员的必经之路从程序员的角度来看,YUI并不像qooxdoo那样完美,并且ext具有不太友好的许可模型。

qooxdoo的一些优点(对我而言)是:

  • 非常干净的代码
  • 我在Javascript框架中见过的最好的OO编程模型
  • 一个非常丰富的UI小部件库

它还具有用于单元测试的测试运行程序,API doc生成器和阅读器,日志记录工具以及用于调试的一些有用功能,这些功能归类为Inspector。

唯一的缺点是qooxdoo没有现成的主题(如皮肤)。但是创建自己的主题非常容易。