Email me: jollen # jollen.org

more: Jollen 的 Embedded Linux 教育訓練

« May 2012 | (回到Blog入口) | July 2012 »

June 2012 歸檔

June 18, 2012

[教育訓練紀錄] HTML5+JavaScript 設計模式:jQuery pattern

上週在北京舉辦「課程名稱HTML5 & 雲端整合: 深入MOBILE & CLOUD 設計模式」課程。這門課是從 HTML5 觀念到實作的第一門課(The 1st lesson from concepts to practice),這門課的重點在於「設計模式」(Design pattern)。

當天介紹了「jQuery pattern」。jQuery pattern就是開發jQuery插件(Plugin)的方式,所以技術上倒也沒有什麼學問。不過,jQuery pattern有很高深的哲學道理,意思是說,在軟體工程領域裡,它創造了一個獨特的觀念。這個觀念就是jQuery知名的”$”(Dollar sign),也就是「Selector」。

以下的例子,就是jQuery pattern:

$(“div#news”).html(“<h2>News Today</h2>”);

從jQuery設計模式的角度思考,如果今天我們想要透過WebSocket與伺服器溝通,並且在一個”div”裡來顯示結果,應該怎麼設計呢?想法如下:

1. 將WebSocket的功能寫成一個function

2. 將JavaScript function封裝成module

3. 在jQuery裡擴充新的函數,簡單說,就是製作一個jQuery插件(Plugin)

以下是一段程式碼樣板:

(function($) {
$.fn.createWebSocket = function () {
  if ("WebSocket" in window)
  {
     alert("WebSocket is supported by your Browser!");
     var ws = new WebSocket("ws://<you-ip-adderess>:8888/start");
     ws.onopen = function()
     {
     };
     ws.onmessage = function (evt) 
     { 
     };
     ws.onclose = function()
     { 
     };
     ws.onerror = function()
     { 
     };
  }
  else
  {
     alert("WebSocket NOT supported by your Browser!");
  }
};

})($);

上述的寫法,採用暱名模組來實作。接者,再將程式碼儲存為jquery.websocket.js。使用方法如下:

<!DOCTYPE html>
<head>
<script type='text/javascript' src="./jquery.min.js">
<script type='text/javascript' src="./jquery.websocket.js">
</head>
<body>
<div id="message"></div>
 
<script type="text/javascript">  
$("#message").createWebSocket();
</script>
</body>
</html>

這種做法也可以良好地組織HTML5與JavaScript程式碼。此外,JavaScript的module具備「Closure」的特性,即封閉性,可以避免一些衍生問題。

由於HTML5+JavaScript的設計思想,和Natvie App的作法有很大的不同,所以了解HTML5+Javascript的應用程式「如何設計」,會是重要的一門課。了解設計模式,除了能有效組織HTML5+JavaScript程式碼外,也能做出正確的設計。

June 27, 2012

[教育訓練紀錄] jQuery 模式的優點:提升 JavaScript 程式碼效率

在教育訓練課程「HTML5 軟件開發: Mobile, Web & Cloud 設計模式」裡提到「使用 JavaScript 選擇器」可提升程式碼效能的原則。這個觀念,可延續前一篇日記的內容繼續探討。

在實作Web Socket連線生成時,筆者選擇使用了jQuery pattern的觀念來實作。jQuery pattern 本質上是一種選擇器模式。

為什麼要使用選擇器模式,除了程式碼的組織較好外,另一個原因就是效能:使用選擇器方式可以讓JavaScript程式碼效能更好。

根據不同瀏覽器的實作,選擇器模式可以達到超過十倍以上的效能。典型的選擇器模式,是直接呼叫DOM的API:

document.querySelector(“#header”);

使用jQuery的選擇器「$」是目前的主流做法。再回顧上一篇日記的寫去:

<div id="message"></div>
<script type="text/javascript">  
$("#message").createWebSocket();
</script>

總計利用了三個模式:

  • 以Closure模式將類別封閉,這與Static class有關係,在這裡先不做討論
  • 使用選擇器模式,範例採用目前最流行的jQuery selector ”$”
  • Read/Write Div Pattern

選擇器模式的效率取決於瀏覽器本身的實作,不過,以選擇器模式來代替直接存取DOM,一般相信是最好的做法。

關於 June 2012

此頁面包含了在June 2012發表於Jollen's Blog的所有日記,它們從老到新列出。

前一個存檔 May 2012

後一個存檔 July 2012

更多信息可在 主索引 頁和 歸檔 頁看到。

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org