首页 > 技术文章 > node js express框架

klwblogs 2020-06-21 20:31 原文

1.简述express

快速,不受限制的,极简的Node Web框架。通俗来说就是node http模块的替代品:4

2.在node上创建使用express框架创建的web服务器:

const express=require('express'); //引入express 模块
const app=express();// 创建web服务器 调用这个express函数
app.listen(8080); // 使用这个80接口

创建这个接口的同时 ,本地会自动打开8080这个接口,80/8080 是http协议常用端口号 https是443/tcp 443/udp

3.express下的路由

app.get('/index',(req,res)=>{
    res.send('<h1>这是主页</h2>');
});
app.get('/redirect',(req,res)=>{    //重定向 302 状态码 
  res.redirect('https://www.google.com.hk/')
});
app.get('/file',(req,res)=>{
    res.sendFile(__dirname+'/pre.html');
});
//app.METHOD(path, [callback...], callback)
// app 是 express 对象的一个实例, METHOD 是一个 HTTP 请求方法, path 是服务器上的路径 (得到的url), callback 是当路由匹配时要执行的函数。

 

4. 请求方法 get  获取类型为查询字符串 req.query 为查询get 方法中的数据

 比如在搜索页面 中搜索一个物品 这个搜索框中 请求的类型为get   怎么在服务器端怎么获取到这个数据

创建一个搜索的html文件   

这个form表单提交时候 是重新发送请求给服务器 方法是 get   url 是mysearch 

<form method='get' action='/mysearch'>
<input type='text' name='kd'>  <!--一定要所传递的数据打上一个标签 name 
只有设置了 name 属性的表单元素才能在提交表单时传递它们的值,因为服务端获取表单提交的数据是通过表单元素的 name 属性的值而得到的,
没有 name 属性就无法得到表单元素提交给服务端的值
-->
<input type='submit' >
</form>

 在服务器中添加一个路由

app.get('/search',(req,res)=>{
console.log(req.query);
res.sendFile(__dirname+'/sousuo.html'); //{ kd: '123' } 会获得一个对象
}); 
app.get('/mysearch',(req,res)=>{
res.send('这是你搜索的'+ req.query.kd)
})

 

 

 这是服务器端接收到的数据

5.post 获取方法 以及 post的数据

由于post的数据是以流的方式传递 所以需要事件来查看

app.get('/login',(req,res)=>{
    res.sendFile(__dirname+'/zhuce.html');
});
app.post('/mylogin',(req,res)=>{
    req.on('data',(chunk)=>{
                                                     //chunk 分段的数据,格式为buffer
                                                //console.log(chunk)
                                             // <Buffer 75 6e 61 6d 65 3d 31 32 33 26 75 70 77 64 3d 34 35 36>
                                            //还要把chunk的数据转为字符串 字符串在转为对象 
      let data=querystring.parse(   chunk.toString() );
      console.log(data);             //需要引入querystring模块
    });
    res.send('登陆成功');
});

 

 

 

 

 

 buffer数据是不能被查看的 所以需要转换为字符串 然后把字符串转换为对象需要用到querystring 模块下的parse方法 转为对象供我们使用

6. 路由传参   获取 req.params

app.get('/package/:pname', (req,res)=>{

  // :pname  设置形参 

  req.params  获取路由传参的数据,格式为对象

});

传递

http://127.0.0.1:8080/package/express

express是实参,真正传递的数据

 

 

 console.log打印出来 实参

app.get('/user/:pname',(req,res)=>{
    console.log(req.params);
    res.send('孔令伟');

});

7.路由器

创建一个路由器

const express=require('express');
const router=express.Router(); //express.Router  创建一个路由器
router.get('/list',(req,res)=>{        //在路由器中写入一个路由
    res.send('小明');
    console.log(router);
});
module.exports=router; //把路由器公开导出 由于本身就是为对象

 

 

把路由器引入到web服务器

const express=require('express');
const rou=require('./luyou.js'); //引入路由器
const app=express();
app.listen(8080);
app.use('/product',rou); 
//参数1:添加的前缀
//参数2:挂载的路由器

 

推荐阅读