Express.js 基礎知識:Express.js 的基本概述
Express.js 是 Node.js 項目的一個了不起的框架,並在大多數此類 Web 應用程序中使用。不幸的是,缺乏關於如何編寫良好的生產就緒代碼的教程和示例。為了緩解這種需求,我們發布了 Express.js 指南:Express.js 綜合手冊。但是,一切都是從基礎開始的,因此我們將在這篇文章中讓您體驗一下框架,以便您決定是否要繼續學習。
Express.js 安裝
假設你下載並安裝了 Node.js(和 NPM),運行這個命令:
$ sudo npm install -g [email protected]
Express.js 命令行界面
現在我們可以使用命令行界面 (CLI) 來生成新的 Express.js 應用程序:
$ express -c styl expressfun
$ cd expressfun && npm install
$ node app
在 http://localhost:3000 打開瀏覽器。
這是expressfun/app.js
的完整代碼 如果您現在沒有時間創建應用程序:
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', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
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.js 中的路由
如果你打開expressfun/app.js
,你會在中間看到兩條路線:
...
app.get('/', routes.index);
app.get('/users', user.list);
...
第一個基本上是處理對主頁的所有請求,例如 http://localhost:3000/
後者對 /users
的請求 ,如 http://localhost:3000/users
.這兩個路由都以不區分大小寫的方式處理 URL,其處理方式與尾部斜杠相同。
請求處理程序本身(index.js
在這種情況下)很簡單:來自 HTTP 請求的所有內容都在 req
中 並將結果寫入 res
中的響應 :
exports.list = function(req, res){
res.send("respond with a resource");
};
作為 Express.js 骨幹的中間件
路由上面的每一行都是一個中間件:
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
中間件是一個傳遞函數,在請求沿每個函數傳遞時為請求添加一些有用的東西,例如 req.body
或 req.cookie
.有關更多中間件的文章,請查看 Express.js 簡介:參數、錯誤處理和其他中間件。
Express.js 應用程序的配置
下面是我們在典型的 Express.js 應用中定義配置的方式:
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
普通設置涉及名稱(例如,views
) 和一個值(例如,模板/視圖所在的文件夾的路徑)。定義特定設置的方法不止一種,例如 app.enable
用於布爾標誌。
Jade 是 Express.js/Node.js 的 Haml
Jade 模板引擎在使用空格和縮進的方式上類似於 Ruby on Rails 的 Haml,例如 layout.jade
:
[旁注]
閱讀博客文章很好,但觀看視頻課程更好,因為它們更具吸引力。
許多開發人員抱怨 Node.js 上缺乏負擔得起的高質量視頻材料。觀看 YouTube 視頻會讓人分心,花 500 美元購買 Node 視頻課程很瘋狂!
去看看 Node University,它有關於 Node 的免費視頻課程:node.university。
[旁注結束]
doctype 5
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
block content
除此之外,還可以在 Jade 模板中使用成熟的 JavaScript 代碼。
關於 Express.js 框架的結論
如您所見,使用 Express.js 創建 MVC Web 應用程序毫不費力。該框架對於 REST API 也很出色。如果您對它們感興趣,請訪問教程:Node.js and MongoDB JSON REST API server with Mongoskin and Express.js 和 Intro to Express.js:Simple REST API app with Monk and MongoDB。
如果您想知道其他中間件和配置是什麼,請查看 Express.js API 文檔、Connect 文檔,當然還有我們的書 — Express.js 指南。對於那些已經熟悉 Express.js 一些基礎知識的人,我建議您通過 ExpressWorks——一個自動化的 Express.js 研討會。