express版本4.16.1
express(版本4.16.1)
1新建名为myapp项目步骤
- express --view=pug myapp
- cd myapp
- npm myapp
- SET DEBUG=myapp:* & npm start(运行项目命令)
2项目结构解析
2.1myapp项目的文件目录结构如下
myapp
- app.js
- bin
- node_modules
- package.json
- public
- routes
- index.js
- users.js
- views
- error.pug
- index.pug
- layout.pug
2.2文件结构说明
routes文件夹中是项目的路由设置文件,view文件中为项目的视图模板,package.json为项目的依赖说明
2.3app.js代码
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
3express中间件与方法
- express应用
创建一个引用
var express=require('express');
var app=express();
app.use(path,callback)
path中间件函数路径。可以是表示路径或者正则表达式
callback:它是中间件(rooter)或者一系列中间件的函数
app.get(path,callback)
app.get(path,callback)
callback只能是函数
- express 请求
方法 | 应用 |
---|---|
req.baseUrl | 请求实例的路径比如当请求是/image/icon.jpg 时候req.baseUrl=/image |
req.body | 请求正文允许提交键值对 |
req.cookies | 请求的cookie对象 |
req.hostname | 请求的主机名 |
req.ip | 请求的远程ip地址 |
req.originalUrl | 请求的完整路径 |
req.accepts(类型) | 检查指定请求的内容接受的指定类型 |
req.acceptsCharsets() | 检查指定请求的内容接受的字符集 |
req.acceptsEncoding() | 检查指定请求的内容接受的编码 |
req.acceptsLanguage() | 检查指定请求的内容接受的字符集 |
- express 回复
方法 | 应用 |
---|---|
res.append() | 在字符串和数组后追加内容 |
res.attchment() | 添加新属性 |
res.format() | 字符设置 |
res.render() | 将渲染后的html内容发送到客户端 |
res.statue() | 设置响应状态 |
res.send() | 发送http响应内容,内容可以是对象、字符、数组、 |
res.type | 将响应头设置为指定类型 |
- express router(路由)
express rooter派生于http方法之一
//通过router()创建顶级路由对象
router=express.router()
router.get(‘path’,function(req,res,next){
})
方法 | 应用 |
---|---|
router.all() | 匹配所有路由 |
router.param(name,callback) | 接受两个参数且必须返回一个中间件 |
router.route() | 返回单个路由实例,用于指定各种http处理程序 |
router.use() | 使用自定的中间件函数或者函数 |