23

随着 YUI、JQuery 和 Prototype 等 JavaScript 框架以及 Firebug 等调试工具的强大功能,完全使用浏览器端 JavaScript 编写应用程序似乎是制作简单应用程序(如益智游戏和专用计算器)的好方法。

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

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

4

14 回答 14

16

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

优势:

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

缺点:

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

底线:去吧。我做到了。

于 2008-08-18T21:19:27.827 回答
7

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

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

于 2008-08-18T21:37:24.203 回答
5

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

Greg 已经向您指出了 Gears;此外,HTML 5 将提供标准化的本地存储方式。Safari 3.1 附带了一个实现,其中您有一个具有用户可设置最大大小的每个站点 SQLite 数据库,以及一个带有 SQL 查询的内置数据库浏览器。不幸的是,我们还需要很长时间才能获得广泛的浏览器支持。在那之前,Gears 确实是一个替代品(但不是 Safari……<a href="http://code.google.com/p/gears/wiki/BuildingGearsForSafari" rel="noreferrer"> 还没有!)。为了更简单的存储,当然总是有 cookie。

于 2008-08-18T20:12:46.747 回答
2

这样做的不利之处在于,您在启用 js 的情况下任由他们摆布。我不确定这是否是一件大事。几乎每个浏览器都支持 js 并且默认启用它。

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

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

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

于 2008-08-18T20:02:37.140 回答
2

Nihilogic(不是我的网站)用 Javascript 做了很多事情。他们甚至有几款用 Javascript 制作的游戏

我还看到了一个用 Javascript 制作的简洁的 roguelike 游戏。不幸的是,我不记得它叫什么了...

于 2008-08-18T20:15:24.820 回答
2

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

于 2008-10-28T00:33:35.857 回答
1

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

我已经为Sudoku 求解器之类的东西做过这样的简单应用程序。

于 2008-08-18T19:55:13.787 回答
1

鉴于您完全受制于客户端的 Javascript 解释器,您可能会遇到性能问题。Gears 将是一种很好的数据存储方式,但我认为它在市场上的渗透率并不高。如果您对这类事情不挑剔,您可以只使用 cookie。

于 2008-08-18T20:31:02.513 回答
1

GWT 中的独立游戏:

  1. http://gpokr.com/
  2. http://kdice.com/
于 2008-08-18T20:50:06.170 回答
1

我和 ScottKoon 在一起,Adobe AIR 很棒。到目前为止,我真的只制作了一个非常好的(恕我直言)小部件,但是我使用 jQuery 和 Prototype.js 做到了这一点,因为我不必学习全新的事件模型,所以效果非常好。Adobe AIR 真的很可爱,内存占用也不算太差,升级到新版本是内置在 AIR 中的,所以它几乎是自动的,最重要的是它是跨平台的……他们甚至有一个适用于 Linux 的 alpha 版本,但它已经在我的 Eee 上运行得很好。

于 2008-09-02T16:53:44.587 回答
1

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

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

  1. 下载主页
  2. Github 上的源代码和文档
  3. 在 Starter for jQuery 中查看它的使用情况

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

于 2009-11-21T04:55:58.900 回答
0

我的 RSS 提要对我很有帮助——我发现 Javascript 流氓!

它被称为Asciiroth 的陵墓

于 2008-08-19T17:03:38.250 回答
0

鉴于您无论如何都要编写一些服务器代码,因此在服务器上为很多域(地址簿、扑克分数、gui 配置等)保留存储空间是有意义的。 '将进入 Webkit 或 Gears,您也可以将其保存在您的服务器上。

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

  1. 您可以将其作为模型层相当简单地集成到典型的 MVC 框架中,并且,
  2. 用户无需受限于浏览器/PC 或不太理想的环境(网吧)即可获得一致的视图。

处理这个问题的服务器代码也可以相当简单,特别是如果它是在考虑到这个任务的情况下编写的,所以它不是一个巨大的认知负担。

于 2008-09-16T22:59:43.543 回答
0

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

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

qooxdoo 的几个优点(对我来说)是:

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

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

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

于 2010-03-09T14:16:40.233 回答