用 JavaScript 构建独立应用程序
-
08-06-2019 - |
题
随着 YUI、JQuery 和 Prototype 等 JavaScript 框架以及 Firebug 等调试工具的增强,完全使用浏览器端 JavaScript 开发应用程序看起来是制作益智游戏和专用计算器等简单应用程序的好方法。
除了暴露源代码之外,这还有什么缺点吗?对于这种程序,你应该如何处理数据存储呢?
编辑:是的,Gears 和 cookie 可用于本地存储,但您无法轻松访问用户已有的文件和其他对象。如果不让用户调用某些浏览器功能(例如打印为 PDF 或将页面保存为文件),您也无法将数据保存到用户的文件中。
解决方案
我用 JS 编写了几个应用程序,包括电子表格。
优点:
- 伟大的语言
- 代码运行审查周期短
- DOM 操作非常适合 UI 设计
- 每台计算机(和电话)上的客户端
缺点:
- 浏览器之间的差异(尤其是IE)
- 代码库可扩展性(没有对命名空间和类的内在支持)
- 没有好的调试器(特别是对于 IE)
- 性能(尽管 FireFox 和 Safari 已经取得了很大的进步)
- 您还需要编写一些服务器代码。
底线:大胆试试吧。我做到了。
其他提示
使用 JavaScript 开发简单的桌面应用程序或游戏的另一种选择是 Adobe AIR. 。您可以使用 HTML + JavaScript 或使用 Flash/Flex 或两者的组合来构建应用程序代码。它的优点是跨平台(实际上是跨平台,Linux、OS X、Windows。不仅仅是 Windows 和 OS X)。
哎呀,这可能是您作为开发人员的职业生涯中唯一一次可以编写网页并且仅针对一种浏览器。
芽核 是一个完全由 JavaScript 托管的应用程序框架,特别借鉴了 Cocoa(例如 KVO)和 Ruby on Rails(例如为模型、视图和控制器使用 CLI 生成器)的概念。它包括原型,但在此基础上构建了大量的东西,例如复杂的控件。它是 相片 演示可以说是令人印象深刻(尤其是在 Safari 3.1 中)。
格雷格已经向您介绍了《战争机器》;此外,HTML 5 将附带标准化的本地存储方式。Safari 3.1 附带了一个实现,其中您有一个每个站点的 SQLite 数据库,该数据库具有用户可设置的最大大小,以及 内置数据库浏览器,支持 SQL 查询. 。不幸的是,我们还需要很长时间才能获得广泛的浏览器支持。在那之前,Gears 确实是一个替代方案(但不适用于 Safari……然而!)。为了更简单的存储,当然总是有cookie。
这样做的缺点是你会受到他们启用 js 的摆布。我不确定现在这有什么大不了的。几乎每个浏览器都支持 js 并且默认启用它。
当然,另一个缺点是性能。您再次受到处理所有密集工作的客户的摆布。这也可能没什么大不了的,并且取决于您正在构建的应用程序的类型。
我从未使用过 Gears,但看起来值得一试。备份计划是通过 ajax 运行一些服务器端脚本,将数据转储到某处。
不完全是客户端,但是哦,好吧。
如果您想编写独立的 JavaScript 应用程序,请查看 XUL跑者. 。这是 Firefox 的构建基础,但它的构建也是为了让您可以将其作为应用程序运行时进行分发。您将用 JavaScript 编写一些界面,并在您的代码中使用 JavaScript。
鉴于您完全受客户端 Javascript 解释器的支配,您可能会遇到性能问题。齿轮将是一种很好的数据存储方式,但我认为它还没有渗透到市场那么多。如果您对此类事情不挑剔的话,您可以只使用cookie。
我和 ScottKoon 在一起,Adobe AIR 非常棒。到目前为止,我实际上只制作了一个非常好的(恕我直言)小部件,但我使用 jQuery 和 Prototype.js 来实现,它们以如此美妙的方式落地,因为我不必学习全新的事件模型。Adobe AIR 真的很不错,内存占用也不错,AIR 内置了升级到新版本的功能,所以它几乎是自动的,最重要的是它是跨平台的......他们甚至有一个适用于 Linux 的 alpha 版本,但它已经在我的 Eee 上运行得很好了。
GWT 中的独立游戏:
关于从 JavaScript 应用程序保存文件:
我对客户端应用程序的可能性感到非常兴奋。Flash 10 引入了创建文件并直接保存在浏览器中的功能。我觉得这太酷了,所以我构建了一个 javascript+flash 组件来包装保存功能。目前它仅适用于创建基于文本的文件(vcard、ical、xml、html、css 等)
我希望尽快添加对非文本文件的支持,但这只是一个开始。
我的 RSS 提要对我很有帮助——我发现了 Javascript Roguelike!
它被称为 阿斯西罗斯墓.
考虑到您无论如何都会编写一些服务器代码,因此在服务器上保留许多域(地址簿、扑克分数、GUI 配置等)的存储是有意义的。将进入 Webkit 或 Gears,您也可以将其保留在您的服务器上。
将其保留在服务器上的优点有两个:
- 您可以相当简单地将其集成为典型 MVC 框架中的模型层,并且,
- 用户无需依赖浏览器/PC,或在不太理想的环境(网吧)中即可获得一致的视图。
用于处理此问题的服务器代码也可能相当简单,特别是如果它是根据此任务编写的,因此这并不是一个巨大的认知负担。
和 qooxdoo 一起去吧。他们最近实现了 1.0,尽管大多数用户表示至少在两个版本之前 1.0 已经成熟。
我将 qooxdoo 与 YUI 和 ext 进行了比较,我认为 qooxdoo 是程序员的最佳选择 - 从程序员的角度来看,YUI 不像 qooxdoo 那么精致,而 ext 的许可模式不太友好。
qooxdoo(对我来说)的一些优点是:
- 非常干净的代码
- 我在 Javascript 框架中见过的最好的 OO 编程模型
- 极其丰富的 UI 小部件库
它还具有一个用于单元测试的测试运行程序、一个 API 文档生成器和阅读器、一个日志记录工具以及几个用于调试的有用功能,这些功能被分组在称为“检查器”的东西下。
唯一的缺点是 qooxdoo 没有现成的主题(比如皮肤)。但创建自己的主题非常容易。