一共有22个API,需要重点学习的是:

  1. app.set('views' | 'view engine',xxx)
  2. app.get('env')
  3. app.get('/xxx',fn)
  4. app.post / app.put / app.delete ...
  5. app.render()
  6. app.use()

app.set | get

image.png
set一个东西就能get这个东西,但是有一些属性是内置的:
比如: case sensitive routing 是一个布尔值,默认是false,用于判断路由是否分辨大小写,false为不分辩,所有大写当小写(而且必须放在所有中间件的前面才会生效)

  1. app.set(`case sensitive routing`, true)
  2. app.get('./style.css',(req,res,next)=>{
  3. res.send('style.css')
  4. })
  5. 现在如果你去get STYLE.css 是拿不到 style.css

文档都有的,比如:etag,json spaces, query parser,views等。
view是比较重要的,它是可以设置你的页面所在的目录,express-generator是默认生成了view文件夹的,所以页面都放在这里,你也可以不用view文件夹,通过 app.set(views,'你的目录')即可

app.get | post | put…

app.get(‘/xxx’,fn)
这个get是多态的,如果只有一个参数,就是上面的get,如果是一个参数加一个中间件,就是路由

  1. app.get('/xxx',(req,res,next)=>{
  2. res.send(`test/get`)
  3. })
  4. app.post('/xxx',(req,res,next)=>{
  5. res.send(`test/post`)
  6. })
  7. app.put('/xxx',(req,res,next)=>{
  8. res.send(`test/put`)
  9. })
  10. app.delete('/xxx',(req,res,next)=>{
  11. res.send(`test/delete`)
  12. })

image.png
app.all() 是不管你是get,post还是put,都执行回调。

app.render()

如果你set了views和view engine 的话,那么你在app.render()的时候,就默认去views找,用view engine去解析。
engine也是可以设置多引擎的

app.locals()

当我们的app需要设置一些局部的变量时(整个应用要使用的变量,比如title),可以使用这个api设置在local里面。

  1. app.locals.title = '我的个人网站' //写
  2. console.log(app.locals.title) //读

跟const title = ‘我的个人网站’ 是不一样的
因为有时候你的中间件不在同一个文件里面的,所以拿不到const的title,但是可以拿到locals的title

app.param([name], callback)

  1. app.param('user', function (req, res, next, id) {
  2. // try to get the user details from the User model and attach it to the request object
  3. User.find(id, function (err, user) {
  4. if (err) {
  5. next(err)
  6. } else if (user) {
  7. req.user = user
  8. next()
  9. } else {
  10. next(new Error('failed to load user'))
  11. }
  12. })
  13. })

意思是:如果你参数里面有user,我就做…….。
也是很有用的,比如说要统一设置字符编码的时候。比如你写了’utf-8’:’yes’,那么我就把整个网站的编码变成utf-8

app.path()

就是打印一下app挂载到了哪个地方

  1. const app = express()
  2. const blog = express()
  3. app.use('blog',blog)
  4. console.log(app.path()) // ''
  5. console.log(blog.path()) // '/blog'