javascript - node js production




在JavaScript中構建獨立的應用程序 (10)

GWT中的獨立遊戲:

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

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

除了暴露你的源代碼之外,還有什麼不利之處嗎? 你應該如何處理這種程序的數據存儲?

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


Nihilogic (不是我的網站)用Javascript做了很多東西。 他們甚至有幾個他們用Javascript做的遊戲

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


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

格雷格已經指出你的齒輪; 另外,HTML 5將會帶有標準的本地存儲方式。 Safari 3.1提供了一個實現,在該實現中,您擁有每個用戶可設置的最大大小的SQLite數據庫以及一個帶SQL查詢內置數據庫瀏覽器 。 不幸的是,直到我們可以期待廣泛的瀏覽器支持將是一個很長的時間。 在此之前,Gears確實是一個替代方案(但對於Safari來說卻不行 )。 為了更簡單的存儲,當然總是有餅乾。


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

我對客戶端應用程序的可能性感到非常興奮。 Flash 10引入了在瀏覽器中創建文件的功能。 我認為這是超級酷,所以我建立了一個JavaScript + Flash組件來包裝保存功能。 現在它只適用於創建基於文本的文件(vcard,ical,xml,html,css等)

  1. 下載主頁
  2. Github上的源代碼和文檔
  3. 在jQuery的Starter中看到它在使用

我期待盡快添加對非文本文件的支持,但這是一個開始。


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

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


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


我用JS寫了幾個應用程序,包括一個電子表格。

潛在上升空間:

  • 偉大的語言
  • 短代碼運行審查週期
  • DOM操作對UI設計非常有用
  • 每台電腦上的客戶端(和電話)

下行:

  • 瀏覽器之間的差異(特別是IE)
  • 代碼庫可擴展性(對命名空間和類沒有固有的支持)
  • 沒有好的調試器(尤其是對於IE來說)
  • 性能(儘管FireFox和Safari取得了很大的進步)
  • 您還需要編寫一些服務器代碼。

底線:去吧。 我做了。


我的RSS源服務得很好 - 我發現Javascript roguelike!

它被稱為Asciiroth的陵墓


這樣做的缺點是,你是在他們的js啟用的擺佈。 我不確定現在這是一個大問題。 實際上每個瀏覽器都支持js,默認情況下它是啟用的。

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

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

不完全客戶端,但哦。


鑑於你將要編寫一些服務器代碼,保持存儲在服務器上的很多域(地址簿,撲克分數,GUI配置等)是有意義的。對於任何你所知道的大小將會進入Webkit或Gears,你也可以把它保存在你的服務器上。

將其保留在您的服務器上的優點是雙重的:

  1. 你可以在一個典型的MVC框架中簡單地將它作為Model層進行整合,
  2. 用戶可以不受限於瀏覽器/個人電腦,或者在一個不太理想的環境(互聯網咖啡館)中獲得一致的觀點。

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







browser