--------------------------------------------- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?express輸出“hello world”
var express = require('express');
var app = express();
//req (請(qǐng)求),res (相應(yīng))裆蒸,/是指對(duì)于首頁(yè)的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);
});
-------------------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ? 建立一個(gè)express框架
!!!!!!!強(qiáng)烈注意:如果輸入命令行出現(xiàn)no directory........在命令行添加sudo(這是賦予管理員權(quán)限)
建立代碼如下:
$ npm install express-generator -g ? ?//先安裝express應(yīng)用生成器
$ express -h ? ?
在當(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)用了。
-------------------------------------------
利用 Express 托管靜態(tài)文件
app.use(express.static('public'));
#意味public里面都是靜態(tài)文件灯荧,可以直接訪問如http://localhost:3000/images/kitten.jpg
#images是在public文件目錄下的
=富鳎可以設(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)視圖模板文件