express 框架

2、res.send(”hello word”); 输出字段

3、res.sendFile( __dirname + “/” + “index.htm” ); 输出HTML 文件

4、post请求需要输出加入urlencodedParser 解析
var bodyParser = require(‘body-parser’);
// 创建 application/x-www-form-urlencoded 编码解析
var urlencodedParser = bodyParser.urlencoded({ extended: false })

5、app.use 调用中间件,也就是调用函数

6、Router 是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等)组成的

7、app.METHOD(PATH, HANDLER)。其中,app 是一个 express 实例;METHOD 是某个 HTTP 请求方式中的一个;PATH 是服务器端的路径;HANDLER 是当路由匹配到时需要执行的函数
例:app.get(‘/’, function (req, res) {
res.send(‘Hello World!’);
});
主要的HTTP请求方式 GET、POST(需要请求body-parser)、PUT、DELETE

8、 express.static 托管静态文件(相对路径存放)
app.use(express.static(‘public’));
访问:http://localhost:3000/css/style.css

可以同时调用多个目录
app.use(express.static(‘public’));
app.use(express.static(‘files’));

9、处理错误方法 多了一个err
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send(‘Something broke!’);
});

10、有些路由方法名不是合规的 JavaScript 变量名,此时使用括号记法,比如: app[‘m-search’]

11、app.all() 是一个特殊的路由方法 (任何请求都会响应)
app.all(‘/secret’, function (req, res, next) {
console.log(‘123’);
next();
});

12、指定访问的路由路径
app.get(‘/hello’,function(req,res,next){
console.log(‘22’);
next(); //访问下一个路由 res.rend(‘123’) 输出 并结束
})

13、路由句柄 使用next()来控制路由
app.get(‘/example/b’, function (req, res, next) {
console.log(‘123’);
next();
}, function (req, res) {
res.send(‘456’);
});

14、响应方法

方法 描述
res.download() 提示下载文件。
res.end() 终结响应处理流程。
res.json() 发送一个 JSON 格式的响应。
res.jsonp() 发送一个支持 JSONP 的 JSON 格式的响应。
res.redirect() 重定向请求。
res.render() 渲染视图模板。
res.send() 发送各种类型的响应。
res.sendFile 以八位字节流的形式发送文件。
res.sendStatus() 设置响应状态代码,并将其以字符串形式作为响应体的一部分发送。

15、链式路由句柄
app.route(‘/book’)
.get(function(req, res) {
res.send(‘Get a random book’);
})
.post(function(req, res) {
res.send(‘Add a book’);
})
.put(function(req, res) {
res.send(‘Update the book’);
});

16、创建路由模块
var express = require(‘express’);
var router = express.Router();

// 该路由使用的中间件
router.use(function timeLog(req, res, next) {
console.log(‘Time: ‘, Date.now());
next();
});
// 定义网站主页的路由
router.get(‘/’, function(req, res) {
res.send(‘Birds home page’);
});
// 定义 about 页面的路由
router.get(‘/about’, function(req, res) {
res.send(‘About birds’);
});

module.exports = router;

调用模块
var birds = require(‘./birds’);
app.use(‘/birds’, birds);

17、没有挂载中间件 任何请求都会执行
app.use(function (req, res, next) {
console.log(‘Time:’, Date.now());
next();
});
// 挂载至 /user/:id 的中间件,任何指向 /user/:id 的请求都会执行它
app.use(‘/user/:id’, function (req, res, next) {
console.log(‘Request Type:’, req.method);
next();
});

// 路由和句柄函数(中间件系统),处理指向 /user/:id 的 GET 请求 指定请求
app.get(‘/user/:id’, function (req, res, next) {
res.send(‘USER’);
});

18、一个挂载点装载一组中间件
// 一个中间件栈,对任何指向 /user/:id 的 HTTP 请求打印出相关信息
app.use(‘/user/:id’, function(req, res, next) {
console.log(‘Request URL:’, req.originalUrl);
next();
}, function (req, res, next) {
console.log(‘Request Type:’, req.method);
next();
});

19、一个请求可以定一两个路由 但因为第一个结束了 所以第二个不会执行
// 一个中间件栈,处理指向 /user/:id 的 GET 请求
app.get(‘/user/:id’, function (req, res, next) {
console.log(‘ID:’, req.params.id);
next();
}, function (req, res, next) {
res.send(‘User Info’);
});

// 处理 /user/:id, 打印出用户 id
app.get(‘/user/:id’, function (req, res, next) {
res.end(req.params.id);
});

20、跳过加载的中间件 直接执行下一条路由
// 一个中间件栈,处理指向 /user/:id 的 GET 请求
app.get(‘/user/:id’, function (req, res, next) {
// 如果 user id 为 0, 跳到下一个路由
if (req.params.id == 0) next(‘route’);
// 否则将控制权交给栈中下一个中间件
else next(); //
}, function (req, res, next) {
// 渲染常规页面
res.render(‘regular’);
});

// 处理 /user/:id, 渲染一个特殊页面
app.get(‘/user/:id’, function (req, res, next) {
res.render(‘special’);
});

21、路由级使用 router.use() 或 router.VERB() 加载。

22、中间件列表https://github.com/senchalabs/connect#middleware

23、views, 放模板文件的目录,比如: app.set(‘views’, ‘./views’)
//view engine, 模板引擎,比如: app.set(‘view engine’, ‘jade’)
app.engine(‘html’,require(‘ejs’).__express); 或者使用ejs 模板引擎

24、
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);

logErrors 将请求和错误信息写入标准错误输出、日志或类似服务:

function logErrors(err, req, res, next) {
console.error(err.stack);
next(err);
}

clientErrorHandler 的定义如下(注意这里将错误直接传给了 next):

function clientErrorHandler(err, req, res, next) {
if (req.xhr) {
res.status(500).send({ error: ‘Something blew up!’ });
} else {
next(err);
}
}

errorHandler 能捕获所有错误,其定义如下:

function errorHandler(err, req, res, next) {
res.status(500);
res.render(‘error’, { error: err });
}

25、使用Mongoose 模块连接接数据库

26、secret:一个String类型的字符串,作为服务器端生成session的签名。
name:返回客户端的key的名称,默认为connect.sid,也可以自己设置。
resave:(是否允许)当客户端并行发送多个请求时,其中一个请求在另一个请求结束时对session进行修改覆盖并保存。

默认为true。但是(后续版本)有可能默认失效,所以最好手动添加。

saveUninitialized:初始化session时是否保存到存储。默认为true, 但是(后续版本)有可能默认失效,所以最好手动添加。

cookie:设置返回到前端key的属性,默认值为{ path: ‘/’, httpOnly: true, secure: false, maxAge: null }。

27、生成ejs 模板
express -e xxx;
28、图片上传 参考链接:https://www.cnblogs.com/chyingp/p/express-multer-file-upload.html
var fs = require(‘fs’);
var express = require(‘express’);
var multer = require(‘multer’)

var app = express();
var upload = multer({ dest: ‘upload/’ });

// 单图上传
app.post(‘/upload’, upload.single(‘logo’), function(req, res, next){
res.send({ret_code: ‘0’});
});

app.get(‘/form’, function(req, res, next){
var form = fs.readFileSync(‘./form.html’, {encoding: ‘utf8’});
res.send(form);
});

app.listen(3000);
28、在nodejs的Express中,可以通过 req.body、req.query和req.params 三种形式来获取请求数据。

参考链接:http://blog.csdn.net/u012679583/article/details/50510717
http://www.expressjs.com.cn/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值