1. 程式人生 > >使用node.js的開發框架express建立一個web應用

使用node.js的開發框架express建立一個web應用

1.1.1:搭建環境

    1.安裝Express

          按鍵:Windows+R=>輸入cmd,開啟命令列,輸入

    npm install -g [email protected]

          我們需要用全域性模式安裝Express,因為只有這樣,我們才能在命令列中使用它

         注意:這裡我只選用Express 3.x版本,要是你對Express3x版本熟悉了的話,你只需看一下Migrating from 3.x to 4.x 的文件即可過渡到Express 4.x

    2.新建一個工程

          繼續開啟命令列,輸入

               express -e murenziwei

           注意:Express 3.x中使用ejs時不再是-t ejs,而是-e,可以輸入express -h檢視

            繼續輸入:(路徑切換到資料夾murenziwei)

               cd murenziwei 

            繼續輸入:(安裝所需模組)

               npm install

             如圖所示

             

            安裝成功後輸入:

               node app

             

            在瀏覽器上訪問ocalhost:3000,如圖以下:

             

 

3.專案結構

我們回頭看看生成的專案目錄裡面都有什麼,開啟我們的murenziwei資料夾,如圖

  • node_modules:存放package.json中安裝的模組,當你在package.json中新增依賴的模組並安裝後,該模組會存放在這個資料夾
  • public:存放圖片/樣式/指令碼等檔案
  • routes:存放路由檔案
  • views:存放檢視檔案,或者說是模板檔案
  • app.js:啟動檔案,或者說入口檔案
  • package.json:儲存專案的資訊及模組依賴,當在dependencies中新增依賴的模組時,執行npm install,npm會檢查當前目錄下的package.json,並自動安裝所有指定的模組
  • package-lock.json:記錄整個node_modules資料夾的樹狀結構,加快安裝模組的速度

讓我們來看一看,開啟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', 'ejs');
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'));
});  

這裡我們通過require()載入了express,http,path模組,還有routes資料夾下的index.js和user.js

app.set('port', process.env.PORT || 3000):設定埠為process.env.PORT或者3000;

  1. app.set('port', process.env.PORT || 3000):設定埠為process.env.PORT或者3000;
  2. app.set('views', path.join(__dirname, 'views')):設定views資料夾為存放檢視檔案的目錄,即存放模板檔案的地方,__dirname為全域性變數,儲存當前正在執行的js所在的目錄;
  3. app.set('view engine','ejs'):設定檢視模組引擎為ejs
  4. app.use(express.favicon()):connect內建的中介軟體,使用預設的favicon圖示,如果想使用自己的圖示,需改為app.use(express.favicon(__dirname+"/public/images/favicon.ico")),這裡我們把自定義的favicon.icon放到/public/images資料夾下
  5. app.use(express.logger('dev')):connect內建的中介軟體,在開發環境下使用,在終端顯示簡單的日誌,例如在啟動app.js後訪問localhost:3000,終端會輸出:

         

         如果沒有這一行程式碼,不管你怎麼重新整理頁面,終端都只有一行Express sever listening on port 3000

         

         6.app.use(express.json());

            app.use(urlencoded());

            用來解析請求體,支援application/json,application/x-www-form-urlencoded

         7.app.use(express.methodOverride()):connect內建的中介軟體,可以協助處理POST請求,偽裝成 PUT,DELETE和其它HTTP方法

         8.app.use(app.router):呼叫路由解析的規則

         9.app.use(express.static(path.join(__dirname, 'public'))):connect內建立的中介軟體,將根目錄下的public資料夾設定為存放images,css,js等靜態檔案的目錄    

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

此段程式碼可理解為:配置開發環境下的錯誤處理,輸出錯誤資訊

         10.app.get('/', routes.index):路由控制器,如果使用者訪問/(主頁),則由routes.index來處理,routes/index.js的內容如下:

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

 通過exports.index匯出index函式介面,app.get('/',routes.index)相當於:

app.get("/",function(res,rep){

res.render("index",{title:"Express"});

})

 解釋一下上行的res.render("index",{title:"Express"}):使用ejs模板引擎解析views/index.ejs(因為我們之前通過app.set("views",__dirname+"/views")設定了模板檔案預設儲存在views資料夾下),並傳入一個物件,這個物件只有一個title屬新,它的值為字串Express,即用字串Express替換views/index.ejs中所有的title變數,這就是我們所說的渲染檢視,或者說渲染模板。

       11.

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

這段程式碼可以這樣理解:建立http伺服器並監聽3000埠,建立成功後,終端顯示如下

然後我們就可以在瀏覽器中訪問localhost:3000了

 

最後總結一下我所講的知識點:如何建立一個node專案並啟動它,瞭解了專案的大體結構。