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])
相關文章
相關標籤/搜索