首页>>前端>>Node->Nodejs几个常用的模块

Nodejs几个常用的模块

时间:2023-11-29 本站 点击:1

1.nodejs模块化介绍

1.nodejs是一个渐进式框架, 我们后面要学习的vue框架也是渐进式框架

2.什么是渐进式框架呢 : 一个功能对应一个模块(js文件), 需要用的时候导入即可

非渐进式框架 : 套餐, 一次性导入所有的功能。 无论是的项目用还是不用(浪费资源)

渐进式框架 : 自助餐。 吃什么用什么,不浪费。(节省资源)

简单来说:

2.fs模块

2.1-fs文件模块(读写文件)

2.1.1-readFile读取文

//1.导入文件模块const fs = require('fs')//2.读取文件/** * 第一个参数:文件路径 * 第二个参数:编码格式 (可选参数,默认为buffer二进制) * 第三个参数:读取回调操作(异步操作)    * err:如果读取成功,err为null,  否则读取失败(一般文件路径错误或者找不到文件)    * data:读取到的数据 */fs.readFile('./data/aaa.txt','utf-8',(err,data)=>{    if(err){        console.log(err)        //抛出异常,throw的作用就是让node程序终止运行,方便调试        throw err    }else{        console.log(data)    }})console.log('11111')//3.同步读取文件(了解即可,几乎不用,一般在异步的api后面加上Sync就是同步)let data = fs.readFileSync('./data/aaa.txt','utf-8')console.log(data)console.log('2222')

2.1.2-writeFile写入文件

//1.导入文件模块const fs = require('fs')//2.写文件/** * 第一个参数:文件路径 * 第二个参数:要写入的数据 * 第三个参数:文件编码 默认utf-8 * 第四个参数: 异步回调函数    * err:  如果成功,err为null.否则读取失败 */fs.writeFile('./data/bbb.txt','黑马程序员','utf-8',(err)=>{    if(err){        throw err    }else{        console.log('写入成功')    }})

2.2 -同步与异步区别

1.同步会阻塞线程,异步不会

2.同步有序执行,异步无序执行

3.同步没有回调函数,异步有回调函数

//1.导入模块const fs = require('fs')/*js从上往下解析代码流程    1.判断是同步还是异步    2.如果是同步,则立即执行    3.如果是异步,则不执行,而是放入事件循环中(Event Loop)    4.所有代码解析完毕之后,开始执行事件循环中的异步代码*//*异步操作1.不会阻塞线程(性能高)2.无序执行3.有回调函数 *///异步操作// console.log('55555555');// fs.readFile('./data/aaa.txt','utf8',(err,data)=>{//     console.log('1111111')//     if(err){//         throw err//     }else{//         // console.log(data)//     }// })// console.log('666666');// fs.readFile('./data/aaa.txt','utf8',(err,data)=>{//     console.log('222222')//     if(err){//         throw err//     }else{//         // console.log(data)//     }// })// console.log('777777');// fs.readFile('./data/aaa.txt','utf8',(err,data)=>{//     console.log('333333')//     if(err){//         throw err//     }else{//         // console.log(data)//     }// })// console.log('8888888')// fs.readFile('./data/aaa.txt','utf8',(err,data)=>{//     console.log('4444444')//     if(err){//         throw err;//     }else{//         // console.log(data)//     }// })//同步操作/* 1.会阻塞线程(性能低)    2.有序执行    3.没有回调函数 */let data1 = fs.readFileSync('./data/aaa.txt','utf8');console.log(data1)console.log('11111')let data2 = fs.readFileSync('./data/aaa.txt','utf8');console.log('22222')console.log(data2)let data3 = fs.readFileSync('./data/aaa.txt','utf8');console.log('33333')console.log(data3)let data4 = fs.readFileSync('./data/aaa.txt','utf8');console.log('44444')console.log(data4)

2.3-try-catch捕捉异常

//1.导入模块const fs = require('fs')/* try-catch作用:捕捉代码异常,且不影响后面代码执行 try{    需要执行的代码}catch(err){    如果try中的代码执行错误了,就会执行catch代码})*/try {    let data1 = fs.readFileSync('./data/aaa.txt', 'utf8')    console.log(data1)} catch (err) {    console.log(err)}console.log('11111')

fa模块的一些方法 API                                         | 作用        | | ------------------------------------------- | --------- | | fs.access(path, callback)                   | 判断路径是否存在  | | fs.appendFile(file, data, callback)         | 向文件中追加内容  | | fs.copyFile(src, callback)                  | 复制文件      | | fs.mkdir(path, callback)                    | 创建目录      | | fs.readDir(path, callback)                  | 读取目录列表    | | fs.rename(oldPath, newPath, callback)       | 重命名文件/目录  | | fs.rmdir(path, callback)                    | 删除目录      | | fs.stat(path, callback)                     | 获取文件/目录信息 | | fs.unlink(path, callback)                   | 删除文件      | | fs.watch(filename, options)            | 监视文件/目录   | | fs.watchFile(filename[, options], listener) | 监视文件      | | fs.existsSync(absolutePath)                 | 判断路径是否存在  |

3.path路径模块

3.1-nodejs中的相对路径

node中的相对路径: ./ 不是相对于当前文件所在路径,而是相对于执行node命名的文件夹路径

在服务端开发中,一般不要使用相对路径,而使用绝对路径

解决方案:在nodejs中,每一个js文件都有两个全局属性,它可以帮助我们获取到文件的绝对路径

__filename:当前js文件所在目录的绝对路径

__dirmame:当前js文件的绝对路径

//1.导入文件模块const fs = require('fs')//2.读取文件/*a.注意点: node中的相对路径: ./  不是相对于当前文件所在路径,而是相对于执行node命名的文件夹路径在服务端开发中,一般不要使用相对路径,而使用绝对路径  b.解决方案:在nodejs中,每一个js文件都有两个全局属性,它可以帮助我们获取到文件的绝对路径    __filename:当前js文件所在目录的绝对路径    __filema,e:当前js文件的绝对路径*/console.log(__dirname)console.log(__filename)/*2.如果想要获取当前文件夹下其他文件绝对路径,可以使用 __dirname属性来拼接*/const path = __dirname + '/aaa.txt'console.log(path)fs.readFile(path,'utf-8',(err,data)=>{    if(err){        console.log(err);        //抛出异常,throw的作用就是让node程序终止运行,方便调试        throw err    }else{        console.log(data)    }})

3.2-path路径模块拼接路径

//1.导入路径模块const path = require('path')//2.合并路径/*使用path模块拼接文件路径与  使用 '+'连接符拼接的好处    1.会自动帮我们正确添加路径分隔符  '/',我们无需手动添加    2.当我们路径格式拼接错误的时候,能自动帮我们转换正确的格式*/// path.join(路径1,路径2,路径3,……………………)let filePath = path.join(__dirname,'aaa.txt')console.log(filePath)console.log(__dirname + '/aaa.txt')let path1 = path.join(__dirname,'bbb','ccc.txt')console.log(path1);//获取上级目录   path.dirname(文件路径)let path2 = path.dirname(path1)console.log(path2)let path3 = path.dirname(path2)console.log(path3)let path4 = path.dirname(path3)console.log(path4)

path模块一些方法 方法                         | 作用                    | | -------------------------- | --------------------- | | path.basename(path[, ext]) | 获取返回 path 的最后一部分(文件名) | | path.dirname(path)         | 返回目录名                 | | path.extname(path)         | 返回路径中文件的扩展名(包含.)      | | path.format(pathObject)    | 将一个对象格式化为一个路径字符串      | | path.join([...paths])      | 拼接路径                  | | path.parse(path)           | 把路径字符串解析成对象的格式        | | path.resolve([...paths])   | 基于当前工作目录拼接路径

04-http模块(搭建服务器)

4.1-http模块搭建服务器

//1.导入模块(安装软件)const http = require('http')//2.创建服务器(运行软件)/* 参数:回调函数    req: request 客户端请求对象    res:response 服务端响应对象 */let server = http.createServer((req,res)=>{    //获取客户端请求路径    console.log(req.url)})//3.启动服务器(开启软件的服务器功能)/*第一个参数:端口号  一般1000-60000之间第二个参数:ip地址  默认不写 就是本地ip 第三个参数:成功回调 */server.listen(3000,()=>{    console.log('服务器开启成功')})

4.2-响应客户端请求

/* WEB开发本质    请求    处理    响应*///1.导入模块const http = require('http')//2.创建服务器/* req:请求对象 负责处理客户端请求res:响应对象 负责响应客户端请求*/let server =  http.createServer((req,res)=>{    //客户端每发送一个请求,这个函数都会执行一次(执行多次)    console.log(req.url)    //响应客户端数据    res.end('hello world')})//3.启动服务器server.listen(3000,()=>{    console.log('服务器开启成功')})

4.3-根据不同请求响应不同数据

//1.导入模块const http = require('http');//2.创建服务器let server =  http.createServer((req,res)=>{    console.log(req.url)    //需求: 如果请求路径是/ ,响应  index   如果请求路径是/login,响应 登录页    if(req.url == '/'){        res.end('index.html')    }else if(req.url == '/login'){        //设置响应头解决中文乱码问题: 响应头作用:告诉浏览器我返回给你的数据是什么类型        /*第一个参数:状态码        第二个:响应头         */        res.writeHead(200,{            'Content-Type': 'text/plain;charset=utf-8'// text/plain 普通文本        })        res.end('登录页')    }else{        res.end('404 not found')    }})//3.开启服务器server.listen(3000,()=>{    console.log('服务器开启成功')})

4.4-http响应客户端HTML文件

//1.导入模块const http = require('http')//文件模块const fs = require('fs')//路径模块const path = require('path')//2.创建服务器let server =  http.createServer((req,res)=>{    //需求:  如果请求路径是 / 返回首页html  如果是login返回登录html    //1.获取客户端请求路径    let url = req.url    //2.处理请求    //一般如果响应的是文件,不需要设置响应头,直接返回二进制数据。浏览器会自动识别数据类型并且加载    if(url == '/'){        //响应首页        fs.readFile(path.join(__dirname,'index.html'),(err,data)=>{            if(err){                throw err            }else{                console.log(data)                //3,将读取好的文件数据响应给客户端                res.end(data)            }        })    }else if(url == '/login'){        //响应登录页        fs.readFile(path.join(__dirname,'login.html'),(err,data)=>{            if(err){                throw err            }else{                //3,将读取好的文件数据响应给客户端                res.end(data)            }        })    }else{        res.end('404 not found')    }})//3.开启服务器server.listen(3000,()=>{    console.log('服务器开启成功')})
原文:https://juejin.cn/post/7099240786885083150


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Node/937.html