express框架入門

express框架入門

什么是express
  • Express 是一個簡潔而靈活的 node.js Web應(yīng)用框架, 提供了一系列強大特性幫助你創(chuàng)建各種 Web 應(yīng)用烫罩,和豐富的 HTTP 工具。
    使用 Express 可以快速地搭建一個完整功能的網(wǎng)站马僻。

Express 框架核心特性:

  • 可以設(shè)置中間件來響應(yīng) HTTP 請求。
  • 定義了路由表用于執(zhí)行不同的 HTTP 請求動作杠巡。
  • 可以通過向模板傳遞參數(shù)來動態(tài)渲染 HTML 頁面派歌。

簡單點說express就是一個封裝了很多功能的包,而你只需要用簡單的express的專屬的一些代碼便可解決本來正常較為復(fù)雜的代碼含滴,方便你使用

使用express
  • 進入一個目錄當(dāng)作工作目錄
  • 然后通過 npm init 命令為你的應(yīng)用創(chuàng)建一個package.json 文件诱渤。(其中會輸入?yún)?shù),但可回車使用默認(rèn)參數(shù))
  • 然后使用npm install express --save安裝express
  • 然后在你工程文件中引入
var express=require("express");
      var app=express();
框架中目錄結(jié)構(gòu)
  • app.js: 啟動文件谈况,或者說入口文件勺美。

  • package.json: 存儲著工程的信息及模塊依賴递胧,當(dāng)在 dependencies 中添加依賴的模塊時, 運行 npm install 赡茸,npm 會檢查當(dāng)前目錄下的 package.json缎脾,并自動安裝所有指定的模塊。

  • node_modules: 存放 package.json 中安裝的模塊占卧,當(dāng)你在 package.json 添加依賴的模塊并安裝后遗菠,存放在這個文件夾下。

  • public: 存放 image华蜒、css辙纬、js 等文件。

  • routes: 存放路由文件友多。

  • views: 存放視圖文件或者說模板文件牲平。

一、app.js作用

通過require()加裝了express域滥、path等模塊纵柿,以及routes文件夾下的index.js和users.js路由文件。

1生成一個express實例app启绰。
var app = express();

2設(shè)置 views 文件夾為存放視圖文件的目錄, 即存放模板文件的地方,__dirname 為全局變量,存儲當(dāng)前正在執(zhí)行的腳本所在的目錄昂儒。
app.set('views', path.join(__dirname, 'views'));

3設(shè)置視圖模板引擎為 ejs。
app.set('view engine', 'ejs');

4加裝解析json的中間件
app.use(bodyParser.json());

5 加裝日志中間件
app.use(logger('dev'));

6 加載解析urlencoded請求體的中間件委可。
app.use(bodyParser.urlencoded({ extended: false }));

7加載解析cookie的中間件渊跋。
app.use(cookieParser());

8 設(shè)置public文件夾為存放靜態(tài)文件的目錄。
app.use(express.static(path.join(__dirname, 'public')));

9 路由控制器着倾。
app.use('/', routes);
app.use('/users', users);

10 捕獲404錯誤拾酝,并轉(zhuǎn)發(fā)到錯誤處理器。
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});

11 開發(fā)環(huán)境下的錯誤處理器卡者,將錯誤信息渲染error模版并顯示到瀏覽器中蒿囤。
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}

12 生產(chǎn)環(huán)境下的錯誤處理器,不會將錯誤信息泄露給用戶崇决。
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
13 導(dǎo)出app實例供其他模塊調(diào)用材诽。

module.exports = app;

二、 bin/www 文件:?

(1)#!/usr/bin/env node:表明是 node 可執(zhí)行文件恒傻。
(2)var debug = require(‘debug’)(‘blog’):引入debug模塊脸侥,打印調(diào)試日志。
(3)var app = require(‘../app’):引入我們上面導(dǎo)出的app實例盈厘。
(4)app.set(‘port’, process.env.PORT || 3000):設(shè)置端口號睁枕。
(5)?

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

啟動工程并監(jiān)聽3000端口,成功后打印 Express server listening on port 3000。

三譬重、 routes/index.js 文件:

生成一個路由實例用來捕獲訪問主頁的GET請求拒逮,導(dǎo)出這個路由并在app.js中通過app.use(‘/’, routes); 加載罐氨。這樣臀规,當(dāng)訪問主頁時,就會調(diào)用res.render(‘index’, { title: ‘Express’ });渲染views/index.ejs模版并顯示到瀏覽器中栅隐。

四塔嬉、 views/index.ejs 文件:

在渲染模板時我們傳入了一個變量 title 值為 express 字符串,模板引擎會將所有 <%= title %> 替換為 express 租悄,然后將渲染后生成的html顯示到瀏覽器中谨究,如上圖所示。

基本框架的作用就是這些泣棋,到具體的功能實現(xiàn)的代碼再自己仔細去查詢胶哲。
express還有許多中間件的使用例如body-parser,cookie等這些需要用的時候潭辈,再仔細去學(xué)習(xí)查詢

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸯屿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子把敢,更是在濱河造成了極大的恐慌寄摆,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件修赞,死亡現(xiàn)場離奇詭異婶恼,居然都是意外死亡,警方通過查閱死者的電腦和手機柏副,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門勾邦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人割择,你說我怎么就攤上這事眷篇。” “怎么了锨推?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵铅歼,是天一觀的道長。 經(jīng)常有香客問我换可,道長椎椰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任沾鳄,我火速辦了婚禮慨飘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己瓤的,他們只是感情好休弃,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著圈膏,像睡著了一般塔猾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稽坤,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天丈甸,我揣著相機與錄音,去河邊找鬼尿褪。 笑死睦擂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杖玲。 我是一名探鬼主播顿仇,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摆马!你這毒婦竟也來了臼闻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤今膊,失蹤者是張志新(化名)和其女友劉穎些阅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斑唬,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡市埋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了恕刘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缤谎。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖褐着,靈堂內(nèi)的尸體忽然破棺而出坷澡,到底是詐尸還是另有隱情,我是刑警寧澤含蓉,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布频敛,位于F島的核電站,受9級特大地震影響馅扣,放射性物質(zhì)發(fā)生泄漏斟赚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一差油、第九天 我趴在偏房一處隱蔽的房頂上張望拗军。 院中可真熱鬧任洞,春花似錦、人聲如沸发侵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刃鳄。三九已至盅弛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铲汪,已是汗流浹背熊尉。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掌腰,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓张吉,卻偏偏與公主長得像齿梁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肮蛹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容