Node.js(二)node 核心模块 fs、HTTP模块、express框架-灵析社区

青椒肉丝加点糖

一、核心模块(FS模块)

       fs 模块是文件系统模块:用于文件操作,分文件形式和目录形式,使用前需先导入 fs 模块:

const fs = require('fs');

1. 常用API:

2. 同步和异步

//同步:在主线程中执行,会阻止后续代码的执行,通过返回值获取结果
          let s = fs.statSync('./01_homework.js');
          console.log(s);
//异步:在一个独立的线程执行,不会阻止主线程中后续代码执行,结果以回调函数形式获取,最终放入事件队列
          fs.stat('../Day02',(err,s)=>{
          //形参err指可能产生的错误结果
                if (err){
                    throw err;
                }
                //s表示成功的结果
                console.log(s);
                //查看是否为文件
                console.log(s.isFile( ));
                //查看是否为目录
                console.log(s.isDirectory( ));
           });

3. 文件流

(1)createReadStream( )  创建可读取的文件流,分段读取数据
(2)createWriteStream( )  创建可写入的文件流
(3)pipe( )  管道,可以将读取的文件流添加到写入的文件流

//引入fs模块
const fs = require('fs');
 
//创建一个可读取的文件流
let rs = fs.createReadStream('./2018061133.rar');
 
//创建一个可写入的文件流,即使文件不存在也会自动创建
let ws = fs.createWriteStream('./2018061101.rar');
 
//把读取的文件流通过管道添加到写入的文件流
rs.pipe(ws);

二、HTTP模块

1. HTTP协议

       超文本传输协议,是客户端浏览器和Web服务器之间的通信协议。由四部分组成:

(1)通用的头信息(general)
 Request URL:要请求的资源
       Request Method:对资源的操作方式
       get获取
       post新建
       delete删除
       Status Code: 响应的
状态码
               1**:接受了请求,还没做出响应
               2**:成功响应
               3**:响应的重定向,发生跳转
               4**:客户端错误
               5**:服务器端错误
(2)响应的头信息(response)
       Location:要跳转的URL,通常结合状态码302来使用
       Content-Type:内容类型,解决中文乱码 text/html;charset=utf-8
(3)请求的头信息(request)
(4)请求体,只有涉及到数据传递才会出现。

2. HTTP模块

       可以用来创建WEB服务器。

//1.创建WEB服务器
const http = require('http');  //引入HTTP模块
const app = http.createServer( );  //创建web服务器
app.listen(8080);  //设置端口
 
//2.接收请求做出响应
app.on('request',(req,res)=>{
     req 请求的对象
     req.url 请求的服务器端的资源
     req.method 请求的方法
     res 响应的对象
     res.writeHead( ) 设置响应的状态码和头信息
     res.write( ) 设置响应的内容
     res.end( ) 结束并发送响应
  })

三、express框架

       express简化了已有的功能,增加了之前没有的功能,基于项目开发,属于第三方模块,需要先下载安装:

npm install express

      它的特点是基于Node.js平台,快速、开放、极简的WEB开发框架

1. 路由

       浏览器发来的请求,服务器根据请求的方法和请求的URL做出的响应,路由最终处理特点的请求;路由是由请求的方法、请求的URL、回调函数三个要素组成的。

2. 使用步骤

(1)创建服务器

const express = require('express');  //引入express第三方模块
const app = express( );  //创建WEB服务器
app.listen(8080);  //设置端口

(2)添加路由

       有三种添加方式:

//添加路由:处理首页的请求
//请求的URL:/index  请求的方法:get
app.get('/index',(req,res)=>{
     res.send('这是首页!');
});
 
//添加路由:跳转
app.get('/study',(req,res)=>{
     res.redirect('https://www.tmooc.cn/');
});
 
//添加路由:响应文件
app.get('/list',(req,res)=>{
     res.sendFile(__dirname + '/1.html');
});
req请求对象
res响应对象
res.send( )设置响应的内容并发送
res.redirect( )设置响应的重定向并发送
res.sendFile( )设置响应的文件并发送,使用绝对路径 __dirname

(3)请求对象和响应对象

       即数据传递,有GET传递、POST传递、路由传参

get传递:

eg:
//添加路由,接收按钮提交的请求
app.get('/mysearch',(req,res)=>{
     //console.log(req.url,req.method);
     console.log(req.query);
     res.send('搜索成功');
});
req.method获取请求的方法
req.url获取请求的URL
req.query获取URL中查询字符串的数据,格式为对象

post传递:

eg:
//新建路由(post    /mylogin)
app.post('/mylogin',(req,res)=>{
     req.on('data',(chunk)=>{
        //chunk 传递的一段数据
        console.log(chunk.toString());
        var obj = querystring.parse(chunk.toString());
        console.log(obj);
     });
        res.send('post方法请求成功');
});

路由传参:

eg:
//新建路由,获取包的详情介绍(get  /package)
app.get('/package/:pname',(req,res)=>{
	console.log(req.params);
	res.send('这是包的详情介绍');
});

总结:


阅读量:1626

点赞量:0

收藏量:0