在JavaScript中构建独立应用程序

时间:2008-08-18 19:52:16

标签: javascript deployment web-applications browser

随着YUI,JQuery和Prototype等JavaScript框架以及Firebug等调试工具的强大功能,完全在浏览器端JavaScript中运行应用程序看起来像是制作益智游戏和专用计算器等简单应用程序的好方法。 / p>

除了暴露您的源代码之外,这还有什么缺点吗?你应该如何处理这种程序的数据存储?

编辑:是的,Gears和cookies可用于本地存储,但您无法轻松访问用户已拥有的文件和其他对象。您也无法将数据保存到用户的文件中,而无需调用某些浏览器功能,如打印到PDF或将页面保存为文件。

14 个答案:

答案 0 :(得分:16)

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

上行:

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

缺点:

  • 浏览器之间的差异(尤其是IE)
  • 代码库可伸缩性(没有对名称空间和类的内在支持)
  • 没有好的调试器(特别是,对于IE来说)
  • 性能(尽管FireFox和Safari取得了很大进展)
  • 您还需要编写一些服务器代码。

底线:去吧。我做到了。

答案 1 :(得分:7)

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

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

答案 2 :(得分:5)

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

格雷格已经把你指向了Gears;此外,HTML 5将带有标准化的本地存储方式。 Safari 3.1附带一个实现,其中您拥有一个具有用户可设置的最大大小的每站点SQLite数据库,以及built-in database browser with SQL querying。不幸的是,我们需要很长时间才能获得广泛的浏览器支持。在那之前,Gears确实是另一种选择(但不适用于Safari ... yet!)。为了更简单的存储,当然总是有cookie。

答案 3 :(得分:2)

这样做的缺点是你可以让他们开启js。我现在不确定这是一件大事。实际上,每个浏览器都支持js并默认启用它。

当然另一个缺点是表现。你再次受到处理所有密集工作的客户的支配。这也可能不是什么大不了的事情,并且取决于您正在构建的应用程序的类型。

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

不完全是客户端,但是哦。

答案 4 :(得分:2)

Nihilogic(不是我的网站)使用Javascript做很多事情。他们甚至有几个games他们用Javascript制作。

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

答案 5 :(得分:2)

如果您想编写独立的JavaScript应用程序,请查看XULrunner。这是Firefox构建的基础,但它也是为了将其作为应用程序运行时分发而构建的。您将使用JavaScript编写一些界面并使用JavaScript代码。

答案 6 :(得分:1)

Gears可能会提供您需要的客户端持久数据存储。但是,没有一种不暴露源代码的好方法。你可以对它进行模糊处理,但这只会有所帮助。

我已经完成了像Sudoku solver这样的简单应用。

答案 7 :(得分:1)

您可能会遇到性能问题,因为您完全受客户端Javascript解释器的支配。 Gears将是一种很好的数据存储方式,但我认为它并没有如此深入到市场。如果你对这类事情不挑剔,你可以使用cookies。

答案 8 :(得分:1)

我和ScottKoon在一起,Adobe AIR很棒。到目前为止,我真的只制作了一个非常好的(imho)小部件,但是我使用jQuery和Prototype.js这样做了,因为我没有必要学习一个全新的事件模型。 Adobe AIR非常甜蜜,内存占用空间也不算太差,升级到新版本内置于AIR中,因此它几乎是自动的,最重要的是它的跨平台...它们甚至还有Linux的alpha版本,但它在我的Eee上已经很好用了。

答案 9 :(得分:1)

GWT中的独立游戏:

  1. http://gpokr.com/
  2. http://kdice.com/

答案 10 :(得分:1)

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

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

  1. Downloadify Home Page
  2. Source Code & Documentation on Github
  3. See It In Use at Starter for jQuery
  4. 我希望尽快添加对非文本文件的支持,但这是一个开始。

答案 11 :(得分:0)

鉴于你无论如何都要编写一些服务器代码,为许多域(地址簿,扑克评分,gui配置等)保留服务器上的存储是有意义的。对于任何大小的东西您可以将它保存在您的服务器上。

。您可以将它保存在Webkit或Gears中

将它保留在服务器上的优势有两方面:

  1. 您可以将其简单地集成为典型MVC框架中的模型层,并且
  2. 用户可以获得一致的视图,而不必依赖于浏览器/ PC或不太理想的环境(网吧)。
  3. 用于处理此问题的服务器代码也可能相当简单,特别是如果它是在考虑此任务的情况下编写的,因此这不是一个巨大的认知负担。

答案 12 :(得分:0)

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

我将qooxdoo与YUI和ext进行了比较,我认为qooxdoo是程序员的方式 - 从程序员的角度来看,YUI并不像qooxdoo那样优秀,而且ext的许可模式并不那么友好。

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

  • 非常干净的代码
  • 我在Javascript框架中看到的最好的OO编程模型
  • 极其丰富的UI小部件库

它还包含一个用于单元测试的测试运行器,一个API文档生成器和读取器,一个日志记录工具,以及一些用于调试的有用功能,分组在一个名为Inspector的东西下。

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

答案 13 :(得分:0)

我的RSS源很好地为我服务 - 我发现Javascript roguelike!

它被称为The Tombs of Asciiroth