node笔记
- 每个文件就是一个模块,文件路径就是模块名,每个模块都有
require
、exports
、module
三个预先定义好的变量。 require
函数用于在当期模块加载使用其他模块,js后缀可省略。
模块路径解析规则
- 内置模块,直接在require中写模块名,如
require('fs')
. - node_modules目录,node项目有一个专门储存模块的目录,为node_modules。如
require('express')
,需保证项目node_modules目录有express模块。
路由定义
app.METHOD(path,[callback],callback)
METHOD是一个HTTP请求方法。path是服务器路径,callback是当路由匹配时要执行的函数。如app.post('/',function(){});
将匹配请求根目录的post请求。
app.all()是一个特殊路由方法,会匹配所有请求。用于在某一路径加载中间件。
路由路径
可使用字符串或正则匹配
路由处理函数
可以为请求提供多个处理函数,只有最后一个处理函数可以返回结果(调用res方法向客户端返回响应),其他需使用next()调用其他路由。
也可直接指定路由处理函数数组处理。
响应方法
中间件是一个函数。用于对请求进行处理。如果中间件没有终结请求,则必须调用next()函数
- 应用级中间件
绑定到app对象,使用app.use或app.METHOD,
1 |
|
使用 next(‘route’)方法跳过中间件栈跳过剩余中间件。可将控制权交给下一个路由。注意: 它只对 app.VERB()
和router.VERB()
有用。
错误处理中间件
错误处理中间件必须使用4个参数,否则会被识别为普通中间件。
1 |
|
如果向next()
传入参数,除‘route’外,Express会认为当前请求存在错误,会忽略所有中间件函数,去寻找异常处理的中间件。
next()和next(err) 类似于Promise.resolve()和Promise.reject()。
内置中间件
express.static(root,[options])
Express唯一内置中间件。负责托管静态资源。其他中间件均为第三方中间件。