Express 是一个简洁、灵活的 node.js Web 应用开发框架, 它提供一系列强大的特性,帮助你建立各类 Web 和移动设备应用。node
1.express组织结构express
app demojson
|---node_modules------用于安装本地模块。
|---public------------用于存放用户能够下载到的文件,好比图片、脚本、样式表等。
|---routes------------用于存放路由文件。
|---views-------------用于存放网页的模板。
|---app.js------------应用程序的启动脚本。
|---package.json------项目的配置文件。浏览器
2..建立express服务器服务器
1
2
3
4
5
6
7
8
9
10
11
|
//app.js文件
var
express = require(
'express'
);
var
app = express();
//指定更目录显示的内容
app.get(
'/'
,
function
(req, res){
res.send(
'Hello World'
);
});
//指定监听端口
var
server = app.listen(3000,
function
() {
console.log(
'Listening on port %d'
, server.address().port);
});
|
运行nodejs应用程序app
/>node app.js框架
3.中间件ide
中间件(middleware)就是处理HTTP请求的函数.
当一个HTTP请求进入服务器,服务器实例会调用第一个中间件,完成后根据设置,决定是否再调用下一个中间件.函数
中间件的参数为:post
.四个的时候---第一个为错误处理,第二个为客户请求request,第三个为服务器响应respond,第四个为next中间件. 如function(error, request, response, next){}
.三个的时候---第一个客户请求request,第二个为服务器响应respond,第三个为next中间件. 如function(request, response, next){}
.两个的时候---第一个客户请求request,第二个为服务器响应respondfunction. 如function(request, response){}
4.使用中间件use
use是express调用中间件的方法,它返回一个函数.
1
2
3
4
|
app.use(
function
(request, response) {
response.writeHead(200, {
"Content-Type"
:
"text/plain"
});
response.end(
"Hello world!\n"
);
});
|
5.错误内容显示
1
2
3
4
5
6
7
|
app.use(express.bodyParser());
//使用body参数
app.use(express.methodOverride());
//使用函数覆盖
app.use(app.router);
//使用路由
app.use(
function
(err, req, res, next){
console.error(err.stack);
res.send(500,
'Something broke!'
);
});
//错误内容显示
|
6.路由
express路由的方式有多种,这里举例经常使用的几种:
.app.use('/', middleware);//get/post时,对于路径/的处理
.app.get("/", middleware);//http中get时,对于路径/的处理
.app.post("/", middleware);//http中post时,对于路径/的处理
.app.put("/", middleware);//http中put时,对于路径/的处理
.app.delete("/", middleware);//http中delete时,对于路径/的处理
7.路径通配符*
.*表示全部路径
1
2
3
|
app.get(
"*"
,
function
(request, response) {
response.end(
"404!"
);
});
//全部路径都返回404
|
.:捕获路径内容
1
2
3
|
app.get(
"/hello/:who"
,
function
(req, res) {
res.end(
"Hello, "
+ req.params.who +
"."
);
});
//如"/hello/alice”网址,网址中的alice将被捕获,做为req.params.who属性的值
|
8.设置环境变量set
set用于指定变量的值.
app.set("view engine", "ejs");//使用ejs做为模版
9.response对象方法
.重定向redirect
response.redirect("/hello/anime");//重定向到/hello/anime
.发送文件sendFile
response.sendFile("/path/to/anime.mp4");
.渲染网页模板render,即把变换的内容加载到网页.
response.render("index", { message: "Hello World" });//将message变量传入index模板,值为"Hello World"渲染成HTML网页
10.requst对象方法
.获取客户ip地址:request.ip
.获取上传的文件:request.files
11.启动脚本package.json
package.json用于指定app信息,nodejs版本号和其余组件的依赖关系
1
2
3
4
5
6
7
8
|
{
"name"
:
"demo"
,
"description"
:
"My First Express App"
,
"version"
:
"0.0.1"
,
"dependencies"
: {
"express"
:
"3.x"
}
}
|
12.app入口app.js
app.js主要包含http的建立,基本路由,监听端口号
13.动态网页模板views
views文件夹,用于存放全部的放网页模板.
1
2
3
4
5
6
|
//app.js
app.get(
'/'
,
function
(req, res) {
res.render(
'index'
,{title:
"最近文章"
});
});
//index.js
this
is <%=title%>!
|
14.指定静态网页目录
//app.jsapp.use(express.static('public'));//指定静态网页目录,当浏览器发出非HTML文件请求时,服务器端就到public目录寻找这个文件