javascript
桌面应用程序员简单尝试Rich JavaScript Application
雖然10年前搞過一段時間的Web應用開發,且為所在企業設計了一個基于ASP.NET WebForms(在.NET 1.1的基礎上)的Web應用開發框架。但是,后來一直做的都是桌面類的應用,比如SmartClient,基于Silverlight的RIA,甚至到現在,我們公司的產品就是一個純客戶端的單機WinForms應用。所以,我應該是一個徹徹底底的桌面應用程序員了。已經很久不碰JavaScript這樣的東西了。
最近開始對JavaScript感興趣的原因,不外乎下面幾個:
- 最近1年Node.js的極其火熱,想深入了解一下,尤其Azure(及WebMatrix)對Node.js強力支持更是加深了我的興趣;
- ASP.NET MVC中內置了一個MVVM的JavaScript庫——KnockoutJS,想知道為什么微軟對KO情有獨鐘;
- Windows 8 App可以使用JavaScript和HTML5來開發,可見就算是桌面應用,JavaScript未來也有用武之地;
- 微軟推出了TypeScript,以及之前微軟非官方的Script#,還有CoffeeScript的被持續關注,都說明人們希望以更加簡單的方式來使用JavaScript開發大型更加Rich的應用程序
我做的簡單嘗試的場景如下:
- 公司官網用php構建的,對php不是太熟悉,也不想去對原有網站框架做調整;
- 公司博客基于wordpress構建
- 需要在官網中自動顯示博客的最新文章列表
由于之前已經開始學習Knockout的東西,所以昨天決定基于KO來實現上述場景,這可以說是對KO的一點實際嘗試。具體做法如下:
這個簡單應用程序的HTML文件如下:
<body><div><div data-bind="foreach: blogs"><p><a data-bind="attr: {href: $data.permalink, title: $data.title}" target="_blank"><span data-bind="text: $data.date"></span>: <span data-bind="text: $data.title"></span></a></p></div><a href="blog" title="More" target="_blank">More</a></div><script type='text/javascript'>function Blog(data) {this.title = ko.observable(data.title);this.permalink = ko.observable(data.permalink);this.date = ko.observable(data.date.substr(0, 10));}function BlogViewModel() {var self = this;self.blogs = ko.observableArray([]);$.getJSON("/blog/?feed=json", function (allData) {var mappedBlogs = $.map(allData, function (item) { return new Blog(item) });self.blogs(mappedBlogs);});}ko.applyBindings(new BlogViewModel());</script> </body>上面HTML文件分作兩個部分。第一個部分就是用于顯示界面的HTML,第二部分是實體對象的定義和獲取數據執行綁定的JavaScript代碼。
在第一部分中,由于使用了MVVM思想的綁定機制,對于我而言是非常熟悉的,這個和XAML沒有太多區別。
第二部分中,首先利用jQuery獲取JSON數據并轉換為可綁定的JavaScript對象(這里真的簡單的讓我感到驚喜),可綁定是通過ko.observable來實現的;然后在ViewModel對象中提供一個可綁定的數組屬性給界面(即blogs屬性)。
上述功能雖然簡單,但是我覺得已經觸摸到了所謂Rich JavaScript Application或微軟稱之為 Scale JavaScript Application的實現途徑了。即:
- 使用jQuery這樣的框架來簡化DOM的操作
- 使用KnockoutJS或者AngularJS這樣庫或框架來簡化數據呈現,行為處理
- 使用CoffeeScript或者TypeScript來簡化JavaScript的編寫
- 開發可以跨瀏覽器運行的純客戶端應用,也具備和服務端的交互能力(一般基于RESTful),這樣的應用具有良好的交互性,可以完成復雜的數據操縱。
這里有一篇參考文章,值得一讀:
Rich JavaScript Applications – the Seven Frameworks (Throne of JS, 2012)
轉載于:https://www.cnblogs.com/redmoon/archive/2012/10/12/2721427.html
總結
以上是生活随笔為你收集整理的桌面应用程序员简单尝试Rich JavaScript Application的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 闭包漫谈
- 下一篇: UVA 331 Mapping the