Node六其他常用内置模块

HTTP模块

跨域:用代理的方式跨域,打个比方,我自己有一个前端,一个后台,小明有一个后台。我的前端需要访问小明的后台就是所谓的跨域,但是如果用我自己的后台使用http请求访问小明的后台,就不用跨域,于是我就可以通过自己的前端用ajax访问自己的后端完成数据请求。·

创建服务器:通过ajax的post传至data中

//加载库中http.js,加载进入赋值给变量http,是一个对象
var reg = require("http");
//req就是客户端向服务器端请求的数据
//res就服务器项客户端发送的数据
//reg.createServer创建服务
var server = reg.createServer(function (req,res) {
    var data = "";
//req.on("data")是客户端请求的数据正在接收中的事件
    req.on("data",function (d) {
        data += d;
    });
//req.on("end")是客户端请求的数据接收完毕
    req.on("end",function () {
        var obj = JSON.parse(data);
//头文件,最后的*表示允许所有域访问
        res.writeHead(200,{
            "Content-Type": "text/plain","Access-Control-Allow-Origin": "*"
        });
        res.write(JSON.stringify(obj));
        res.end();
    });
});
//侦听事件
server.listen(1024,"localhost",function () {
    console.log("注册服务开启,开始侦听");
});

爬虫 获取数据:

//引入http模块
const http = require('http');
//发起服务器短的请求
const fs = require('fs');
http.get('http://localhost/test/1.html',(res) => {
    const {
        statusCode
    } = res;//状态码
    const contentType = res.headers['content-type'];//请求的类型
    let error;
    if (statusCode !== 200) {
        error = new Error('状态码错误');
    }
    if (error) {
        console.log(error.message);
        res.resume();// 清除请求缓存
        return;
    }
// 数据处理
    res.setEncoding('utf8');//设置数据的编码格式
    let data = '';
    res.on('data',function (d) {
        data += d;//接收分段信息
    });
    res.on('end',() => {
        // console.log(data);
//接收后写入至本地文件
        fs.writeFile('./test1.html',data,'utf8',(err) => {
            if (err) {
                throw err
            }
            console.log('下载完成');
        })
    });
}).on('error',(e) => {
    console.error(`Got error: ${e.message}`);//出错返回信息
});

URL模块

引入:const url = require('url');

let urlstring='http://www.baidu.com:8080/home/login/test?name=wy&ps=wanger#hash'
const myURL = url.parse(urlstring,true);
//parse 将url字符串变成url格式的对象
 let obj={
	protocol: 'http:',slashes: true,auth: null,host: 'www.baidu.com:8080',port: '8080',hostname: 'www.baidu.com',hash: '#hash',search: '?name=wy&ps=wanger',query: { name: 'wy',ps: 'wanger' },pathname: '/home/login/test',path: '/home/login/test?name=wy&ps=wanger',href:'http://www.baidu.com:8080/home/login/test?name=wy&ps=wanger#hash' 
}
let result=url.format(obj)
//format将url对象变成url格式的字符

QueryString模块

引入:let qs=require('querystring');

parse(query,"%",'@')//将字符串转化为对象
qs.stringify(obj,'@',"!")//将对象转为字符
qs.escape(query)//将query 中的汉字或者特殊字符进行编码
qs.unescape(code)//将query 中的汉字或者特殊字符进行解码

Path模块

引入:const path=require('path');

path.join()//实现路径拼接
path.join(__dirname,'./file.js')//__dirname是当前文件的文件夹,可以拼接多个,以逗号隔开:
path.join(__dirname,'../','./hw','mail.js')
path.basename('path')//当前文件名
path.dirname('path')//当前文件夹名
path.extname('path')//拓展名

Events模块

引入:const Event = require('events');

首先要进行以下代码(与其他模块不同)

class MyEmitter extends Event {}

// 类的继承

const myEmitter = new MyEmitter();

// 实例化对象 new对象

// 添加对象监听

let callback=(food,food2)=>{

    console.log('eat'+food+food2);

}

然后,愉快的调用

myEmitter.on('eat',callback);//eat是事件名
myEmitter.emit('eat','aaaaa','bbbb')//可以传参
myEmitter.removeAllListeners()//移除所有的事件
myEmitter.removeListener('eat',callback);//移除某个事件

Stream流

首先需要引入:const fs=require('fs');

let read=fs.createReadStream('./events.js')// 创建可读的流
let  write=fs.createWriteStream('./events3.js')// 创建可写的流

读取Stream流并复制图片的例子 

const fs = require('fs');
let read = fs.createReadStream('./file/test1.png');//新建可读Stream流文件
let data = '';//外置容器加载数据
read.setEncoding('binary');//转换成图片的格式,默认utf8
read.on('data',(d)=>{
    data+=d;//每次流式传输数据
});
read.on('end',()=>{
    fs.writeFileSync('./file/test2.png','binary');//将数据写入至文件
});

 

 读取Stream流并以可写流方式复制图片的例子 

const fs = require('fs');
let read = fs.createReadStream('./file/test1.png');//新建可读Stream流文件
let change = fs.createWriteStream('./file/test3.png','binary');//新建可写Stream流文件
read.setEncoding('binary');//转换格式(图片)
read.on('data',(d)=>{
    change.write(d);//流式存储,无需等到数据加载完,一边加载一边存储
});

读取加写入配合pipe完成复制

//达到文件流式复制
const fs=require('fs')
let read = fs.createReadStream('./file/test1.png','binary'); //新建可读Stream流文件
let change = fs.createWriteStream('./file/test4.png','binary'); //新建可写Stream流文件
read.pipe(change);//将可读流传输至可写流文件中

Zlib模块

引入:const zip = require('zlib');和

const fs = require('fs');

const gzip = zip.createGzip();//新建文件压缩
let input = fs.ReadStream('./test1.png');//传入的文件
let output = fs.WriteStream('./test1.gzip');//将压缩好的文件生成
input.pipe(gzip).pipe(output);//pipe流式传输

 

原文地址:https://blog.csdn.net/time_____

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于nodejs...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么实现目录不存在自动创建”文章能帮助大...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs如何实现定时删除文件”文章能帮助大家解决疑惑...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
本篇内容主要讲解“怎么安装Node.js的旧版本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎...
这篇“node中的Express框架怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要介绍“nodejs如何实现搜索引擎”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs如何实现搜索引擎...
这篇文章主要介绍“nodejs中间层如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs中间层如何设置”文...
这篇文章主要介绍“nodejs多线程怎么实现”,在日常操作中,相信很多人在nodejs多线程怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
这篇文章主要讲解了“nodejs怎么分布式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs怎么分布式”...
本篇内容介绍了“nodejs字符串怎么转换为数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
这篇文章主要介绍了nodejs如何运行在php服务器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nodejs如何运行在php服务器文章都...
本篇内容主要讲解“nodejs单线程如何处理事件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs单线程如何...
这篇文章主要介绍“nodejs怎么安装ws模块”,在日常操作中,相信很多人在nodejs怎么安装ws模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
本篇内容介绍了“怎么打包nodejs代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!
本文小编为大家详细介绍“nodejs接收到的汉字乱码怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs接收到的汉字乱码怎么解决”文章能帮助大家解...
这篇“nodejs怎么同步删除文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇...
今天小编给大家分享一下nodejs怎么设置淘宝镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希