使用Express 框架快速搭建web应用
安装express 框架
- step.1 安装node.js 环境,默认带npm(略)
- step.2 安装express框架
$ mkdir my_express
$ npm init
$ cnpm install express --save
$ cnpm install body-parser --save
$ cnpm install COOKIE-parser --save
$ cnpm install multer --save
注意:
body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。
COOKIE-parser - 这就是一个解析COOKIE的工具。通过req.COOKIEs可以取到传过来的COOKIE,并把它们转成对象。
multer - node.js 中间件,用于处理 enctype=“multipart/form-data”(设置表单的MIME编码)的表单数据。
-my_express|---- node_modules|---- public| |---- logo.jpg| |---- index.html||---- index.js
var express = require('express');
var App = new express();
App.use('/pub', express.static('public'));App.get('/', function (req,res) {res.send('Hello World');
});
App.get('/index.html', function (req, res) {res.sendFile( __dirname + "/public/" + "index.html" );
})
App.get('/user', function (req,res) {var response = req.query;console.log(response);res.end(JSON.stringify(response));});
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false });App.post('/process_post', urlencodedParser, function (req,res) {res.send(req.body);
});
var COOKIEParser = require('COOKIE-parser');
App.use(COOKIEParser());App.get('/COOKIEs', function (req,res) {console.log(req.COOKIEs);res.end('read COOKIEs');
});
var server = App.listen(8888, function () {var host = server.address().address;var port = server.address().port;console.log("应用,htpp://%s:%s", host ,port);
});
<html>
<body>
<h3>geth3>
<form action&#61;"/user" method&#61;"GET">
First Name: <input type&#61;"text" name&#61;"first_name"> <br>Last Name: <input type&#61;"text" name&#61;"last_name">
<input type&#61;"submit" value&#61;"Submit">
form><h3>posth3><form action&#61;"/process_post" method&#61;"POST">
First Name: <input type&#61;"text" name&#61;"first_name_post"> <br>Last Name: <input type&#61;"text" name&#61;"last_name_post">
<input type&#61;"submit" value&#61;"Submit">
form><h3>upload fileh3>
<form action&#61;"/file_upload" method&#61;"post" enctype&#61;"multipart/form-data">
<input type&#61;"file" name&#61;"image" size&#61;"50" />
<br />
<input type&#61;"submit" value&#61;"上传文件" />
form>body>
html>
关键注解
关键代码 | 功能 |
---|
App.use(’/pub’, express.static(‘public’)) | 声明定义public 目录为静态资源&#xff0c;使外部可直接通过http访问 |
res.sendFile( __dirname &#43; “index.html” ); | 把某个模板文件转发回浏览器 |
req.query | 获取URL中的所有参数 |
req.body | 获取body中的所有参数&#xff08;注意&#xff0c;需要使用require(&#39;body-parser&#39;) 否则获取不了) |
request 和 response 对象的具体介绍&#xff1a;
- Request 对象 - request 对象表示 HTTP 请求&#xff0c;包含了请求查询字符串&#xff0c;参数&#xff0c;内容&#xff0c;HTTP 头部等属性。常见属性有&#xff1a;
属性 | 说明 |
---|
req.app | 当callback为外部文件时&#xff0c;用req.app访问express的实例 |
req.baseUrl | 获取路由当前安装的URL路径 |
req.body / req.COOKIEs | 获得「请求主体」/ COOKIEs |
req.fresh / req.stale | 判断请求是否还「新鲜」 |
req.hostname / req.ip | 获取主机名和IP地址 |
req.originalUrl | 获取原始请求URL |
req.params | 获取路由的parameters |
req.path | 获取请求路径 |
req.protocol | 获取协议类型 |
req.query | 获取URL的查询参数串 |
req.route | 获取当前匹配的路由 |
req.subdomains | 获取子域名 |
req.accepts() | 检查可接受的请求的文档类型 |
req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages | 返回指定字符集的第一个可接受字符编码 |
req.get() | 获取指定的HTTP请求头 |
req.is() | 判断请求头Content-Type的MIME类型 |
- Response 对象 - response 对象表示 HTTP 响应&#xff0c;即在接收到请求时向客户端发送的 HTTP 响应数据。常见属性有&#xff1a;
属性 | 说明 |
---|
res.app | 同req.app一样 |
res.append() | 追加指定HTTP头 |
res.set() | 在res.append()后将重置之前设置的头 |
res.COOKIE(name&#xff0c;value [&#xff0c;option]) | 设置COOKIE |
opition | domain / expires / httpOnly / maxAge / path / secure / signed |
res.clearCOOKIE() | 清除COOKIE |
res.download() | 传送指定路径的文件 |
res.get() | 返回指定的HTTP头 |
res.json() | 传送JSON响应 |
res.jsonp() | 传送JSONP响应 |
res.location() | 只设置响应的Location HTTP头&#xff0c;不设置状态码或者close response |
res.redirect() | 设置响应的Location HTTP头&#xff0c;并且设置状态码302 |
res.render(view,[locals],callback) | 渲染一个view&#xff0c;同时向callback传递渲染后的字符串&#xff0c;如果在渲染过程中有错误发生next(err)将会被自动调用。callback将会被传入一个可能发生的错误以及渲染后的页面&#xff0c;这样就不会自动输出了。 |
res.send() | 传送HTTP响应 |
res.sendFile(path [&#xff0c;options] [&#xff0c;fn]) | 传送指定路径的文件 -会自动根据文件extension设定Content-Type |
res.set() | 设置HTTP头&#xff0c;传入object可以一次设置多个头 |
res.status() | 设置HTTP状态码 |
res.type() | 设置Content-Type的MIME类型 |