NodeJs入门常见模块
NodeJs 常见模块
内置模块
fs
引入模块
const fs=require('fs');
内置模块常用方法:
readFile 读文件
格式:fs.readfile(url,“utf-8”,callback);
例子:
var fs = require('fs'); // 引入fs模块fs.readFile('./test.txt', function(err, data) {// 读取文件失败/错误if (err) {throw err;}// 读取文件成功console.log(data); });
可以设置utf-8或者data.toString()
如果需要同步写法:fs.readFileSync(filename,[options])。
writeFile写文件
格式:fs.writeFile(url ,data,callback)
例子:
fs.writeFile('./test2.txt', 'test test', function(err) {if (err) {throw err;}console.log('Saved.');// 写入成功后读取测试fs.readFile('./test2.txt', 'utf-8', function(err, data) {if (err) {throw err;}console.log(data);}); });
rename改名
- 格式:fs.rename(oldpath,newpath,callback)
- 注意:前端相对路径、后端绝对路径(__dirname);
readdir读文件夹
格式:fs.readdir(url,(err,files)=>{})
参数:url->路径
err->异常
files->文件夹中文件(数组)
mkdir创建文件夹
- 格式:fs.mkdir(url,callback)
rmdir删除文件夹
- 格式:fs.rmdir(url,callback)
copyFile复制文件
- 格式:fs.copyFile(src,dest,callback)
url
- 引入模块
const url = require("url");
内置模块 - url是一个对象,有3个方法
- url.parse(url字符串) 将url字符串转成url对象
- url.format(url对象) 将url对象转成url字符串
- url.resolve(from,to) url拼接(替换)
http
- 引入模块
const http = require("http");
内置模块 - 搭建简易服务器
//获取http模块
const http = require("http");
//获取http.Server对象
var server = new http.Server();//创建服务器,并监听3000端口
server.on("request",function(req,res) {res.writeHead(200,{"content-type":"text/plain"});res.write("Hello Nodejs");res.end();
}).listen(3000);
上面的示例代码创建了一个http.Server对象,然后为其添加request事件监听,这个事件会在每次接收到请求时触发。text/plain的意思是将文件设置为纯文本格式,浏览器在获取到这种文件时并不会对其进行处理,如果将content-type设置为text/html,浏览器在获取到这种文件时会自动调用HTML的解析器对文件进行相应的处理。
- 后端中服务器类型有两种
- web服务器【 静态服务器 】
- 举例: wamp里面www目录
- 目的是为了展示页面内容
- 前端: nginx
- 应用级服务器[ api服务器 ]
- 后端接口
- tomcat
- 使用Node.js原生代码实现静态服务器:
- web服务器【 静态服务器 】
const http = require("http");
const port = 3000 ;
const hostname = 'localhost';//createServer()方法创建的http.Server对象默认添加了一个request事件监听
http.createServer(function(req,res) {res.writeHead(200,{"content-type":"text/html;charset=utf-8;"});res.write("Hello Nodejs");res.end();
}).listen(port,hostname,()=>{//端口号 域名 监听回调console.log(`The Server is running at: http://${ hostname }:${ port }`);
});
- 爬虫案例
const http = require( 'http' )const port = 3000 //端口号const hostname = 'localhost' //域名const cheerio = require( 'cheerio' ) //引入处理页面元素的模块const options = {hostname: '',port: 80,path: '',method: 'GET',headers: {//网页中 request Headers}};http.createServer((request,response) => {response.writeHead( 200, {'Content-Type': 'text/html;charset=utf8'})const req = http.get( options, (res) => { // 发送请求const { statusCode } = res; // 获取状态码 1xx - 5xxconst contentType = res.headers['content-type']; // 文件类型 text/json/html/xmlres.setEncoding('utf8'); // 字符编码 // 核心 -- startlet rawData = '';res.on('data', (chunk) => { rawData += chunk; }); // 数据拼接 res.on('end', () => { // 数据获取结束try {const $ = cheerio.load( rawData );//类似于jquery//$('td.student a').each( function ( item ) {// response.write( `<h3> ${ $( this ).text() } </h3>` )//}) response.end()} catch (e) {console.error(e.message);}});// 核心 -- end}).on('error', (e) => {console.error(`Got error: ${e.message}`);});req.end()}).listen(port,hostname,() => {// 参数: 端口 域名 监听回调console.log(`The Server is running at: http://${ hostname }:${ port }`)})
通过后端语言爬取网站中的数据,然后通过特定模块进行数据清洗,最后将数据输出给前端。
不是那个网站都能爬取的 。
- 反爬虫:给标签的内容中放一张图片
zlib
- 引入模块
const zlib = require( 'zlib' )
- 例子:
const zlib = require( 'zlib' ) // zlib是一个压缩包的内置模块const fs = require( 'fs' ) // fs是文件系统 const inp = fs.createReadStream('./dist/1.txt') // 创建可读的流// 通过fs文件系统将 data 中的内容写进去const out = fs.createWriteStream('1.txt.gz') //创建可写的流 const gzlib = zlib.createGzlip() // 创建一个空的压缩包 inp .pipe( gzlib ).pipe( out )
- Node.js中数据是分片【 chunk 】传输的
- Node.js中数据传输是分片的流
- 为了提高性能,减少能耗【 cpu 】
- 管道流 【 连接 I/O 之间的一个管道】,这个管道我们称之为: pipe
- 为了提高性能,减少能耗【 cpu 】
console
- 底层调用的是: process.stdout
path
引入模块
const path = require('path');
常用方法
path.join()使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。
例子:path.join(’/foo’, ‘bar’, ‘baz/asdf’, ‘quux’, ‘…’);// 返回: ‘/foo/bar/baz/asdf’
异常:path.join(‘foo’, {}, ‘bar’);// 抛出 ‘TypeError: Path must be a string. Received {}’
如果任一路径片段不是一个字符串,则抛出 TypeError。
第三方模块
querystring
安装
$ npm install querystring
引入模块
const querystring = require("querystring");
常用方法
querystring.parse(str,separator,eq,options) 将一个字符串反序列化为一个对象。
参数:str指需要反序列化的字符串;
separator(可省)指用于分割str这个字符串的字符或字符串,默认值为"&";
eq(可省)指用于划分键和值的字符或字符串,默认值为"=";
例子:
querystring.parse("name=whitemu&sex=man&sex=women"
); 返回:
{ name: 'whitemu', sex: [ 'man', 'women' ] }
querystring.stringify(obj,separator,eq,options) 将一个对象序列化成一个字符串,与querystring.parse相对。
参数:obj指需要序列化的对象
separator(可省)用于连接键值对的字符或字符串,默认值为"&";
eq(可省)用于连接键和值的字符或字符串,默认值为"=";
例子:
querystring.stringify({name: 'whitemu', sex: [ 'man', 'women' ] });
返回:```'name=whitemu&sex=man&sex=women'```
querystring.escape(str) 传入的字符串进行编码
例子:
querystring.escape("name=慕白");
返回:
'name%3D%E6%85%95%E7%99%BD'
querystring.unescape(str) 将含有%的字符串进行解码
例子:
querystring.unescape('name%3D%E6%85%95%E7%99%BD');
返回 :`'name=慕白'`
cheerio
- 安装
npm install cheerio
- 引入模块
const cheerio = require('cheerio')
- nodejs特别为服务端定制的,能够快速灵活的对JQuery核心进行实现,工作于DOM模型上,并且解析、操作、呈送都很高效
$=cheerio.load(rawData);//引入要解析的数据
request
安装:
npm/cnpm i/install request --dev-save/-D
开发环境安装
npm/cnpm i/install request --save/-S
生产环境安装在Node.js文件中进行数据请求,不存在跨域。
例子:
const request = require( 'request' )request('https://m.lagou.com/listmore.json',( error,response,body ) => {// 参数说明: error 错误信息 response 响应结果 body 获取的数据console.log( body )})
自定义模块
- 打造步骤:
- 1.创建模块,可以是function、object、str。
- 2.导出模块,module.exports=模块名称/module.exports={名称}
- 3.导入模块 const 名称=require(‘相对路径’)
NodeJs入门常见模块相关推荐
- Nodejs(特点、环境变量、导入导出、浏览器调试node、npm和yarn、常见模块express和http等使用)
目录 Node.js 特点 node环境变量 process.argv process.env.npm_package_main NODE_ENV __dirname __filename requi ...
- Python入门(二十二)- 常见模块2(正则表达式及容器)
二十二 常见模块2(正则表达式及容器) 22.1 正则表达式及re模块 正则表达式(Regular Expression)用于描述一种字符串匹配模式(Pattern),它可以用于检查一个字符串是否含有 ...
- Python入门(二十一)- 常见模块
二十一.常见模块 上一章介绍了Python模块的相关知识,在实际开发中,Python的很多功能都已经有了成熟的第三方实现,一般不需要开发者"重复造轮子",当开发者需要完成某种功能时 ...
- nodejs入门教程之http的get和request简介及应用
nodejs入门教程之http的get和request简介及应用 前言 上一篇文章,我介绍了nodejs的几个常用的模块及简单的案例,今天我们再来重点看一下nodejs的http模块,关于http模块 ...
- 2万人同时访问 nodejs_面向前端工程师的Nodejs入门手册(一)
前言 本文面向的读者已经是了解JavaScript基本使用的前端程序员,但是缺乏服务端的经验,接下来将带你走进在服务端的世界,看看运行在服务端的JavaScript是如何工作的,它与运行在浏览器端的J ...
- 《Nodejs入门》一书中存在的问题分析[转]
要和上一篇转载一起看. <Nodejs入门>一书确实很好的入门工具书,不过其中的一些代码还是和我们的实际开发环境不同.比如该书中的最后一个例子,上传图片到服务器. 其中存在的问题的一部分源 ...
- nodejs linux模块全局,nodejs笔记一--模块,全局process对象;
一.os模块可提供操作系统的一些基本信息,它的一些常用方法如下: var os = require("os"); var result = os.platform(); //查看操 ...
- nodejs入门--commonjs规范
commonjs规范 为什么要学习commonjs规范 因为commonjs规范被nodejs所使用,所以我们在学习nodejs之前,必须要对commonjs有一个清楚的了解 弥补JavaScript ...
- 万字肝完nodejs入门教程,详解入口,建议收藏(更新中)
nodejs入门教程 1.前言 2.入门教程 2.1 命令行运行node.js脚本 2.2 退出node.js程序 2.3 如何使用 Node.js REPL 2.3.1 使用方式 2.3.2 点命令 ...
最新文章
- AI时代人类需要具备的九种软技能,你get了几个?
- java子网划分_子网划分讲解及练习(二)
- 【nginx+lua高性能web应用开发(二):开发评论模块(ssi+mysql)】
- 课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 1、两层神经网络的单样本向量化表示与多样本向量化表示...
- python字符串数字求和_python处理字符串:将字符串中的数字相加求和
- 超级全面的权限系统设计方案
- python学习实例(5)
- Science:这种算法,也许将创造更公平的人工智能
- [No0000CE]检测非空格字符作为密码的密码强度
- (1)GO数据库存储结构详解(从数据库构建角度解析)
- Funcode实现坦克大战(十个需求)
- Android之monkey Test
- R语言实现单变量分析教程
- 联想集团大裁员:公司不是家
- 报表工具的演示录像发布
- 哪些语句在python中非法_下列语句中,在Python中是非法的
- IPad amp; iPhone storage - delete my iPad manuscript data
- 第6章 系统数据文件和信息
- Mysql 计算当前日期是本月第几周:一个自定义算法
- A* 第k短路详解 (详尽)