node学习笔记

global 全局变量

模块包装器

(function(exports, require, module, __filename, __dirname) {
        // 模块的代码实际上在这里
    });
复制代码
  • exportsnode

    exports = global.exports = {} (注意这是个对象,实际对外导出的是global.exports)chrome

  • module数组

    module = global.module = {} (注意这是个对象,实际对外导出的是global.module)bash

  • require()函数

    引包ui

  • __filename编码

    当前模块的文件名称---解析后的绝对路径。 在主程序中这不必定要跟命令行中使用的名称一致。spa

  • __dirname操作系统

    当前模块的文件夹名称。等同于 __filename 的 path.dirname() 的值。命令行

process 进程

经常使用属性

  • Events:uncaughtException

    process.on('uncaughtException', (err) => {
      fs.writeSync(1, `Caught exception: ${err}\n`);
    });
    
    setTimeout(() => {
      console.log('This will still run.');
    }, 500);
    
    // 故意调用一个不存在的函数,应用会抛出未捕获的异常
    nonexistentFunc();
    console.log('This will not run.');
    复制代码
  • argv

属性返回一个数组,这个数组包含了启动Node.js进程时的命令行参数。第一个元素为process.execPath。若是须要获取argv[0]的值请参见 process.argv0。第二个元素为当前执行的JavaScript文件路径。剩余的元素为其余命令行参数

```
例如,process-args.js文件有如下代码:
// print process.argv
process.argv.forEach((val, index) => {
  console.log(`${index}: ${val}`);
});
运行如下命令,启动进程:

$ node process-args.js one two=three four
将输出:

0: /usr/local/bin/node
1: /Users/mjr/work/node/process-args.js
2: one
3: two=three
4: four
```
复制代码
  • argv0
  • execArgv
```
例如:

$ node --harmony script.js --version
process.execArgv的结果:

['--harmony']
process.argv的结果:

['/usr/local/bin/node', 'script.js', '--version']
```
复制代码
  • execPath
  • env

一个包含用户环境信息的对象

  • cwd()

方法返回 Node.js 进程当前工做的目录

调试

inspect

// chrome打开 chrome://inspect/#devices

$ node --inspect process-args.js

// 进入程序开始时打断点
$ node --inspect-brk process-args.js
复制代码

对比 setImmediate、setTimeout、process.nextTick

process.nextTick 插入到当前队列队尾,setImmediate 插入到下个队列队首

例如:
setImmediate(() => console.log('setImmediate'))

setTimeout(() => console.log('setTimeout'), 0)

process.nextTick(() => console.log('nextTick'))

输出:
nextTick
setTimeout
setImmediate
复制代码

模块

path (路径)

  • normalize()

格式化路径

  • join()

拼接路径,内部会调用normalize

  • resolve()

获取一个目标文件的绝对路径

  • basename()

获取文件名(路径),不一样操做系统获取的不同

  • dirname()

获取所在文件夹路径

  • extname()

获取文件的拓展名

  • parse

解析一个路径,并返回一个包含这个路径信息的对象

  • format

把parse()返回的对象从新组合成字符串并返回这个字符串

  • sep
  • delimiter
  • win32
  • posix

Buffer (缓冲)

  • alloc()
// 建立一个长度为 十、且用 0 填充的 Buffer。
const buf1 = Buffer.alloc(10);

// 建立一个长度为 十、且用 0x1 填充的 Buffer。 
const buf2 = Buffer.alloc(10, 1);
复制代码
  • allocUnsafe()
// 建立一个长度为 十、且未初始化的 Buffer。
// 这个方法比调用 Buffer.alloc() 更快,
// 但返回的 Buffer 实例可能包含旧数据,
// 所以须要使用 fill() 或 write() 重写。
const buf3 = Buffer.allocUnsafe(10);
复制代码
  • from()
// 建立一个包含 [0x1, 0x2, 0x3] 的 Buffer。
const buf4 = Buffer.from([1, 2, 3]);

// 建立一个包含 UTF-8 字节 [0x74, 0xc3, 0xa9, 0x73, 0x74] 的 Buffer。
const buf5 = Buffer.from('tést');

// 建立一个包含 Latin-1 字节 [0x74, 0xe9, 0x73, 0x74] 的 Buffer。
const buf6 = Buffer.from('tést', 'latin1');
复制代码
  • byteLength()
// 字符串的编码长度
Buffer.byteLength('test')
复制代码
  • isBuffer()

  • concat(list[, totalLength])

  • 5

Buffer 实例方法

  • buf.length
  • buf.toString()
  • buf.fill() 修改buf内容
  • buf.equals()
  • buf.indexOf()
  • buf.copy() 复制buf内容

events (事件)

// 例子
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
  console.log('触发了一个事件!');
});
myEmitter.emit('event');
复制代码
  • emitter.on(eventName, listener)
  • emitter.once(eventName, listener)
  • emitter.addListener(eventName, listener)
  • emitter.emit(eventName[, ...args])
  • emitter.eventNames()
  • 错误处理
  • 'newListener' 事件

fs (文件系统)

  • fs.readFile(path[, options], callback) // 读取文件
  • fs.writeFile(file, data[, options], callback) // 写文件
  • fs.stat(path, callback) // 查看文件、文件夹信息
    • stats.isFile() // 是否是文件
    • stats.isDirectory() // 是否是文件夹
  • fs.rename(oldPath, newPath, callback) // 重命名
  • fs.unlink(path, callback) // 删除文件
  • fs.readdir(path[, options], callback) // 查看文件夹
  • fs.mkdir(path[, mode], callback) // 建立文件夹
  • fs.rmdir(path, callback) // 删除文件夹
  • fs.watch(filename[, options][, listener]) // 监听文件、文件夹变化
  • fs.watchFile(filename[, options], listener) // 监听文件变化
  • fs.createReadStream(path[, options])
  • fs.createWriteStream(path[, options])
相关文章
相关标签/搜索