续上一篇node入门的补充.
包和npm
1.包概念
在Nodejs中包由由包结构和包描述文件两个部分组成.
包结构:用于组织包中的各种文件,例如:源代码文件、资源文件
包描述文件:描述包的相关信息,例如:package.json、bin、lib等文件
2.npm
npm是随着Nodejs一起安装的一个包管理工具,它具有以下用途:
-
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
-
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
-
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
3.npm常见命令
1.npm init 初始化
(会在根目录下生成一个package.json的文件)
npm init -y (初始化走默认值,不需要在设置)
难点:初始化的文件的父级文件夹名字不要取中文,要用英文
2. npm install 安装
安装命令执行之后,会在项目的根目录下产生有一个node_modules的目录(以后所有下载的包都会安装到该目录)
简写:npm i
安装分为本地安装和全局安装:
本地安装:适用于绝大多数项目开发包
全局安装:一般用于安装命令类型包
本地安装:将包安装到项目中
安装到项目/生产依赖:
npm install 包名 新版nodejs的写法
npm install 包名 --save 旧版写法
简化为:
npm install 包名 -S npm i 包名 -S
安装到开发依赖
npm install 包名 --save-dev
简化为:
npm install 包名 -D npm i 包名 -D
注意:修饰符可以在前、在后
npm i 包名 -D
npm i -D 包名
全局安装:将包安装到计算机上(默认C盘)
npm i 包名 -g
区别:
生产依赖:包不仅在开发阶段要使用,在生产阶段也要使用
开发依赖:只在开发阶段使用
安装指定的版本:
一般安装包时,都是默认下载最新的包。
但是可以用 npm i 包名@版本号 安装你需要的版本
如果不知道版本号,也可以用 npm view 包名 versions 来查询npm服务器存在的包版本信息
这里也有卸载的npm命令:
npm uninstal 包名
npm rm 包名
events模块
events模块是node.js内置的模块
const e=require("node:events")
const emitter= e.EventEmitter;
常用方法:
-
on() 注册
-
off() 解绑
-
once() 一次
-
emit() 触发事件
-
addListener()
-
removeListener() 删除
-
removeAllListener(0) 删除所有
文件系统(fs)
Nodejs内置了用于操作文件的模块:fs
常见的操作有文件操作、文件夹操作,操作的方案有同步和异步
文件操作
常见的方法(异步):
-
readFile() 读取
-
writeFile() 写入
-
rename() 重命名
-
unlink() 删除
const fs=require('fs');
//注意:若文件不存在,则会先创建文件,再写入(不会创建文件夹)
fs.writeFile("./info/info.txt","我好",err=>{
if(err){
console.log('写入失败:',err);
return;
}
console.log("写入成功");
})
// fs.writeFile("./data.txt","我好",{flag:"a"},err=>{
// if(err){
// console.log('写入失败:',err);
// return;
// }
// console.log("写入成功");
// })
// fs.writeFileSync("./data.txt","hello jack",{flag:"a"})
//剪切
// fs.rename("./msg.txt","../data.txt",err=>{
// if(err){
// console.log('写入失败:',err);
// return
// }
// console.log('成功');
// })
// fs.renameSync("../data.txt","./data.txt")
// console.log('成功');
//删除文件
// fs.unlink('./dat.txt',err=>{
// if(err){
// console.log('失败',err);
// return
// }
// console.log('成功');
// })
// fs.unlinkSync("./dta.txt")
//读取文件
// fs.readFile("./data.txt",(err,data)=>{
// if(err){
// console.log('读取失败:',err);
// return;
// }
// // console.log(data);//Buffer
// console.log(data.toString());
// })
// let buf=fs.readFileSync("./1.html")
// let buf=fs.readFileSync("./data/1.wmv")
// console.log("读取成功");
// console.log(buf);
// console.log(buf.toString());//非文本类型文件,不可以toString()
文件夹操作
常见方法:
-
mkdir() 创建
-
rmdir() 删除空目录
-
readdir() 读取目录
-
stat() 读取文件的信息
-
stats对象
-
isDirectory() 是否为文件夹
-
isFile() 是否为文件
-
-
const fs=require("fs");
//创建文件夹
// fs.mkdir("./mock",err=>{
// if(!err){
// console.log('成功');
// return
// }
// console.log('失败:',err);
// })
// fs.mkdirSync("./route")
//读取目录
// fs.readdir("./data",(err,files)=>{
// if(err){
// console.log("失败;",err);
// return
// }
// console.log(files);
// })
// let files=fs.readdirSync("./data")
// console.log(files);
//删除
// //删除空目录
// fs.rmdir("./data",err=>{
// if(err){
// console.log('失败',err);
// return
// }
// console.log('成功');
// })