代码之家  ›  专栏  ›  技术社区  ›  Ben Combee

用JavaScript构建独立应用程序

  •  23
  • Ben Combee  · 技术社区  · 16 年前

    随着YUI、JQuery和Prototype等JavaScript框架以及Firebug等调试工具的增强,完全在浏览器端JavaScript中开发应用程序似乎是制作益智游戏和专用计算器等简单应用程序的好方法。

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

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

    14 回复  |  直到 16 年前
        1
  •  16
  •   Joshua    16 年前

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

    升幅+/-(%)

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

    下降趋势:

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

    底线:去吧。我做到了。

        2
  •  7
  •   ScottKoon    16 年前

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

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

        3
  •  5
  •   Sören Kuklau Keith Boynton    16 年前

    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。

        4
  •  2
  •   mk.    16 年前

    这样做的缺点是,你只能任由他们启用js。我不确定现在这有什么大不了的。几乎每个浏览器都支持js,并且默认启用了js。

    当然,另一个不利因素是性能。你再次受制于处理所有密集工作的客户。这也可能没什么大不了的,而且取决于你正在构建的应用程序的类型。

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

    不完全是客户端,但好吧。

        5
  •  2
  •   Ryan Fox    16 年前

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

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

        6
  •  2
  •   pc1oad1etter    16 年前

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

        7
  •  1
  •   Greg Hewgill    16 年前

    Gears 可能会提供您所需的客户端持久数据存储。不过,没有一种不暴露源代码的好方法。你可以把它弄糊涂,但这只会有所帮助。

    我做过这样的简单应用程序,比如 Sudoku solver .

        8
  •  1
  •   conmulligan    16 年前

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

        9
  •  1
  •   AndrewBurton    16 年前

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

        10
  •  1
  •   Kevin    16 年前
        11
  •  1
  •   Doug Neiner    15 年前

    关于从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

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

        12
  •  0
  •   Ryan Fox    16 年前

    我的RSS订阅源对我很有帮助——我发现了Javascript roguelike!

    它被称为 The Tombs of Asciiroth .

        13
  •  0
  •   Brian Cully    16 年前

    考虑到你无论如何都要编写一些服务器代码,在服务器上为许多域(地址簿、扑克分数、gui配置等)保留存储是有意义的。对于Webkit或Gears中大小的任何东西,你也可以将其保存在服务器上。

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

    1. 你可以相当简单地将其集成为典型MVC框架中的模型层,
    2. 用户可以获得一致的视图,而无需与浏览器/PC绑定,也无需在不太理想的环境(网吧)中查看。

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

        14
  •  0
  •   Me myself and I    15 年前

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

    我将qooxdoo与YUI和ext进行了比较,我认为qooxdoo是程序员的选择——从程序员的角度来看,YUI并没有qooxdo0那么完美,ext的许可模式也不那么友好。

    qooxdoo的一些优点(对我来说)是:

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

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

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