傳統型應用程式員簡單嘗試Rich JavaScript Application

來源:互聯網
上載者:User

雖然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的一點實際嘗試。具體做法如下:

  1. 在wordpress中安裝feed json外掛程式,暴露json的介面
  2. 建立一個html檔案部署到網站根目錄
  3. 在官網中建立一個欄目塊(支援自訂HTML),在其中插入iframe元素,指向上面的html檔案。之前嘗試過在HTML中直接實現代碼,但是由於jQuery版本會衝突,所以改用iframe。

這個簡單應用程式的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)
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.