加速 JavaScript 執行效率的 DOM 操作技巧(降低瀏覽器回流)

在開發 RIA 的過程中,會常常使用到 JavaScript 來變更網頁元素,甚至增加新的網頁元素,而不同的操作方式也會對執行效能有所影響。 瀏覽器在顯示網頁時,會需要計算每一個網頁元素應該放置在哪個位置,這個計算過程就稱為瀏覽器回流(browser reflow)。當我們對 DOM 進行操作(例如更改元素的 CSS 樣式、大小等)或是改變視窗大小時,也會造成瀏覽器的回流,由於瀏覽器的流回需要耗費時間,所以如果可以盡量減少回流,就可以增加整個網頁應用程式的效率。 ...

May 8, 2014 · G. T. Wang

以 RabbitMQ 實作 Publish/Subscribe 模型(Python 版本)

這裡我們使用 RabbitMQ 來實作 publish-subscribe pattern,將訊息一次傳送給多個 consumers。 前一個教學範例中,我們實作的工作佇列都是假設一個工作只會配送給一個 worker,現在我們要改變一下這個規則,讓一個訊息可以同時傳送給多個 consumers,而這樣的設計模式就稱為 publish/subscribe。 ...

April 30, 2014 · G. T. Wang

以 RabbitMQ 實作工作佇列(Work Queues)(Python 版本)

這裡介紹如何使用 RabbitMQ 實作工作佇列(work queues),將耗時的工作分配至多個 works 來處理。 在上一個 RabbitMQ 訊息佇列教學中,我們實作一個可以透過 queue 傳送與接收訊息的簡單架構,這裡我們將繼續修改之前的範例程式碼,加入工作處理的功能。 ...

April 16, 2014 · G. T. Wang

讓原始碼放在自己伺服器中的各種免費的 GitHub 替代方案

這裡整理了一些免費的 Github 替代方案,讓開發者可以將專案的原始碼放在自己的伺服器中,避免原始碼洩漏的風險。 GitHub 對於許多的開發者而言是一項很有用的資源,它可以讓不同的程式設計師一起合作開發一項專案,也提供很好的程式碼管理與 code review 等功能。 ...

April 13, 2014 · G. T. Wang

定義 JavaScript 函數(Functions)的各種方式

這裡介紹各種 JavaScript 函數的定義方式,有些方式很常見,但是有一些你可能沒看過。 以下是在 JavaScript 中四種建立函數的方式: // 四種建立函數的方法 function declaration () {}; var funcExpression = function () {}; var namedFuncExpression = function named() {}; var fnConstructor = new Function (); 這些都是可以用來建立函數(Function)物件的方法,但是其中有些差異,以下我們將討論這些作法之間有什麼差別。 ...

April 3, 2014 · G. T. Wang