NodeJS——用express创建一个简单的服务器
express
上一节我们讲了如何用http模块去创建服务器,但是大家会发现当url变得越来越多时,用http来创建的服务器所有的访问地址全在一起,就会显得很混乱,而且访问性能也不是最好的。所以后面就提出了express。它基于NodeJS平台、快速、开发、极简的web开发框架。它创建web服务器的步骤: 1、引入模块 const express=require(‘require’); 2、创建服务器 var app=express(); 3、添加端口号 app.listen(8080);` express创建服务器和http模块创建服务器的三步都相似,但是express提出了路由和路由器的概念。或许很多人会想路由到底是什么?就举个例子,在任何一个网站都有用户注册,登录,用户的增删改查等很多功能,而一个路由就是指其中的一个功能。而所有的路由最终都会搭载在路由器上,即由路由器管理这些路由。
路由
上面我们说了在一个功能就相当于一个路由。那具体解释是如何? HTTP客户端发来请求,服务器端程序会根据会根据请求方法和请求url确定一个响应方法,而在express中的路由即由三部分组成:
app.METHOD(URL,function(req,res){
});
METHOD:请求方法(get/post) URL:请求的url res:响应对象 : send 设置响应内容并发送请求,路由中只能使用一次 : sendFile 设置文件并发送,必须使用绝对路径 : redirect() 响应的重定向,跳转到另一个url req:请求对象 : query:获取请求的查询字符串的数据,格式为对象 : params:获取路由传参的数据,格式是对象 路由传参:
app.get(;/order/:did,function(req,res){
req.params;//获取路由传参的数据
});
例子:创建路由,请求的方法get,请求的url:/shopping,使用路由传参来传递商品的价格和规格,然后把价格和规格显示到浏览器中
app.get(shopping/:price/:spec,function(req,res){
res.send(`
价格:${
req.params.price}<br>
规格:${
req.params.spec}
`);
});
例子:练习: 使用express创建web服务器,创建登录路由(获取登录的html),请求的方法:get,请求的url: /login,响应文件login.html
app.get(/login,function(req,res){
res.sendFile(__dirname+login.html文件路径);
});
获取post请求的数据
//请求方法:post 请求url:/mylogin
//响应’登录成功
app.post(/mylogin,function(req,res){
//获取post请求传递的数据
//监听是否有数据传递,自动触发回调函数
req.on(data,function(chunk){
//chunk就是传递的数据
var str=chunk.toString();
//把查询字符串解析为对象
var obj=querystring.parse(str);
console.log(obj);
});
res.send(登入成功);
});
路由器
在一个项目中出现相同的url是很常见的,用户有list功能,而商品也有list功能。为了避免出现混淆,路由器可将同一模块下的所有的路由管理起来,路由器最终要挂载到web服务器下才能使用。 1、创建路由器模块
const express=require(express);
//创建路由器对象
const router=express.Router();
//添加路由
router.get(/user,function(req,res){
res.send(响应内容);
});
2、在服务器中使用并引入
//创建服务器 const express=require(express); //引入路由器模块 const userRouter=require(/user.js); var app=express(); app.listen(8080); //在服务器中使用路由器,并在所有的url中添加前缀,访问形式 /user/list app.use(/user,userRouter);
