node.md 3.5 KB
Newer Older
RunAtWorld's avatar
结构  
RunAtWorld 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
node 命令

## node 的包结构
```
- 包(package)
    - 将多个模块组合为一个完整的功能,就是一个包
    - 包结构
        bin
            - 二进制的可执行文件,一般都是一些工具包中才有
        lib
            - js文件
        doc
            - 文档
        test
            - 测试代码
        package.json
            - 包的描述文件
```

## package.json				
package.json 是一个json格式的文件,在它里面保存了包各种相关的信息

```
name 包名
version 版本
dependencies 依赖
main 包的主要的文件
bin 可执行文件
```

## npm 命令				
npm(Node Package Manager node的包管理器),通过npm可以对node中的包进行上传、下载、搜索等操作。

npm会在安装完node以后,自动安装。

npm的常用指令。
```
npm -v 查看npm的版本
npm version 查看所有模块的版本
npm init 初始化项目(创建package.json)
npm i/install 包名 安装指定的包
npm i/install 包名 --save 安装指定的包并添加依赖
npm i/install 包名 -g 全局安装(一般都是一些工具)
npm i/install 安装当前项目所依赖的包
npm s/search 包名 搜索包	
npm r/remove 包名 删除一个包
```

[cnpm](http://npm.taobao.org/) 是淘宝 NPM 镜像,一个完整 npmjs.org 镜像。  
安装淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

```shell script
npm install -g cnpm --registry=https://registry.npm.taobao.org
```

日常可以同时使用 npm 和 cnpm 来安装 nodejs 组件,而不是使用 cnpm 代替 npm。

## 文件系统(File System)
### Buffer(缓冲区)
Buffer和数组的结构的非常类似,Buffer是用来存储二进制数据的

Buffer的方法
- Buffer.from(字符串)
    - 将一个字符串中内容保存到一个buffer中
- buf.toString()
    - 将buffer转换为一个字符串
- Buffer.alloc(size)
    - 创建一个指定大小的buffer对象
- Buffer.allocUnsafe(size)
    - 创建一个指定大小的buffer对象,可以包含敏感数据
            
            
### fs模块

在Node通过fs模块来对系统中的文件进行操作,fs模块是node中已经继承好了,不需要在使用npm下载,直接引入即可

###### 引入fs
```
var fs = require("fs");
```

######fs模块中的大部分操作都提供了两种方法,同步方法和异步方法
```
- 同步方法带sync
- 异步方法没有sync,都需要回调函数
``` 

######写入文件
1.同步写入
2.异步写入
3.简单写入
4.流式写入
    
###### 读取文件
1.同步读取
2.异步读取
3.简单读取
4.流式读取
    
###### 方法

- 打开文件
    fs.open(path, flags[, mode], callback)
    fs.openSync(path, flags[, mode])
    
- 读写文件
    fs.write(fd, string[, position[, encoding]], callback)
    fs.writeSync(fd, string[, position[, encoding]])
    
    fs.read(fd, buffer, offset, length, position, callback)
    fs.readSync(fd, buffer, offset, length, position)
    
- 关闭文件
    fs.close(fd,callback)
    fs.closeSync(fd);
    
- 简单文件读取和写入
    fs.writeFile(file, data[, options], callback)
    fs.writeFileSync(file, data[, options])
    
    fs.readFile(path[, options], callback)
    fs.readFileSync(path[, options])
    
    
- 流式文件读取和写入
    - 流式读取和写入适用于一些比较大的文件
        fs.createWriteStream(path[, options])
        fs.createReadStream(path[, options])

# 参考
1. [nodejs.cn](http://nodejs.cn/)
1. [Node.js 官网](https://nodejs.org/zh-cn/)