跳到主要內容

文章

目前顯示的是 二月, 2012的文章

[教學] express middleware 介紹與範例,express middleware explain in node.js

之前提到如何在Node.JS 使用Express, Express 路由(route)設定方法。Express middleware 介紹Express 裡面有一個十分好用的應用概念稱為middleware,可以透過 middleware 做出複雜的效果,同時上面也有介紹 next 方法參數傳遞,就是靠 middleware 的概念來傳遞參數,讓開發者可以明確的控制程式邏輯。// .. create http server app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.session()); 上面都是一種 middleware 的使用方式,透過 app.use 方式裡面載入函式執行方法,回應函式會包含三個基本參數,responserequestnext,其中next 表示下一個 middleware 執行函式,同時會自動將預設三個參數繼續帶往下個函式執行。Express middleware 範例底下有個實驗,上面的片段程式執行後,開啟瀏覽器,連結上 localhost:1337/,會發現伺服器回應結果順序如下,first middle ware second middle ware execute middle ware end middleware function Express middleware 結論從上面的結果可以得知,剛才設定的 middleware 都有執行。在 app.use 設定的 middleware 是所有url 皆會執行方法,如果有指定特定方法,就可以使用 app.get 的 middleware 設定。在 app.get 函式的第二個參數,就可以帶入函式,或者是匿名函式,只要函式裡面最後會接受 request, response, next 這三個參數,同時也有正確指定 next 函式的執行時機,最後都會執行到最後一個方法,當然開發者也可以評估程式邏輯要執行到哪一個階段,讓邏輯可以更為分明。工商服務Node.JS Taiwan 社群目前著手共筆的中文教學資料,歡迎有興趣者共同關注,相關網址資訊,NodeJS Taiwan 中文教學手冊NodeJS Taiwan 網站

[教學] express 路由與應用,express route setting in node.js

在前面有許多篇幅解說 node.JS 基本操作概念
Express ,這個套件主要幫忙解決許多Node.JS http server 所需要的基本服務,讓開發http service 變得更為容易,不需要像之前需要透過層層模組(module)才有辦法開始編寫自己的程式。
這個套件是由TJ Holowaychuk 製作而成的套件,裡面包含基本的路由處理(route),http 資料處理(GET/POST/PUT),另外還與樣板套件(js html template engine)搭配,同時也可以處理許多複雜化的問題。
Express 安裝 安裝方式十分簡單,只要透過之前介紹的 NPM 就可以使用簡單的指令安裝,指令如下,
npm install -g express 這邊建議需要將此套件安裝成為全域模組,方便日後使用。
Express 基本操作 express 的使用也十分簡單,先來建立一個基本的hello world ,
var app = require('express').createServer(), port = 1337; app.listen(port); app.get('/', function(req, res){ res.send('hello world'); }); console.log('start express server\n'); 可以從上面的程式碼發現,基本操作與node.js http 的建立方式沒有太大差異,主要差在當我們設定路由時,可以直接透過 app.get 方式設定回應與接受方式。
Express 路由處理 Express 對於 http 服務上有許多包裝,讓開發者使用及設定上更為方便,例如有幾個路由設定,那我們就統一藉由 app.get 來處理,

[分享] 表單資料序列化 form serialize for jQuery and YUI

form 在開發web的人一定都很熟悉他怎麼使用,但是當要form 裡面的資料使用 GET 或者 POST的時候,每個人作法不同。
這邊筆記一下如何使用 YUI & jQuery 做 form serialize 表單資料序列化。
程式說明 簡單的HTML表單:
<form method="POST" id="sample-form"> <label for="firstname">First name:</label><input type="text" id="firstname" name="firstname" value="Caesar" > <label for="lastname">Last name:</label> <input type="text" id="lastname" name="lastname" value="Chi"> </form> 希望做表單資料序列化(form serialize),希望有以下的產出。
firstname=Caesar&lastname=Chi jQuery 使用方法: 擷取到form 節點之後,再呼叫serialize 方法,會回傳字串(string)
$("#sample-form").serialize() YUI 使用方法(適用於 YUI3.3.0 以下版本): 首先必須引入io-form,取得Y.io之後,使用_serialize(理論上這應該是私有方法,沒辦法給外部使用,不過在3.3.0以前都可以使用此方法),裡面給予一個物件,其中一個屬性必須要為 id : form id,方法回傳之後就會取得字串。
Y.io._serialize({id: "sample-form"}); 線上範例線上範例
完整原始碼
後記 這個方法其實行之有年,而且使用起來十分順手,而且許多好心人士都有…

[教學] node.js 使用file system 讀取檔案

檔案管理最重要的部分就是File system 這個模組,此模組可以針對檔案做管理、監控、讀取等行為,裡面有許多預設的方法,底下是檔案輸出的基本範例,底下會有兩個檔案,第一個是靜態html 檔案,另一個為node.js 程式,


一開始直接載入file system 模組,載入名稱為 fs 。讀取檔案主要使用的方法為readFile ,裡面以三個參數 路徑(file path) , 編碼方式(encoding) , 回應函式(callback) ,路徑必須要設定為靜態html 所在位置,才能指定到正確的檔案。靜態檔案的編碼方式也必須正確,這邊使用靜態檔案的編碼為 utf8 ,如果編碼設定錯誤,node.js 讀取出來檔案結果會使用 byte raw 格式輸出,如果 錯誤編碼格式,會導致輸出資料為 byte raw。


回應函式 中裡面會使用兩個變數,error 為錯誤資訊,如果讀取的檔案不存在,或者發生錯誤,error 數值會是 true ,如果成功讀取資料 error 將會是 false 。 content 則是檔案內容,資料讀取後將會把資料全數丟到content 這個變數當中。最後程式的輸出結果畫面如下,




[教學] node.js 伺服器路由處理(routing process)

本篇文章將解說如何使用node.js 透過程式判別http 伺服器所提供的路由處理方法。範例如下,

url 模組就跟如同他的命名一般,專門處理url 字串處理,裡面提供了許多方法來解決路徑上的問題。 因為從瀏覽器發出的要求路徑可能會帶有多種需求,或者GET 參數組合等。因此我們需要將路徑單純化,取用路徑部分的資料即可,例如使用者可能會送出 http://127.0.0.1:1337/test?send=1 ,如果直接信任**req.url** 就會收到結果為 /test?send=1 ,所以需要透過url 模組的方法將路徑資料過濾。 在這邊使用url.parse 的方法,裡面帶入網址格式資料,會回傳路徑資料。為了後需方便使用,將回傳的資料設定到path 變數當中。在回傳的路徑資料,裡面包含資訊,如下圖, 這邊只需要使用單純的路徑要求,直接取用path.pathname ,就可以達到我們的目的。 最後要做路徑的判別,在不同的路徑可以指定不同的輸出,在範例中有三個可能結果,第一個從瀏覽器輸入/index 就會顯示 index 結果, /test 就會呈現出 test 頁面,最後如果都不符合預期的輸入會直接顯示 default 的頁面,最後的預防可以讓瀏覽器不會出現非預期結果,讓程式的可靠性提昇,底下為測試結果。