express框架的简介与使用
什么是Express
Express是目前流行的基于node.js运行环境的web开发框架,可以快速地搭建一个完整功能的网站。
express框架的使用
1.一套基本操作:引入模块+创建服务器+返回文件+监听端口
var express = require(“C:/Program Files/nodejs/node_modules/express”);
//引用node.js中的express模块
var app = express();//等同于 new express(),底层设计
app.use(express.static(__dirname+"/html"));
app.listen(8089);
//express.static()设置静态路由,括号中的所有文件夹和文件都会变成路由文件,上面的/html也可以是项目的名称,可以提供图片,css,Javascript格式的文件
//app.listen设置访问本程序的端口号
(后端文件与项目文件的目录结构关系
2.响应对象
响应json格式的数据
<button id="btn_json">ajax请求</button>
---------以下为script标签代码-----------
$("#btn_json").on("click",function(){
$.get("json.text",function(data){
console.log(data);
$("body").append(data.name+":"+data.age);
});
});
------------------以下为后端服务器代码-------------------------------------
app.get("/json.text",function(req,res){
res.json({name:"lily",age:18});
})
注意:$.get是jquery_ajax请求数据的方法:
$.get(url,data,function(response,status,xhr){…})
url 必需
data (可选)发送到服务器的参数
success(response,status,xhr) 可选。请求成功的回调函数
response 结果数据
status 请求的状态
xhr XMLHttpRequest 对象
响应jsonp格式的数据
<button id="btn_jsonp">jsonp请求</button>
---------------以下为script标签代码---------------------
$("#btn_jsonp").on("click",function(){
$.getJSON("/jsonp.text?cb=?",function(data){
console.log(data);
$("body").append(data.user);
})
});
--------------------------以下为后端服务器代码------------------------------------
app.get("/jsonp.text",function(req,res){
app.set('jsonp callback name', 'cb');
res.jsonp({ user: 'karen' });
})
重定向
<form action="form_data" method="post">
<input type="submit" value="发送数据"/>
</form>
----------------------------
app.get("/index.html",function(req,res){
res.sendFile(__dirname+"/index.html");
})
app.post("/form_data",function(req,res){
res.redirect("/index.html");
})
重定向指向的文件必须经过获取,地址栏端口号后的URI变化的顺序为:
当前页面 xx.html -> form_data -> index.html
发送任何字段
app.get("/index.html",function(req,res){
res.send("skrskrskrskr");
})
-------------------------------
//send用于发送任何一串字符,必须用引号包裹
发送文件
res.sendFile(__dirname+"/index.html");
终结响应处理流程
app.get("/index.html",function(req,res){
res.end("skrskrskrskr");
}
------------显示结果如下--------------
设置响应状态码并将其以字符串的形式发送给前端
app.get("/index.html",function(req,res){
res.sendStatus(404);
// 以上等价于 res.status(404).send(“Not Found”);
})
-----------显示结果如下–http状态码变为404并自动设置了响应头“ Not Found”---------------------
3.post请求
<form action="form_data" method="post">
<input type="submit" value="发送数据"/>
</form>
----------------------------------
app.post("/form_data",function(req,res){
res.sendFile(__dirname+"/html/station.html");
})
4.所有请求都适用
app. all ("/index.html",function(req,res){
res.send(‘6666666’);
})
====无论什么请求方式,只要前端请求了/index.html,就返回字段’6666666’
app. all (" * " , function(req,res){
res.send(‘6666666’);
})
=====无论前端请求什么,都返回字段’6666666’,如下:
此功能适用于当用户输入地址有误时,给前端用户发送一个特定的错误页面。
注意:all与其他请求方式get、post等优先级相同,一般放在所有其他指定了的请求方式的代码后面。
5.动态路由
app.get("/news/money/:id",function(req,res){
console.log(req.params) ;
console.log(req.params.id);
})
----------------------打印结果如下------------
{ id: ‘10091.html’ } //对象
10091.html
对应文件目录结构如下:
app.get("/news/money/:id",function(req,res){
res.sendFile(__dirname+"/news/money/"+req.params.id);
})