node中的常用核心模块及方法



常用的5个核心模块
http    url    querystring     fs       events

1.    http
http.createServer 创建服务器, 回调函数中有2个参数
        1、req:request()  请求,只能在服务端看到
        2、res:response()  给客户端的回复,在客户端看到

        req参数:
            req.url  获取请求的地址
            eg:http://www.baidu.com/api/list?a=23&b=f,则req.url为/api/list

            req.method 请求的方式get/post

        res参数:
            res.end  结束回复 ,向客户端发送最后一次信息(必须的,否则服务器就会一直运行)

            res.statusCode  设置状态码
            该属性控制响应头刷新时将被发送到客户端的状态码。

            res.write()  回复内容
            res.writeHead() 设置状态码和返回文件的类型
            res.setHeader()  设置返回文件的类型

http.get(url,(res)=>{})//请求数据
参1:请求的地址,不能以https开头
参2:回调函数,参数为responose
res.statusCode获取服务器响应的状态码,200代表成功
res.on("data",(data)=>{    })
res.on("end",()=>{})
创建服务器
//引入核心模块http
const http =  require(‘http‘);
//创建服务器
http.createServer((req,res)=>{

    //设置请求成功的状态码,类型,charset=utf8解决乱码问题
    res.writeHead(200,{"content-type":"text/plain;charset=utf8"});

    //向客户端发送最后一次信息(必须的,否则服务器就会一直运行)
    res.end("还好");

}).listen("3000")//设置端口号

最简单的服务器,在终端运行js文件(node 文件名),在浏览器中输入localhost 端口号,即可
请求数据
const http = require("http");
const cheerio = require("cheerio");
const fs = require("fs");

//http.get()不能请求以https://开头的路径
http.get("http://www.mobiletrain.org/?pinzhuanbdtg=biaoti", (res) => {
    //判断是否请求成功(res.statusCode获取响应的状态码,200代表成功)
    if (res.statusCode == 200) {
        let str = "";
        //当获取到数据的时候会对数据进行一块一块的接收 res.on()为绑定事件的方法 data是事件,回调函数中的data为接收到的每块的数据
        res.on("data", (data) => {
            str += data;
        })

        //end为事件,res 是个writable的流,当writable流接收到 null 的时候会触发 end 事件即给客户端的东西写完了,可以发送给客户端了
        res.on("end", () => {
            //将字符串加载到$符号中这样就可以用来操作元素
            let $ = cheerio.load(str);
            let list = $(".ul1").children();
            let data = "";
            for (var i = 0; i < list.length; i++) {
                data += list.eq(i).find("span").text() + "\n";
            }
            fs.writeFile("./data.txt", data, () => {})
        })
    }
})

2    url

u
rl.parse()
    将一个url转换成一个urlObject
    参1:url
    参数2:是一个布尔值  如果填true的话,会将query字符串解析成query对象
    地址栏中?后面的部分是query的部分

url.format() 将一个url Objet转换一个url

url.resolve()  生成一个相对路径或者绝对路径

console.log(url.resolve("/a/b/c","/d"))//绝对路径  将所有的都替替换,结果为:/d
console.log(url.resolve("/a/b/c","d"))//生成相对路径   只将最后一个替换,结果为:/a/b/d
3    querystring
querystring.parse() 将字符串转换为对象
参数1 字符串
参数2 分割符
参数3 赋值符

querystring.stringify() 将对象转换成字符串(是转义后的字符串,需要进行反转义)
参数1 对象
参数2 分割符
参数3 赋值符

querystring.escape()转义

name   =   a=b=c
key         val

name=a=b   =   c
key             val

querystring.unescape() 反转义

eg:
const querystring = require("querystring");
let str = "name+李想*age+18*sex+美女";
let obj = querystring.parse(str,"*","+");
//console.log(querystring.stringify(obj,"%","$"))

let str1 = "a=b=c";
let val = querystring.escape(str1);

let key = "name="+val;
console.log(querystring.unescape(val))
4    fs {读取到的文件默认是buffer类型)
const fs = require("fs");

stat:检查文件的类型
    fs.stat("./002url.js",(err,starts)=>{
        starts.isFile()//判断当前文件是否是一个文件
        starts.isDirectory():判断当前文件是不是一个目录

    })

-----------------------------
    eg:
    fs.stat("./002url.js",(err,starts)=>{
        console.log(starts.isFile())
        console.log(starts.isDirectory())
    })

------------------------------------------------
fs.mkdir();创建文件夹
    参数1:文件路径
    参数2:回调
-----------------
    eg:
    fs.mkdir("./abc",(err)=>{})

    fs.mkdirSync() 同步
--------------------------------------------------------

fs.writeFile(); 创建并写入文件
    参数1:文件路径
    参数2:写入文件的内容
    参数3 回调()

    fs.writeFile("./abc/data.txt","1234",()=>{})
----------------------------------
fs.readFile()
    参数1:文件路径
    参数2:回调  有两个参数,err  data

    fs.readFile("./abc/data.txt",(err,data)=>{
        console.log(data+"");
    })

    Sync:同步

    //console.log("1111")
    //读取到的文件默认是buffer类型
------------------------------------------------
fs.rename()  重命名
    fs.rename("./data.txt","./page.txt",(err)=>{})

---------------------------------------------------------
fs.readdir():列出文件的目录
    参数1:文件路径
    参数2:回调函数  err  list

    fs.readdir("../demo",(err,list)=>{
    console.log(list)
})
5    events
//引入了核心模块
const EventEmitter = require("events");

//继承了EventEmitter当前类的属性和方法
class MyEmitter extends EventEmitter{};
//实例化
const myEmitter = new MyEmitter();

    on:绑定事件
        参数1:事件名称
        参数2:回调函数(事件对应的函数)

    emit:触发事件及事件对应的方法
        参数1:事件名称(要和on绑定的事件一致)
        参数2:需要传递的参数

    once:绑定事件,但仅能触发一次方法

    removeListener() 解除绑定
        参数1:事件名称
        参数2:解绑的函数

    removeAllListeners()解绑全部
        参数1:事件名称
 ---------------------------------------------------------
eg:
//引入了核心模块
const EventEmitter = require("events");

//继承了EventEmitter当前类的属性和方法
class MyEmitter extends EventEmitter{};
//实例化
const myEmitter = new MyEmitter();

function fn(val){
    console.log("李"+val);
}

function fn1(val){
    console.log("朱"+val);
}
function fn2(val){
    console.log("程"+val);
}

myEmitter.on("change",fn);
myEmitter.on("change",fn1);

//把当前事件放在队列的最前面优先执行
myEmitter.prependListener("change", fn2);


原文地址:https://www.cnblogs.com/SRH151219/p/10199001.html

时间: 2024-10-02 09:56:20

node中的常用核心模块及方法的相关文章

Node中的包和模块

一.模块和包 概念:模块(Module)和包(Package)是Node.js最重要的支柱.开发一个具有一定规模的程序不可能只用一个文件,通常需要把各个功能拆分.分装.然后组合起来.模块正式为了实现这种方式而诞生,在浏览器JavaScript中,脚本模块的拆分和组合通常使用HTML的script标签来实现,Node.js提供了require函数来调用其他模块,而且模块都是基于文件,机制非常简单,模块和包的区别是透明的,因此经常不作区分. 模块 1.什么是模块 模块和文件是一一对应的.一个Node

node.js的fs核心模块读写文件操作 -----由浅入深

node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFile方法- 文件大分流读取,stream - 引入fs模块 - let fs=require('fs') 同步读取文件 -fs.readFileSync('路径',utf8); let result=fs.readFileSync('./1.txt','utf8'); 异步读取文件,用参数err捕获错

Python中xlrd和xlwt模块使用方法

本文主要介绍python中如何使用xlrd.xlwt模块操作excel表格,其中xlrd是读excel,xlwt是写excel的库. 安装xlrd和xlwt模块 默认情况下python是没有xlrd和xlwt模块,需要自行安装.模块安装建议使用pip自动安装.安装方法参考<Python自动安装第三方模块> xlrd模块使用 测试使用excel文档名称为Demo.xlsx,内容如下: 代码如下: # -*- coding: utf-8 -*- import xlrd import xlwt fr

通过写一个Demo展示C#中多种常用的集合排序方法

不多说,程序很简单,就是将集合中的数据进行排序,但使用到的知识点还是比较多的,大牛勿喷,谨献给初学者!直接上程序吧! namespace Demo { /// <summary> /// Demo:使用不同排序方法对元素进行排序 /// </summary> class Program { private static void Main(string[] args) { ArrayList arrayList = Product.GetArrayList(); List<P

Python中os和shutil模块实用方法集锦

# os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\'os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix'os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径os.getenv() 获取一个环境变量,如果没有返回noneos.putenv(key, value) 设置一个环境变量值os.listdir(path) 返回指定目录下的所有文件和目录名o

db2中的常用命令及使用方法

一.高(重要度) 1.启动一个db 2实例使用:  net start instanceName 2.停止一个db 2实例使用:  net stop instanceName 3.启动配置助手:  db2=>!db2ca 4.手工配置连接:  db2=>catalog node/db 5.删除视图:  db2=>drop view view_name 6.创建表:  db2=>create table tablename 7.列出活动的数据库和连接数:  db2=>list

Node中http模块详解(服务端篇)

Node中的Http Node中提供了http模块,其中封装了高效的http服务器和http客户端 http.server是一个基于事件的HTTP服务器,内部是由c++实现的,接口由JavaScript封装 http.request是一个HTTP客户端工具.用户向服务器发送数据. 下面就来分别得介绍一下http的服务端和客户端 一.HTTP服务器 http.Server实现的,它提供了一套封装级别很低的API,仅仅是流控制和简单的解析,所有的高层功能都需要通过它的接口,就像在前面的文章<Node

node中的require是如何加载模块的

在使用node引入模块的时候,我发现node自带的模块或是npm安装的第三方模块,只需要require个名字就可以加载到了,像是 require('fs') require('http') require('express') 但是自己写的模块就必须要加上路径,比如 require('./a') require('a')//这样就不行, 为什么第三方模块就不需要加路径呢?express的路径明明是node_modules/express/index.js 那是不是我把自己写的模块放到node_m

简单剖析Node中的事件监听机制(一)

使用js的class类简单的实现一个事件监听机制,不同于浏览器中的时间绑定与监听,类似于node中的时间监听,并且会在接下来的文章中去根据自己的理解去写一下Event模块中的原理. Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量又高效.并且Node中的大量模块都使用了Event机制,因此可以说是整个Node中最重要的模块之一. 实例: let event = new eventEmitter(); event.on('someType',function(){ }); even