文章

Appjet 陽春 Outliner

最近在 Appjet 試寫了一個簡單的 Outliner 程式,主要是想試用這個服務,也想寫一個自己可能會用得著的程式。

Appjet 早在上年十二月就已經出現了,可以在瀏覽器完成所有開發、測試、發佈等動作,本身也提供 hosting 服務。使用 Javascript 為後台語言,上手不難。簡化了後台儲存,只需直接寫入 StorableObject 。其提供的 library 可作簡單的 request dispatch。加上 wget 等一類存取其他網站的功能,可以很方便做出一些 mashup 應用。

而這個 Outliner 也是很簡單的,用戶登入後可以建立不同的 outline (其實也只是 nested list)。我的要求是:

  • 可以快速地記下一些 idea 或 draft,因此 outliner 的介面必需可以使用鍵盤作全面運作
  • 定時自動儲存
  • 可以列印

在開發上,用戶 login 直接使用 lib-user 庫,所以十分簡單。至於介面則要寫 Javascript 了,我使用了 jQuery 並開發了一個 outliner plugin 來使用,主要處理所有 add/delete/edit node 的運作和鍵盤連接。至於排版則使用了 YUI Grids CSS

開發上,Appjet 的部份並不難,反而是花比較多時間在頁面 Javascript 上的啄磨,不過基本上沒有遇上甚麼大難題,出來的東西也算是做到心中想要的效果,比較麻煩的是現在預設的控制鍵大都是英文字母,如果想打一個中文 outline 就要不停切換…

而對於 Appjet 的開發環境,有以下感想:

  • 因為 source code 是單一頁的關係,所以程式碼一多時就會有些亂
  • Appjet 並沒有 file hosting 的服務,除非你將所有檔當成 storage 物件來存,否則也是要找一些免費空間來放一些 scripts、css 等,我使用了 cachefile.net 和  googlepages.com 來放置。
  • Appjet 本身有 dispatch request 的 library,但就太簡單了些,如果慣於 MVC 模式的話可能會覺得亂。
  • Template 要自己想辦法。看到這個 lib-templates 不錯,不過今次並沒有使用。
  • 若果未來要更改 data structure,看來暫時只可以用 shell 做 up/down 的程序。

總括來說,Appjet 可以來開發簡單至中等複雜的應用,但若果是大型的,就必須自己開發一堆 library/framework 來支持了,還好在 Appjet 裏建立和引用 library 很簡單。

各位也可以試用這個 Outliner ,也是 Open Source 的 (基本上全部 Appjet 上的應用也是啦),但緊記這只是實驗性質,不要將重要資料放上去就是了。

*