
Node.js 模組(四)

JavaScript 和 Node.js 內建原生的數學計算方法,只有基本功能而已,如果想要有更有複雜的數學方法解決方案,可以考慮使用Math.js。Math.js提供非常多的數學方法,而且提供更彈性化的運算操作。
npm install mathjs
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');
});
建立一個空陣列
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);
npm install moment
var moment = require('moment');
//建立 moment 物件
var now = moment();
//顯示目前的時間
console.log(now.format());