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原生代码实现静态服务器:
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

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入门常见模块相关推荐

  1. Nodejs(特点、环境变量、导入导出、浏览器调试node、npm和yarn、常见模块express和http等使用)

    目录 Node.js 特点 node环境变量 process.argv process.env.npm_package_main NODE_ENV __dirname __filename requi ...

  2. Python入门(二十二)- 常见模块2(正则表达式及容器)

    二十二 常见模块2(正则表达式及容器) 22.1 正则表达式及re模块 正则表达式(Regular Expression)用于描述一种字符串匹配模式(Pattern),它可以用于检查一个字符串是否含有 ...

  3. Python入门(二十一)- 常见模块

    二十一.常见模块 上一章介绍了Python模块的相关知识,在实际开发中,Python的很多功能都已经有了成熟的第三方实现,一般不需要开发者"重复造轮子",当开发者需要完成某种功能时 ...

  4. nodejs入门教程之http的get和request简介及应用

    nodejs入门教程之http的get和request简介及应用 前言 上一篇文章,我介绍了nodejs的几个常用的模块及简单的案例,今天我们再来重点看一下nodejs的http模块,关于http模块 ...

  5. 2万人同时访问 nodejs_面向前端工程师的Nodejs入门手册(一)

    前言 本文面向的读者已经是了解JavaScript基本使用的前端程序员,但是缺乏服务端的经验,接下来将带你走进在服务端的世界,看看运行在服务端的JavaScript是如何工作的,它与运行在浏览器端的J ...

  6. 《Nodejs入门》一书中存在的问题分析[转]

    要和上一篇转载一起看. <Nodejs入门>一书确实很好的入门工具书,不过其中的一些代码还是和我们的实际开发环境不同.比如该书中的最后一个例子,上传图片到服务器. 其中存在的问题的一部分源 ...

  7. nodejs linux模块全局,nodejs笔记一--模块,全局process对象;

    一.os模块可提供操作系统的一些基本信息,它的一些常用方法如下: var os = require("os"); var result = os.platform(); //查看操 ...

  8. nodejs入门--commonjs规范

    commonjs规范 为什么要学习commonjs规范 因为commonjs规范被nodejs所使用,所以我们在学习nodejs之前,必须要对commonjs有一个清楚的了解 弥补JavaScript ...

  9. 万字肝完nodejs入门教程,详解入口,建议收藏(更新中)

    nodejs入门教程 1.前言 2.入门教程 2.1 命令行运行node.js脚本 2.2 退出node.js程序 2.3 如何使用 Node.js REPL 2.3.1 使用方式 2.3.2 点命令 ...

最新文章

  1. AI时代人类需要具备的九种软技能,你get了几个?
  2. java子网划分_子网划分讲解及练习(二)
  3. 【nginx+lua高性能web应用开发(二):开发评论模块(ssi+mysql)】
  4. 课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 1、两层神经网络的单样本向量化表示与多样本向量化表示...
  5. python字符串数字求和_python处理字符串:将字符串中的数字相加求和
  6. 超级全面的权限系统设计方案
  7. python学习实例(5)
  8. Science:这种算法,也许将创造更公平的人工智能
  9. [No0000CE]检测非空格字符作为密码的密码强度
  10. (1)GO数据库存储结构详解(从数据库构建角度解析)
  11. Funcode实现坦克大战(十个需求)
  12. Android之monkey Test
  13. R语言实现单变量分析教程
  14. 联想集团大裁员:公司不是家
  15. 报表工具的演示录像发布
  16. 哪些语句在python中非法_下列语句中,在Python中是非法的
  17. IPad amp; iPhone storage - delete my iPad manuscript data
  18. 第6章 系统数据文件和信息
  19. Mysql 计算当前日期是本月第几周:一个自定义算法
  20. A* 第k短路详解 (详尽)

热门文章

  1. 【连续介质力学】变形梯度
  2. “不做金融”周鸿祎,半年靠网贷生意赚21亿
  3. 三星资产管理 (香港)推出元宇宙ETF 专注投资未来的风口赛道
  4. 合肥工业大学计算机学硕和专硕,合肥工业大学研究生学硕和专硕有差吗?
  5. matlab 立体图平面化法,matlab绘制三维立体图
  6. 多因子跟庄吃肉 抓涨停指标公式 涨停主图指标 通达信 源码
  7. 智能外呼系统有什么功能?应该如何选择
  8. redux中间件saga和thunk的区别
  9. SCAU【1023】简单计算器
  10. RTD数字温度记录仪