1. 程式人生 > >Node.js利用Express框架搭建小型網站(上)

Node.js利用Express框架搭建小型網站(上)

一、Express環境搭建

    Express是Node.js下的一個輕量級Web框架,有了它我們就可以輕鬆的架構出一個個人小型網站,Express框架安裝步驟如下:

1.進入npm目錄,執行 npm install express

    這裡我有必要說明一下:Expres框架現在已經是4.X版本,在4.X版本中是將命令列工具與模組分開的,我個人不習慣這樣,所以我繼續安裝3.X版本([email protected])。安裝成功後,會在node_modules資料夾下出現express資料夾,這樣express就成為Node.js的一個模組了。在我安裝的版本中,express的當前資料夾

下會出現一個.bin資料夾,這裡就是express的命令工具,現在我們建立一個新的Express專案,步驟如下:

2.cd 進入.bin資料夾目錄,執行express myFirstWeb,則會在.bin資料夾下出現一個新的專案工程"myFirstWeb".

3.在cd進入myFirstWeb,執行npm install,安裝myFirstWeb所需要的依賴模組。

這樣一個新的Web網站就搭建起來了。

二、Express專案資料夾結構及其含義

1.myFirstWeb資料夾目錄結構

2.myFirstWeb資料夾含義

node_modules:

    Web專案的模組管理,即你有任何的模組都有應該封裝後放在此處,如連線資料庫模組。

public:

    該資料夾下還有三個資料夾images,javascripts,stylesheets,含義很明顯了,就不說了吧。

routes:

    路由規則,即Web的控制器,這個稍後會介紹。

views:

    檢視,但是這種檢視並不是傳統的html檔案,而是html的引擎模板,這裡預設的模板是jade檔案,可以認為是前臺UI。

app.js:

    myFirstWeb的入口,packege.json裡有定義 "start": "node app.js",這裡很有必要把app.js程式碼解讀一遍:

/**
 * Module dependencies.
 */

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});


 此程式碼中用express模組生成了app物件,app就是此次架設的web例項.

//設定埠

app.set('port', process.env.PORT || 3000);

//設定檢視路徑

app.set('views', path.join(__dirname, 'views'));

//設定檢視引擎模板,還可以設定其他模板,後續介紹

app.set('view engine', 'jade');

//設定路由,該路由的處理交給index.js處理

app.use(app.router);

//設定靜態檔案路徑

app.use(express.static(path.join(__dirname, 'public')));

//若get請求的url為當前路徑,則交給路由index入口中的對應函式處理

app.get('/', routes.index);

package.json:

    專案的引數資訊。

三、執行myFristWeb

1.cd C:\Program Files\nodejs\node_modules\.bin\myFirstWeb

2.node app

    不出意外則會看到Welcome to Express的字樣,下面來解析一下整個執行過程吧:

    node app命令啟動服務,監聽3000埠,在瀏覽器輸入http://localhost:3000/時,客戶端向伺服器傳送了url為'/'的get請求,伺服器的事件請求是交給router模組的,並且在app.get('/',routes.index)中設定了該url請求是由入口index來處理的,index.js內容如下:

/*
 * GET home page.
 */

exports.index = function(req, res){
  res.render('index', { title: 'Express' });
};


    get請求的處理函式所做的事情就是為瀏覽器返回名為index的前臺頁面(此處呼叫的是/Views/index.jade),由於index.jade中有一個title引數,所以需要傳遞引數title:'Express',這樣就會在給客戶端返回index.jade時填充變數,生成標準的index.html給瀏覽器,ps:模板引擎的好處之一就是替換變數,很方便吧。

    至此,一次互動過程結束,下篇將一步步把這個myFirstWeb搭建的更加完美。