node-02-模块-初识

简介: node-02-模块-初识

1.模块化


1.node有模块化的概念

2. nodenpm(node package manager)包管理器.支持模块化,对模块进行管理

  1. node把每一类功能都封装成了一个个模块,如果需要享用某个功能,引入 对应的模块就可以实现某一类效果;
    例如:
    http模块后台服务器的搭建
    fs模块  对文件的操作等

2.http模块


1.主要作用创建服务器


// 1.  引入`http`模块
const http = require('http')
// 2. 搭建服务器 事件驱动的 是个回调函数
let server = http.createServer(function (req, res) {
  // 设置响应的编码格式
  res.writeHead(200, {
    "content-type": "text/html;charset=utf-8"
  });
  res.end('响应结束');
})
// 3. 设置监听端口 
server.listen(6789)



3.运行查看效果


1.1vscodecoder runner插件

1.2.在刚才的js文件右键 Run Code

1.3. 地址栏输入地址,刚才上面监听的端口保持一致 http://localhost:6789/

2.任意的终端形式, 进入在当前文件的根目录node 文件名 回车

2.1地址栏输入地址,刚才上面监听的端口保持一致 http://localhost:6789/


4.fs readFile


专门处理文件的模块

路径不用__dirname 也可以,默认是根目录,自己拼接路径也行


const fs = require('fs');
// 路径 编码 回调函数 node里面基本都是回调函数
fs.readFile(__dirname +'/book.txt', "utf-8", function (err, data) {
    if (err) {
        console.log("err", err);
    } else {
        console.log(data)
    }
})

boot.txt 和当前的文件同级 里面内容随便写


5.nodemon


运行查看效果nodemon文件名 回车

npm install -g nodemon

如果上面安装不成功 进行下面的操作,在重复上边的

npm config set registry https://registry.npm.taobao.org

安装淘宝镜像

npm config get registry

查看是否成功 返回 https://registry.npm.taobao.org/ 代表成功

1.管理员身份打开Powershell

2.输入set-ExecutionPolicy RemoteSigned

3.选Y或A

ctrl+shif+enter 回车管理员


6.fs writeFile



// 第一个参数是 路径
// 第二个参数是 写入的数据
// 第三个参数是 配置信息
// 第四个参数是   回调
// flag:"a" 追加写入,每次在之前内容的基础上,写入新的内容;
// flag:"w" 覆盖写入,每次写入新的内容
var str = "帘卷西风,人比黄花瘦"
fs.writeFile(__dirname+"/book.txt",str,{
    encoding:"utf8",
    flag:"a"
},function(err){
    if(err){
         console.log("写入失败:",err);
         return
    }
    console.log("写入成功");
})



7. 拷贝, 备份



fs.readFile(__dirname+"/book.txt","utf-8",function(err,data){
    if(err){
        console.log("读取失败",err);
        return;
    }
    // 如果没有这个文件 会自己创建这个文件
    fs.writeFile(__dirname+"/copy-2.txt",data,{
        flag:"w",
        encoding:"utf-8"
    },function(err){
        if(err){
            // 每次都记录 错误信息   方便以后查看
            return console.log("拷贝失败:",err);
        }
        console.log("拷贝成功");
    })
})



8.fs读写流


stream 流 如果要处理一些大内存的文件,那么使用writeFile和readFile,就会出现内存爆仓;

处理大内存的文件读写时,使用stream流处理;原理:将一个文件分成一个个的小文件来处理,每次读取64KB;


const fs = require('fs');
// 创建一个读入流
let readF = fs.createReadStream(__dirname+"/2.jpeg")
// 创建一个写入流 存入位置  新建一个文件
let writeF = fs.createWriteStream("./new_3.jpeg")
//用来记录我们读入的次数
let count = 0;
// on(data,fn)
// 监听数据的 读取
readF.on("data",function(chunk){
    count ++
    console.log("每次读取的数据",chunk);//每次读取的64kb
    console.log("次数",count);
    // 写入
    writeF.write(chunk,function(err){
        if(err){
            return console.log("写入错误");
        }
        console.log("写入成功");
    })
})
readF.on("end",function(){
    console.log("读取完毕");
})



9.stream 的封装



//创建一个可读流
let readF2 = fs.createReadStream("./girl.jpg");
let writeF2 = fs.createWriteStream("./imgs/boy.jpg");
//写入文件
readF2.pipe(writeF2);
//或者简写
fs.createReadStream("./girl.jpg").pipe(fs.createWriteStream("./imgs/jinlong.jpg"));



10.目录


创建目录


//创建目录
// 参数1:创建目录路径
// 参数2:权限,由四个数字组成
// 0XXX   后三位分别代表 用户权限 组权限  所有者权限
// 1 --- 执行
// 2 --- 写
// 4 --- 读
// 1 + 2 + 4 = 7  代表读写
fs.mkdir("./imgs",0777,function (err) {
    if (err){
        return console.error(err);
    }
    console.log("创建目录成功");
});


读取目录


fs.readdir("./imgs",function (err,files) {
    if (err){
        return console.error(err);
    }
    console.log(files);//返回的数组,存储的是该目录下的文件名
})


查看目录下的文件或者目录详情


fs.stat("./imgs",function (err,stat) {
    if (err){
        return console.error(err);
    }
    console.log(stat);
})
fs.stat("./2.jpg",function (err,stat) {
    if (err){
        return console.error(err);
    }
    console.log(stat);
})


查看目录或者文件是否存在


fs.exists("./imgs/3.jpg",function (bol) {
    console.log(bol);
})


通过相对路径获取绝对路径


fs.realpath("./imgs/3.jpg",function (err,path) {
    if (err){
        return console.error(err);
    }
    console.log(path);
})


修改文件名

参数1:之前的名字

参数2:要修改的名字


fs.rename("./2.jpg","./girl.jpg",function (err) {
    if (err){
        return console.error(err);
    }
    console.log("修改文件成功");
})



11. events模块


事件模块


*/
// 1. 引入
// Emit 触发 发生
const eventEmittor = require('events');
// 2. 创建事件监听对象
let event = new eventEmittor();
/*
  监听事件
  on(事件名,回调)
*/
event.on("studyNode", function () {
    console.log("旅行事件被触发")
});
// 触发事件
setTimeout(() => {
    event.emit("studyNode")
}, 5000);




相关文章
|
2月前
|
缓存 JavaScript 安全
nodejs里面的http模块介绍和使用
综上所述,Node.js的http模块是构建Web服务的基础,其灵活性和强大功能,结合Node.js异步非阻塞的特点,为现代Web应用开发提供了坚实的基础。
116 62
|
3月前
|
JavaScript 前端开发
Vue、ElementUI配合Node、multiparty模块实现图片上传并反显_小demo
如何使用Vue和Element UI配合Node.js及multiparty模块实现图片上传并反显的功能,包括前端的Element UI组件配置和后端的Node.js服务端代码实现。
52 1
Vue、ElementUI配合Node、multiparty模块实现图片上传并反显_小demo
|
2月前
|
缓存 JSON JavaScript
Node.js模块系统
10月更文挑战第4天
43 2
|
2月前
|
JavaScript 应用服务中间件 Apache
Node.js Web 模块
10月更文挑战第7天
33 0
|
2月前
|
JavaScript 网络协议
Node.js 工具模块
10月更文挑战第7天
21 0
|
2月前
|
JavaScript 前端开发 应用服务中间件
Node.js Web 模块
Node.js Web 模块
|
4月前
|
存储 缓存 JSON
Node.js有哪些模块系统
【8月更文挑战第12天】Node.js有哪些模块系统
48 3
|
4月前
[译] Node 模块中的 peer dependencies 是什么?
[译] Node 模块中的 peer dependencies 是什么?
|
5月前
|
存储 JavaScript 安全
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage与node:async_hooks模块的问题如何解决
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage与node:async_hooks模块的问题如何解决
|
4月前
|
存储 JavaScript 前端开发
nodejs os模块
nodejs os模块
49 0