Node(6)
这篇文章讲了path路径以及如何使用绝对路径,还有关于express
中间件的一些基础知识。
1. path路径操作模块
- path.basename
- 获取一个路径中的文件名(默认包含扩展名)
- path.dirname
- 获取一个路径中的目录部分
- path.extname
- 获取一个路径中的扩展部分
- path.parse
- 把一个路径转为对象
- root根路径
- dir目录
- base包含后缀名的文件名
- ext后缀名
- name不包含后缀名的文件名
- 把一个路径转为对象
- path.join
- 当需要使用路径拼接的时候推荐这个方法
- path.isAbsolute
- 判断一个路径是否为绝对路径
2. Node中的其他成员
在每一个模块中除了require
和exports
等模块相关API之外还有两个特殊成员:
__dirname
用来动态获取当前文件模块所属目录的绝对路径__filename
用来动态获取当前文件的绝对路径__dirname
和__filename
是不受执行node命令所属路径影响的
在文件操作中,使用相对路径是不可靠的,因为在node中的文件操作路径被设计为相对于执行node命令所处的路径。
可以使用绝对路径__dirname
或者__filename
来解决这个相对路径问题。
1 | // 举个栗子 |
所以为了避免相对路径带来的麻烦,node中的使用的相对路径都统一换成动态的绝对路径,于是常见fs
和path
模块是成对出现的。
3. Express中间件
中间件本质是上就是一个请求处理方法,我们把用户从请求到响应的整个过程分发到多个中间件中去处理,这样可以提高代码的灵活性,而且动态可扩展。
3.1 应用程序级别的中间件
- 万能匹配不关心请求路径和请求方法
1 | app.use(function (req, res, next){ |
- 匹配只要以
/xxx/
开头的1
2
3
4app.use('/xxx', function (req, res, next){
console.log('time', Date,now());
next();
});
3.2 路由级别的中间件
get:
1 | app.get('/', function (req, res){ |
post:
1 | app.post('/', function (req, res){ |
put:
1 | app.put('/user', function (req, res){ |
delete:
1 | app.delete('/user', function (req, res){ |
3.3 错误处理中间件
1 | app.use(function (err, req, res, next){ |
3.4 内置中间件
Starting with version 4.x, Express no longer depends on Connect. The middleware functions that were previously included with Express are now in separate modules; see the list of middleware functions.
Express has the following built-in middleware functions:
- express.static serves static assets such as HTML files, images, and so on.
- express.json parses incoming requests with JSON payloads. NOTE: Available with Express 4.16.0+
- express.urlencoded parses incoming requests with URL-encoded payloads. NOTE: Available with Express 4.16.0+