Node.js 模組(三)

數學計算  Mathematics

模組  Math.js

JavaScript 和 Node.js 內建原生的數學計算方法,只有基本功能而已,如果想要有更有複雜的數學方法解決方案,可以考慮使用Math.js。Math.js提供非常多的數學方法,而且提供更彈性化的運算操作。

npm install mathjs

檔案系統  File system      fs

Node.js內建一個fs核心模組供開發人員進行檔案I/O的操作

var fs = require('fs');

非同步方法讀取目錄檔案清單

var fs = require('fs');

fs.readdir('../exercise', function(err, files) {

if (err) {
console.log(err);
return;
}
for (var index in files) {
console.log(files[index]);
}
});

檢查檔案是否存在

var fs = require('fs');

fs.exists('/tmp', function (exists) {
//印出結果,如果存在為true,如果失敗為false
console.log(exists);
});

刪除檔案

var fs = require('fs');

fs.unlink('/tmp/test', function(err) {
//如果有錯誤發生
if(err) {
console.log(err);
return;
}
console.log('Removed');
});

刪除目錄

rmdir()
即可刪除一個指定檔案,但是這只能刪除一個空的目錄,如果我們想刪除的是一個有許多檔案的目錄,就必須先遍歷整個目錄,將其中所有的檔案一層層清空最後再進行目錄刪除。

解決這個問題我們可以用fs-extra模組
npm install fs-extra

變更檔案名稱

var fs = require('fs');

fs.rename('/tmp/test', '/tmp/test.new', function (err) {
if(err) {
console.log(err);
return;
}
console.log('Renamed');
});

非同步讀取檔案內容

var fs = require('fs');

fs.readFile('./readfile.js', function(err, data) {
if (err) {
console.log(err);
return;
}
console.log(data.toString());
});

以資料流形式讀取檔案

Node.js本身有良好的資料流(Steam)支援,使用資料流可以很有效率的處理I/O的資料,然後我們就像水龍頭接水一樣,接者從水管流出的資料,然後再進行處理。
Node.js的fs核心模組有提供一個createReadStream()方法

var fs = require('fs');

var stream = fs.createReadSrteam('/readfile-stream.js');

stream.on('data', function(data) {
console.log(data.toString());
});

非同步寫入檔案內容

var fs = require('fs');

fs.writeFile('./writefile.txt', 'Hello World', function(err) {
if (err) {
console.log(err);
return;
}
console.log('Wrote');
});

以資料流形式寫入檔案

var fs = require('fs');

var stream = fs.createWriteStream('./writefile-stream.txt');
stream.write('Hello World');

附加資料到檔案內容結尾

var fs = require('fs');

fs.appendFile('./appendfile.txt', 'Hello World', function (err){
if (err) {
console.log(err);
return;
}
console.log('Appended');
});

搬移檔案

搬移檔案或複製檔案,就是在指定的路徑上建立一個新的空白檔案,然後把被複製的檔案內容,複製寫入到這個新的空白檔案之中,這只是運用到前面的讀取、寫入的技巧和功能。

原生的fs沒有完整的功能,我們可以用第三方模組 fs-extra來完成這個工作。

npm install fs-extra

var fse = require('fs-extra');
fse.move('./tmp/src.txt', './tmp/dest.txt', function(err) {
if (err) {
console.log(err);
return;
}
console.log('Move');
});

Node.js 模組(二)

資料結構與演算法 Data Structures & Algorithms

陣列     Arrays

建立陣列

建立一個空陣列

var name = new Array();

var name = [];

建立一個有值的陣列

var name = new Array('Fred', 'Weeley', 'Chuck');

var name = ['Fred', 'Weeley', 'Chuck'];

存取陣列元素

var name = ['Fred', 'Weeley', 'Chuck'];

//取出並印出第一個元素的值
console.log(name[0]);

//印出所有陣列的值
for (var index in name) {
console.log(name[index]);
}

新增與刪除元素

name.push('Charles');

//從第二個元素的位置開始,刪除一個元素
name.splice(1,1);

尋找元素

var name = ['Fred', 'Weeley', 'Chuck'];
var index = name.indexOf('Chuck');
console.log(index);

取的陣列長度

var name = ['Fred', 'Weeley', 'Chuck'];
var length = name.length;
console.log(length);
堆疊
var queue = [];

//將資料一一送入
queue.push('Fred');
queue.push('Wesley');
queue.push('Chuck');
queue.push('Charles');
queue.push('Frankie');

//取得最後送入元素,並從陣列中刪除
var first = queue.pop();
console.log(first);

//取得倒數第二個送入的元素,並從元素中刪除
var second = queue.pop();
console.log(second);
佇列
var queue = [];

//將資料一一送入
queue.push('Fred');
queue.push('Wesley');
queue.push('Chuck');
queue.push('Charles');
queue.push('Frankie');

//取得先送入元素,並從陣列中刪除
var first = queue.shift();
console.log(first);

//取得第二個送入的元素,並從元素中刪除
var second = queue.shift();
console.log(second);
排序
var arr = [
'Fred',
'Wesley',
'Chuck',
'Charles',
'Frankies',
'Stacy',
'Rance'
];

//對陣列進行排列
arr.sort();

//列印結果
console.log(arr);

日期與時間  Dates and Times

Moment.js

npm install moment

這篇有詳細的說明

var moment = require('moment');

//建立 moment 物件
var now = moment();

//顯示目前的時間
console.log(now.format());