利用 nodejs 與 express 建立基本網站

Node.js 可以說是今年蠻具有話題性的 server side 技術

在官方網頁上可以看到大大的 Evented I/O for V8 JavaScript

簡單來說她利用了 V8 Javascript Engine 的高速性能 加上了 non-blocking I/O 造就了特殊的程式樂趣

沒想到 javascript 除了 client 端 也可以寫 server 端的程式

原生的 node.js 就可以產生 server

不過當然搭配一些 framework 會讓我們寫程式更輕鬆啦~

目前跟 node.js 搭配的 framework 有三種

1. Express
主要提供 view helper 跟 routing
2. Jade
是一個 html 的 template engine 可以減少很多寫 html 的工
3. Stylus
類似 ruby 的 Sass 可以用來快速產生 css
首先用 npm 裝好這三種


然後隨便開一個資料夾吧~

就叫做 express_demo 然後進去


接下來利用 express 幫我們快速產生基本架構!


(-t 表示指定 html template engine; -c 是 css style)

如下圖


基本上 view 就都在 views/ 這個資料夾裡了 目前看到有 index.jade 與 layout.jade

現在直接打 node app.js 基本上就會 run 起一個基本的 express 的應用程式了!

不過假設我們想要 deploy 到 Cloud Foundry 一樣先編輯一個 package.json 如下


然後再下


npm 1.0 之後要改用 npm install -d

一樣會噴一堆 info 不過基本上就是把 express, jade, stylus 跟其相依的 libs 都放進去 node_modules 裡

這時候一樣改 app.js 在最前面加入 require.paths.unshift(‘./node_modules’);

然後原本的 app.listen(3000); 改成 app.listen(process.env.VMC_APP_PORT||3000);

這樣就可以準備發包到 Cloud Foundry 啦~

我們來改一下 views/index.jade 好了

改成如下


存檔後發佈上去 Cloud Foundry (vmc update <name>)

範例網址在 這裡

如果要進階一點的話就是在 views 裡加額外的 .jade 頁面

然後再 app.js 裡增加 routing 規則 app.get(‘/about’, function(req, res){ res.render(‘about’ …. blahblah

這邊的 render(‘about’) 就會自動對應到 views 裡的 about.jade 了!

然後 stylus 要改的話則是到 publics/stylesheets/style.styl 修改!

BTW, 原本的 jade 是用 !!! 會產生 XHTML 我們建議改用 HTML5 所以請至 views/layout.jade 把第一行的 !!! 改成 !!! 5 這樣 Jade 就會產生 HTML 5 了