您的位置:首页 > 其它

Express 摘录 (1)

2016-07-10 12:56 148 查看
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(<
4000
/span>);

// 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逻辑代码,注意括号的开闭合
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: