下載:https://www.jb51.net/books/750150.html
express()
express()用來創(chuàng)建一個(gè)Express的程序。express()辦法是express模塊導(dǎo)出的頂層辦法。
varexpress=require(‘express’);varapp=express();
Methods
express.static(root,[options])
express.static是Express中唯一的內(nèi)建中間件。它以server-static模塊為基礎(chǔ)開發(fā),負(fù)責(zé)托管Express運(yùn)用內(nèi)的靜態(tài)資源。
參數(shù)root為靜態(tài)資源的所在的根目錄。
參數(shù)options是可選的,支持以下的特點(diǎn):
假如你想取得更多關(guān)于運(yùn)用中間件的細(xì)節(jié),你能夠查閱ServingstaticfilesinExpress。
Application()
app目標(biāo)一般用來表示Express程序。經(jīng)過調(diào)用Express模塊導(dǎo)出的頂層的express()辦法來創(chuàng)建它:
varexpress=require(‘express’);varapp=express();app.get(‘/’,function(req,res){res.send(‘helloworld!’);});app.listen(3000);
app目標(biāo)具有以下的辦法:
路由HTTP懇求;詳細(xì)能夠看app.METHOD和app.param這兩個(gè)比方。
配置中間件;詳細(xì)請(qǐng)看app.route。
烘托HTML視圖;詳細(xì)請(qǐng)看app.render。
注冊(cè)模板引擎;詳細(xì)請(qǐng)看app.engine。
它還有一些特點(diǎn)設(shè)置,這些特點(diǎn)能夠改動(dòng)程序的行為。取得更多的信息,能夠查閱Applicationsettings。
Properties
app.locals
app.locals目標(biāo)是一個(gè)javascript目標(biāo),它的特點(diǎn)便是程序本地的變量。
app.locals.title//=>’MyApp’app.locals.email//=>’me@myapp.com’
一旦設(shè)定,app.locals的各特點(diǎn)值將貫穿程序的整個(gè)生命周期,與其相反的是res.locals,它只在這次懇求的生命周期中有用。
在程序中,你能夠在烘托模板時(shí)運(yùn)用這些本地變量。它們對(duì)錯(cuò)常有用的,能夠?yàn)槟0骞┙o一些有用的辦法,以及app級(jí)別的數(shù)據(jù)。經(jīng)過req.app.locals(詳細(xì)檢查req.app),Locals能夠在中間件中運(yùn)用。
app.locals.title=’MyApp’;app.locals.strftime=require(‘strftime’);app.locals.email=’me@myapp.com’;
app.mountpath
app.mountpath特點(diǎn)是子程序掛載的途徑形式。
一個(gè)子程序是一個(gè)express的實(shí)例,其能夠被用來作為路由句柄來處理懇求。
varexpress=require(‘express’);varapp=express();//themainappvaradmin=express();//thesubappadmin.get(‘/’,function(req,res){console.log(admin.mountpath);///adminres.send(‘AdminHomepage’);});app.use(‘/admin’,admin);//mountthesubapp
它和req目標(biāo)的baseUrl特點(diǎn)比較類似,除了req.baseUrl是匹配的URL途徑,而不是匹配的形式。假如一個(gè)子程序被掛載在多條途徑形式,app.mountpath便是一個(gè)關(guān)于掛載途徑形式項(xiàng)的列表,如下面比方所示。
“`varadmin=express();admin.get(‘/’,function(req,res){console.log(admin.mountpath);//[‘adm*n’,’/manager’]res.send(‘AdminHomepage’);});varsecret=express();secret.get(‘/’,function(req,res){console.log(secret.mountpath);///secr*tres.send(‘Adminsecret’);});admin.use(‘secr*t’,secret);//loadthe’secret’routeron’/secr*t’,onthe’admin’subappapp.use([‘/adm*n’,’/manager’],admin);//loadthe’admin’routeron’/adm*n’and’/manager’,ontheparentapp
Events
app.on(‘mount’,callback(parent))
當(dāng)子程序被掛載到父程序時(shí),mount事件被發(fā)射。父程序目標(biāo)作為參數(shù),傳遞給回調(diào)辦法。
varadmin=express();admin.on(‘mount’,function(parent){console.log(‘AdminMounted’);console.log(parent);//referstotheparentapp});admin.get(‘/’,function(req,res){res.send(‘AdminHomepage’);});app.use(‘/admin’,admin);
Methods
app.all(path,callback[,callback…]
app.all辦法和標(biāo)準(zhǔn)的app.METHOD()辦法類似,除了它匹配所有的HTTP動(dòng)詞。
關(guān)于給一個(gè)特別前綴映射一個(gè)全局的邏輯處理,或許無條件匹配,它是很有用的。例如,假如你把下面內(nèi)容放在所有其他的路由定義的前面,它要求所有從這個(gè)點(diǎn)開端的路由需求認(rèn)證和自動(dòng)加載一個(gè)用戶。記住這些回調(diào)并不是一定是結(jié)尾:loadUser能夠在完成了一個(gè)使命后,調(diào)用next()辦法來持續(xù)匹配隨后的路由。
app.all(‘*’,requireAuthentication,loadUser);
或許這種持平的形式:
app.all(‘*’,requireAuthentication);app.all(‘*’,loadUser);
另一個(gè)比方是全局的白名單辦法。這個(gè)比方和前面的很像,但是它僅僅約束以/api開頭的途徑。
app.all(‘/api/*’,requireAuthentication);
app.delete(path,callback[,callback…])
路由HTTPDELETE懇求到有特別回調(diào)辦法的特別的途徑。獲取更多的信息,能夠查閱routingguide。
你能夠供給多個(gè)回調(diào)函數(shù),它們的行為和中間件一樣,除了這些回調(diào)能夠經(jīng)過調(diào)用next(‘router’)來繞過剩下的路由回調(diào)。你能夠運(yùn)用這個(gè)機(jī)制來為一個(gè)路由設(shè)置一些前提條件,假如不能滿意當(dāng)時(shí)路由的處理?xiàng)l件,那么你能夠傳遞控制到隨后的路由。
app.delete(‘/’,function(req,res){res.send(‘DELETErequesttohomepage’);});
app.disable(name)
設(shè)置類型為布爾的設(shè)置名為name的值為false,此處的name是appsettingstable中各特點(diǎn)的一個(gè)。調(diào)用app.set(‘foo’,false)和調(diào)用app.disable(‘foo’)是等價(jià)的。
比方:
app.disable(‘trustproxy’);app.get(‘trustproxy’);//=>false
app.disabled(name)
回來true假如布爾類型的設(shè)置值name被禁用為false,此處的name是appsettingstable中各特點(diǎn)的一個(gè)。
app.disabled(‘trustproxy’);//=>trueapp.enable(‘trustproxy’);app.disabled(‘trustproxy’);//=>false
app.enable(name)
設(shè)置布爾類型的設(shè)置值name為true,此處的name是appsettingstable中各特點(diǎn)的一個(gè)。調(diào)用app.set(‘foo’,true)和調(diào)用app.enable(‘foo’)是等價(jià)的。
app.enable(‘trustproxy’);app.get(‘trustproxy’);//=>true
app.enabled(name)
回來true假如布爾類型的設(shè)置值name被發(fā)動(dòng)為true,此處的name是appsettingstable中各特點(diǎn)的一個(gè)。
app.enabled(‘trustproxy’);//=>falseapp.enable(‘trustproxy’);app.enabled(‘trustproxy’);//=>true
app.engine(ext,callback)
注冊(cè)給定引擎的回調(diào),用來烘托處理ext文件。
默許情況下,Express需求運(yùn)用require()來加載基于文件擴(kuò)展的引擎。例如,假如你測(cè)驗(yàn)烘托一個(gè)foo.jade文件,Express在內(nèi)部調(diào)用下面的內(nèi)容,一起緩存require()成果供隨后的調(diào)用,來加速性能。
app.engine(‘jade’,require(‘jade’).__express);
運(yùn)用下面的辦法關(guān)于那些沒有供給開箱即用的.__express辦法的模板,或許你期望運(yùn)用不同的模板引擎擴(kuò)展。
比方,運(yùn)用EJS模板引擎來烘托.html文件:
app.engine(‘html’,require(‘ejs’).renderFile);
在這個(gè)比方中,EJS供給了一個(gè).renderFile辦法,這個(gè)辦法滿意了Express規(guī)矩的簽名規(guī)矩:(path,options,callback),但是記住在內(nèi)部它僅僅ejs.__express的一個(gè)別號(hào),所以你能夠在不做任何事的情況下直接運(yùn)用.ejs擴(kuò)展。
一些模板引擎沒有遵從這種標(biāo)準(zhǔn),consolidate.js庫映射模板引擎以下面的運(yùn)用方法,所以他們能夠無縫的和Express工作。
更多參考:https://baijiahao.baidu.com/s?id=1722435004578826993&wfr=spider&for=pc
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長(zhǎng)沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運(yùn)營(yíng)網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)