【无标题】

npm(node package manager)是nodejs的 包管理⼯具,⽤于node插件的管理(包括安装、卸载、管理依赖等)。npm是随同nodejs⼀起安装的管理⼯具。

java领域有类似的是maven,linux领域有类似的yum、rpm

因为nodejs做的很⼩巧、⾼内聚。为了丰富功能,通过package的形式扩展。

使⽤npm下载模块的时候,⾃动下载依赖的模块和对应的版本。

1 初始化项⽬

通过初始化项⽬,可以创建⼀个package.json⽂件。

npm init 项⽬名称

在package.json⾥⾯记录了项⽬依赖的模块。当把项⽬给别⼈时,别⼈执⾏npm install即可把依赖项安装,⾮常⽅便。

2 安装模块

需要知道模块名称即可。

npm install xxx

在国外有⼀个nodejs的模块仓库,免费的,谁都可以下载。当我们执⾏install的时候,就去这个仓库寻找特定的模块和指定的版本。下载到本地。

下载到本地项⽬的node_modules⽂件夹中,同时注册到package-lock.json⽂件中。

使⽤参数-g可以安装到全局。

npm root -g //可以查看全局模块库的位置

npm install xxx -g

npm uninstall xxx //卸载模块

3 package.json和package-lock.json

npm5之前,不会⽣成pacakge-lock.json⽂件。

package.json⽂件锁定的是⼤版本,不关⼼⼩版本。

package-lock.json⽂件锁定⼩版本。

4 运⾏任务

使⽤npm可以运⾏package.json中的任务

{

"scripts":{

"task1":"node -v"

}

}

在命令⾏运⾏

npm run task1

npm start和是npm run start的简写形式。

在⼀个npm管理项⽬中,⼀般默认有start的定义,且会经常使⽤,所以就在npm执⾏中简化输⼊⽬的设置了npm run start的简写,类似的还有npm stop、npm test等等。⽽其他的⼀些不太通⽤的命令项则只能通过npm run <;命令项>的形式执⾏。

5 使⽤国内的npm源

使⽤淘宝镜像

npm i cnpm -g --registry=https://registry.npm.taobao.org

6 使⽤npm源的切换⼯具nrm

npm i nrm -g // 安装nrm

nrm ls //查看有哪些源仓库

nrm use taobao //指定使⽤哪个源仓库

四、 Node常⽤模块

1、⽂件系统fs

api中由同步和异步两个版本,建议使⽤异步版本。

const fs = require('fs')

1.1 获取⽂件信息

⽐如可以判断是⽂件还是⽂件夹?还可以知道⽂件⼤⼩、创建者、创建时间、权限等等。

// 访问⽂件信息,在进⾏⽂件夹遍历的时候,需要查看类型和基本信息

fs.stat('module01.js', (err, data)=>{

console.log('类型', data.isFile()?'⽂件':'⽂件夹')

console.log('⽂件信息', data)

})

1.2 读⽂件

读⽂件的时候,回调函数中,⾸先要进⾏错误判断,如果有错误,输出错误原因后返回;

fs.readFile('module01.jsasfd', (err, data)=>{

if(err){

console.error('出错了', '⽂件不存在')

return

}

console.log('⽂件内容', data.toString())

})

1.3 写⽂件

// 每次新创建⼀个⽂件。如果已经存在,则先删除再创建

fs.writeFile('a.txt', '我的名字叫吴超,年龄23',()=>{})

// 追加

// fs.writeFile('a.txt', '我的名字叫吴超,年龄23',{flag:'a'}, ()=>{})

2、Buffer类

在js中,只有字符串类型,没有⼆进制类型。

如果要读写图⽚、⾳视频⽂件的时候,就需要使⽤Buffer类。

学习api的时候,把Buffer想象成String类。

//⽅法1:创建指定⼤⼩的字节空间,指定填充的值,默认是0

let bf1 = Buffer.alloc(10, 1)

console.log('bf1= ', bf1)

// ⽅法2:根据字节数组创建

let bf2 = Buffer.from([1,2,3,4,5])

console.log('bf2=', bf2)

// ⽅法3:把字符串转为Buffer

let bf3 = Buffer.from('hello world我的祖国')

console.log('bf3 = ', bf3)

// 输出,指定输出格式

console.log('bf1 = ', bf1.toString('hex'))

// 输出字符串的时候,可以指定编码格式

console.log('bf3 = ', bf3.toString('utf-8'))

3、Stream类

Stream类是个抽象接⼝,有四种类型:Readable、Writable、Duplex、Transform类型。所有的Stream对象都是EventEmitter的实例。

3.1 读流

const readStream = fs.createReadStream('module01.js')

// 注册事件

readStream.on('data', (chunk)=>{

console.log('有数据了', chunk.toString())

})

// 注册事件

readStream.on('end', ()=>{

console.log('读取结束')

})

// 注册事件

readStream.on('error', (error)=>{

console.error('出错了', error)

})

3.2 写流

const fs = require('fs')

const writeStream = fs.createWriteStream('b.txt')

writeStream.on('finish', ()=>console.log('写完了'))

writeStream.write('hello world我的祖国')

// 调⽤end⽅法时,触发finish事件

writeStream.end('完成写⼊数据');

3.3 压缩解压缩

使⽤第三⽅库compressing,⽀持windows和linux。

先安装库 npm install compressing

const compressing = require('compressing')

// 压缩⽂件夹

// compressing.zip.compressDir('F:/DRMsoft', "DRMsoft.zip")

// compressing.zip.compressFile()

// 解压缩

compressing.zip.uncompress("DRMsoft.zip", __dirname)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值