1. Install
npm init
npm install express --save
or
npm install express-generator -g
express [appname]
npm install
set DEBUG=[appname]:* & npm start
.
├── app.js
├── bin
│ └── www
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views
├── error.jade
├── index.jade
└── layout.jade
2. RESTFUL url
var express =require('express');var app =express();
app.METHOD(path,handler)
METHOD: get/post/put/delete/all
handler: function(req,res,next)
3. static file
app.use(express.static('folder'))
app.use('/static', express.static(__dirname +'/public'));
4. Route
var express = require('express');
var app = express();
// respond with "hello world" when a GET request is made to the homepage
app.get('/', function(req, res) {
res.send('hello world');
});
app.get('/example/b', function (req, res, next) {
console.log('response will be sent by the next function ...');
next();
}, function (req, res) {
res.send('Hello from B!');
});
app.get('/example/c', [cb0, cb1, cb2]);
方法 | 描述 |
---|---|
res.download() | 提示下载文件。 |
res.end() | 终结响应处理流程。 |
res.json() | 发送一个 JSON 格式的响应。 |
res.jsonp() | 发送一个支持 JSONP 的 JSON 格式的响应。 |
res.redirect() | 重定向请求。 |
res.render() | 渲染视图模板。 |
res.send() | 发送各种类型的响应。 |
res.sendFile | 以八位字节流的形式发送文件。 |
res.sendStatus() | 设置响应状态代码,并将其以字符串形式作为响应体的一部分发送。 |
var express = require('express'); var router = express.Router();
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');
});
// 该路由使用的中间件
router.use(function timeLog(req, res, next) {
console.log('Time: ', Date.now());
next();
});
5. 中间件
中间件的功能包括:
- 执行任何代码。
- 修改请求和响应对象。
- 终结请求-响应循环。
- 调用堆栈中的下一个中间件。
如果当前中间件没有终结请求-响应循环,则必须调用 next()
方法将控制权交给下一个中间件,否则请求就会挂起。
方法声明 function(req,res,next){...} next()用于调用下一中间件
错误处理中间件 function(err,req,res,next){err.stack}
关键函数app.use,next 可以挂载至某一路径 也可以不挂载
路由中间件
// 一个中间件栈,处理指向 /user/:id 的 GET 请求
router.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, 渲染一个特殊页面
router.get('/user/:id', function (req, res, next) {
console.log(req.params.id);
res.render('special');
});
// 将路由挂载至应用
app.use('/', router);
app.use(express.static('public'));
6. 模板引擎
npm install jade --save
views
, 放模板文件的目录,比如:app.set('views', './views')
view engine
, 模板引擎,比如:app.set('view engine', 'jade')
使用ejs
express -e projectName (-e使用ejs)
npm install
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
1.<%= %>
输出的是转义后的变量值
2.<%- %>
输出的是没有转义后的变量值
3.<% %>
标签中是javascript逻辑代码,注意括号的开闭合