express框架-初學(xué)



#如果權(quán)限不夠可以在前面加sudo

--------------------------------------------- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?express輸出“hello world”

var express = require('express');

var app = express();

//req (請(qǐng)求),res (相應(yīng)),/是指對(duì)于首頁的url返回“Hello World”,方法為get

//get是指從服務(wù)器端獲取數(shù)據(jù),post則是發(fā)送數(shù)據(jù)到服務(wù)端,下面圖片有類似例子。

app.get('/', function (req, res) {

res.send('Hello World!');

});

//設(shè)置一個(gè)監(jiān)聽器,端口號(hào)為3000,服務(wù)端調(diào)用function()函數(shù)

var server = app.listen(3000, function () {

var host = server.address().address;

var port = server.address().port;

console.log('Example app listening at http://%s:%s', host, port);

});


一些路由的實(shí)例

-------------------------------------------

? ? ? ? ? ? ? ? ? ? ? ? ? 建立一個(gè)express框架

!!!!!!!強(qiáng)烈注意:如果輸入命令行出現(xiàn)no directory........在命令行添加sudo(這是賦予管理員權(quán)限)

建立代碼如下:

$ npm install express-generator -g ? ?//先安裝express應(yīng)用生成器


$ express -h ? ?


-h選項(xiàng)可以列出所有可用的命令行選項(xiàng):

在當(dāng)前工作目錄下創(chuàng)建一個(gè)命名為myapp的應(yīng)用


安裝所有依賴包

? ? ? $ cd myapp

? ? ? $ npm install

啟動(dòng)這個(gè)應(yīng)用

? ? ? ? $ DEBUG=myapp npm start
? ? ? ? ? ? ?(MacOS 或 Linux 平臺(tái))

? ? ? > set DEBUG=myapp & npm start
? ? ? ? ? ? ? ? Windows 平臺(tái)

通過 Express 應(yīng)用生成器創(chuàng)建的應(yīng)用一般都有如下目錄結(jié)構(gòu):


然后在瀏覽器中打開http://localhost:3000/網(wǎng)址就可以看到這個(gè)應(yīng)用了。


myapp網(wǎng)頁顯示

-------------------------------------------

利用 Express 托管靜態(tài)文件


app.use(express.static('public'));

#意味public里面都是靜態(tài)文件,可以直接訪問如http://localhost:3000/images/kitten.jpg

#images是在public文件目錄下的

??梢栽O(shè)置多個(gè)靜態(tài)的目錄

ps:個(gè)人嘗試了下,直接去訪問目錄下的圖片,不過不能訪問,所以只有靜態(tài)文件可以直接查看,或者設(shè)置路由

-------------------------------------------

ps:接下來是對(duì)express應(yīng)用生成器代碼的一些理解

? ? ? ? ? ? ? ? ? ? ? ? ?express應(yīng)用框架


全部文件,我們從左往右說明


-----app.js----------------------------

app.set('view engine', 'ejs') 為設(shè)置模板引擎為ejs

app.use(express.favicon())?是設(shè)置圖標(biāo)想修改的話就自己去搞public下面的images文件

app.use(express.logger('dev')); express依賴于connect這里就內(nèi)建中間件會(huì)輸出一些日志

app.use(express.json()); 用以解析請(qǐng)求體,這里就會(huì)把字符串動(dòng)態(tài)轉(zhuǎn)換為json對(duì)象

app.use(express.methodOverride()); connect內(nèi)建中間件,用以處理post請(qǐng)求,并可以偽裝put等http方法

app.use(app.router); 調(diào)用路由器解析規(guī)則

app.use(express.static(path.join(__dirname, 'public'))); connect內(nèi)建中間件,設(shè)置根目錄下的public存放靜態(tài)文件

#懶的重新截圖= =

#next(err),把控制權(quán)交給下一個(gè)函數(shù)處理

-----bin/www.js---------------------------------------------




isNaN is a "is Not a Number" function

----public-------------------------------

存放靜態(tài)資源。

-----routes-----------------------------


基本和上面的路由相似

這節(jié)我覺得必要說明的,唯一一點(diǎn)就是app.METHOD(path, [callback...], callback),app是express對(duì)象的一個(gè)實(shí)例,METHOD是一個(gè)HTTP 請(qǐng)求方法,path是服務(wù)器上的路徑,callback是當(dāng)路由匹配時(shí)要執(zhí)行的函數(shù)。



---other--------------

app.js 為入口文件

package.json 為模塊依賴文件,我們使用npm install時(shí)候他會(huì)以其配置在網(wǎng)上下載相關(guān)包

node_modules 為下載下來的模塊文件(package.json)

public 存放靜態(tài)資源文件

routes 存放路由文件

views 存放相關(guān)視圖模板文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容