2008-08-18 30 views
19

隨着JavaScript框架(如YUI,JQuery和Prototype)以及像Firebug這樣的調試工具的強大功能,完全在瀏覽器端JavaScript中執行應用程序看起來是一種製作簡單應用程序(如益智遊戲)的好方法和專門的計算器。在JavaScript中構建獨立應用程序

除了公開你的源代碼之外,這有什麼缺點嗎?你應該如何處理這種程序的數據存儲?

編輯:是的,齒輪和餅乾可以用於本地存儲,但不能輕鬆訪問用戶已有的文件和其他對象。您也無法將數據保存到用戶的文件,而無需調用某些瀏覽器功能,如打印到PDF或將頁面另存爲文件。

+1

當我問這個問題時,我在Palm工作,Palm在2009年初推出了什麼? webOS,一個所有應用程序都是用JavaScript編寫的系統。 :) – 2010-09-02 23:27:58

回答

14

我已經寫在JS幾個應用包括電子表格。

潛在上升空間:

  • 偉大的語言
  • 短代碼,運行審查週期
  • DOM操作是偉大的UI設計
  • 客戶的每一臺計算機(和電話)

缺點:

  • 瀏覽器(尤其是IE)
  • 代碼庫的可擴展性之間的差異(與命名空間和類沒有內在的支持)
  • 沒有很好的調試器(尤其是,再次,對於IE)
  • 性能(即使很大的進步使用FireFox和Safari製作)
  • 您還需要編寫一些服務器代碼。

底線:去吧。我做到了。

+5

IE8開發工具實際上有一個很好的JavaScript調試器。我知道IE = PureEvil,但是,我想我會指出。 IE的地獄正在變得越來越好。 – jaywon 2009-11-21 04:53:59

1

Gears可能會提供您所需的客戶端持久性數據存儲。儘管如此,沒有公開你的源代碼的非常好的方法。你可以混淆它,但這隻會有所幫助。

我已經完成了像Sudoku solver這樣的簡單應用程序。

2

這樣做的不利之處在於,你受到啓用js的他們的擺佈。我不確定現在這是一個大問題。幾乎每個瀏覽器都支持js,並且默認啓用它。

當然,另一個缺點是性能。您再次受到處理所有密集工作的客戶的擺佈。這也可能不是什麼大問題,並且取決於您正在構建的應用類型。

我從來沒有使用齒輪,但它看起來像是值得一試。備份計劃將通過ajax運行某些服務器端腳本,將數據轉儲到某處。

不完全客戶端,但哦。

5

SproutCore是一個完全由JavaScript託管的應用程序框架,特別借鑑Cocoa(如KVO)和Ruby on Rails(例如爲您的模型,視圖和控制器使用CLI生成器)的概念。它包括Prototype,但是在其上創建了大量的東西,比如複雜的控件。其Photos演示可以說是令人印象深刻(特別是在Safari 3.1中)。

格雷格已經指出你齒輪;另外,HTML 5將帶有標準化的本地存儲方式。 Safari 3.1附帶了一個實現,其中具有用戶可設置的最大大小的每個站點SQLite數據庫以及一個built-in database browser with SQL querying。不幸的是,直到我們可以期待廣泛的瀏覽器支持,還有很長一段時間。在此之前,Gears確實是一種替代方案(但不適用於Safari ... yet!)。爲了更簡單的存儲,當然總是有餅乾。

2

Nihilogic(不是我的網站)用Javascript做了很多東西。他們甚至有幾個games他們已經在Javascript中。

我也看到了一個用Javascript製作的整潔的roguelike遊戲。不幸的是,我不記得它叫什麼......

1

由於你完全受到客戶端的Javascript解釋器的支配,你可能會遇到性能問題。齒輪將是數據存儲的一種很好的方式,但我認爲它並沒有深入這個市場。如果你對這種事情不挑剔,你可以使用cookies。在GWT

7

在JavaScript中開發簡單桌面應用程序或遊戲的另一種選擇是Adobe AIR。您可以使用HTML + JavaScript或使用Flash/Flex或兩者的組合來構建應用程序代碼。它具有跨平臺的優勢(實際上是跨平臺的,Linux,OS X和Windows,不僅僅是Windows和OS X)。

這可能是您作爲開發人員職業生涯中唯一一次可以編寫網頁並且只針對一個瀏覽器的時間。

+1

自2011年6月起,Adobe AIR不再支持Linux。 http://blogs.adobe.com/open/2011/06/focusing-on-the-next-linux-client.html – AlexStack 2011-08-11 11:48:05

0

我的RSS訂閱服務給了我很好的服務 - 我發現Javascript roguelike!它們被稱爲The Tombs of Asciiroth

1

我和ScottKoon在這裏,Adobe AIR很棒。到目前爲止,我確實只做了一個非常好的(imho)小部件,但是我使用jQuery和Prototype.js,它們以如此美妙的方式呈現,因爲我不必學習全新的事件模型。 Adobe AIR非常好,內存足跡也不錯,升級到新版本已經內置到AIR中,所以它幾乎是自動的,最重要的是它是跨平臺的...他們甚至還有一個Linux的Alpha版本,但它已經在我的Eee上運行得非常好。

+0

自2011年6月起,Adobe AIR不再支持Linux。 http://blogs.adobe.com/open/2011/06/focusing-on-the-next-linux-client.html – AlexStack 2011-08-11 11:47:42

0

鑑於您將要編寫一些服務器代碼,因此在服務器上保存大量域名(地址簿,撲克分數,GUI配置等)的存儲是有意義的。你可以在Webkit或Gears中獲得的大小,你也可以保存在你的服務器上。

保持它在服務器上的好處是雙重的:

  1. 你可以很簡單地整合它作爲一個典型的MVC框架模型層,並且,
  2. 用戶獲得了一致的看法,而不被綁定到他們的瀏覽器/個人電腦,或在一個不太理想的環境中(互聯網咖啡館)。

處理這個問題的服務器代碼也可能相當微不足道,特別是如果它是爲了這個任務而編寫的,所以它不是一個巨大的認知負擔。

2

如果你想編寫一個獨立的JavaScript應用程序,請看XULrunner。這是Firefox的基礎,但它也被構建爲可以將其作爲應用程序運行時分發。您將在JavaScript中編寫一些接口,並使用JavaScript代碼。

1

至於從JavaScript應用程序保存文件:

我真的很興奮的客戶端應用程序的可能性。 Flash 10引入了在瀏覽器中創建文件以保存正確的功能。我認爲這是超酷的,所以我建立了一個javascript + flash組件來包裝保存功能。現在它僅適用於創建基於文本文件(電子名片,iCal中,XML,HTML,CSS等)

  1. Downloadify Home Page
  2. Source Code & Documentation on Github
  3. See It In Use at Starter for jQuery

我期待添加很快就會支持非文本文件,但這是一個開始。

0

與qooxdoo一起去。他們最近實現了1.0,儘管大多數用戶表示1.0至少在兩個版本之前已經成熟。

我比較了qooxdoo與YUI和ext,我認爲qooxdoo是程序員的選擇 - 從程序員的角度來看,YUI並不像qooxdoo那樣精美,而且ext有一個不那麼友好的許可模式。

少數的的Qooxdoo強點(對我來說)是:

  • 非常乾淨的代碼
  • 我的Javascript中見過的最好的面向對象編程模型構架
  • 了極其豐富的UI控件庫

它還具有用於單元測試的測試運行器,API文檔生成器和閱讀器,日誌記錄工具以及用於調試的幾個有用功能,分組在cal帶領督察。

唯一的缺點是沒有現成的主題(類似皮膚)qooxdoo。但創建自己的主題非常簡單。