package包
包结构
包其实就是一个压缩文件,解压之后还原为目录,符合规范的目录,应该包含如下文件:
package.json
:描述文件
bin
:可执行的二进制文件
lib
:Js代码
doc
:文档
test
:测试文件
包描述文件package.json
1.包描述文件用于表达非代码的相关信息,它是一个json格式的文件-package.json,位于包的根目录下,是包的主要组成部分
2.包中的主要字段
name description version keywords maintainer contributors bugs licenses repositories dependencies homepage os cpu engine builtin directoies implements scripts author bin main devDependencies
NPM(Node Package Manage)
介绍说明
1.CommonJs包规范是理论,NPM是一种实践
2.对于Node而言,NPM帮助起完成了第三方模块的发布、安装和以来等,NPM就是管理下载一些东西的。
NPM的命令
1.npm -v:
版本
2.npm search
包名:搜索模块包
3.npm install
包名:安装包名
4.npm install 包名 -g
:全局模式安装包(全局安装的包一般都是工具,计算机的工具,比如编辑CSS,JS文件)
初始化
命令:npm init
,后面直接回车即可,然后就会发现本地多了个package.json
文件
安装包
命令:npm install math
,回车即可下载,下载完了之后多了个node_modules
文件夹
在index.js中引入模块
直接在index.js
中写如下代码:
1. var math = require("math"); 2. console.log(math.add(1,1));
在DOS
直接执行:
1. node index.js 2. 执行结果为:2(1+1的和)
删除包名
命令:npm remove 包名
package-lock.json文件
通过该文件绑定依赖
安装并保存依赖
命令:
npm install math --save
执行完之后在package.json
中会多了一个键dependencies
,依赖
CNPM
中国的npm,阿里镜像,需要安装阿里镜像,命令如下:
npm install -g cnpm --registry=https://registry.npm.taobao.org
####总结
- 通过NPM下载的包都放到node_modules文件夹中
- 通过NPM下载的包直接通过包名引入
- 如果删除了下载的包,执行引入代码时,Node会从文件上一级去寻找,一直找到相应的包,否则报错
Buffer缓冲区
1.从结构上看Buffer非常像一个数组,他的元素为16进制2位数,传统的数组并不能保存二进制数据,而Buffer就是专门保存二进制的数据
2.实际上一个元素就表示内存中的一个字节
3.实际上Buffer中的内存不是通过JavaScript分配的,而是在底层C++申请的
4.我们可以通过Buffer来创建内存中的空间
使用Buffer
1.不需要引入任何的模块,直接使用,就像内置对象一样。
eg:
1. var str = "hello"; 2. var buf = Buffer.from(str); 3. console.log(buf);
运行结果:
<Buffer 48 65 6c 6c 6f>
var str = "hello"; console.log(buf.length); //当前字符占内存的大小 结果为5 console.log(str.length); //字符串的长度 结果为5 var str = "你好"; console.log(buf.length); //字符串的长度 结果为6,一个汉字占3byte
创建指定大小的Buffer:
var buf = new Buffer(1024); //1024字节,也就是1kb
这种方式已经废弃了.
用下面的这一种:
var buf = Buffer.alloc(1024);
另一种方式
1. var buf1 = Buffer.allocUnsafe(10); 2. console.log(buf1);
运行结果:
<Buffer b0 3d bb 97 00 02 00 00 b0 44>
区别:
alloc
:相当于自习课上,上完之后人走了之后书也拿走了
allocUnsafe
:相当于自习课上,上完之后人走了之后书没有拿走,有残留
API文档地址
http://nodejs.cn/api/ 中文文档地址
存放数据
1. var buf = Buffer.alloc(10); 2. buf[0] = 0xaa; 3. buf[1] = 12; 4. buf[2] = 255; 5. console.log(buf);
运行结果:
<Buffer aa 0c ff 00 00 00 00 00 00 00>
如果写buf[10]
的话,即使越界了也不会报错,但是也不会显示出来
文件系统
简单来说文件系统就是通过node
来操作系统中的文件
同步文件的写入
1.打开文件
//fs.openSync(path,flags{,model}) 语法 //引入 var fs = require("fs"); //打开文件 var fd = fs.openSync("hello.txt","w"); //console.log(fd); //返回3,证明打开成功 fs.writeSync(fd,"今天周五",3); fs.close(fd);
执行之后会自动在当前文件夹下面创建hello.txt文件,里面添加内容:今天周五
fs.writeSync(fd,"今天周五",3);
3表示前面的空格。
2.向文件流中写入内容
3.保存或者关闭文件
异步文件的写入
实例:
var fs = require("fs"); fs.open("info.txt","w",function(err,fd){ console.log(err); if(!err){ fs.write(fd,"今天好开心",function(err,fd){ if(!err){ console.log("写入成功"); fs.close(fd); }else{ console.log("写入失败"); fs.close(fd); } }); }else{ console.log(fd); } });