
使用 require 命令載入模組的方法
//載入核心模組 'http'
var http = require('http');
//載入自訂模組 circle
var circle = require ('./ch02.module-file-circle.js');
使用 exports 命令輸出物件
exports.area = function(r) {
return PI*r*r;
};
⬆這段程式碼使用 exports命令輸出一個 area方法,用於計算圓面積。
使用 async 流程庫的方法
async.series([
function (callback) {
callback(null, 'hello');
},
function (callback) {
callback(null, 'async');
},
function (callback) {
callback(null, 'series');
}
], function(err, results) {
console.log(results);
});
⬆這段程式碼使用了async流程庫的series方法來控制流程。
初始化 Buffter 物件的方法
var buffter = new Buffer("This is Buffter", "utf8");
⬆初始化 Buffter 物件的方法,並定義了”utf8″編碼格式。
擷取作業系統資訊的方法
var os = require("os");
var type = os.type();
console.info('目前作業系統類型為:' + type);
var platform = os.platform();
console.info('目前作業系統平台為:' + platform);
費伯納數列 Fibonacci
Fibonacci 數列: F(n) = F(n-1) +F(-2)
console.log("\n");
console.log("------Fibonacci數列應用------");
console.log("\n");
var strFibonacci;
var i=1, j=1, s=i+j;
strFibonacci = "輸出 Fibonacci 數列 >>> 1 1 ";
while(s <=1000) {
strFibonacci = strFibonacci + s + " ";
i = j;
j = s;
s = i + j;
}
console.info(strFibonacci);
console.info("\n");

錯誤與警告提示應用
var fs = require('fs');
var file = './err-warm.txt';
var encoding = 'UTF-8';
fs.readFile(file, encoding, function(err , data) {
if (err) {
console.error("error - \n %s" ,err);
console.warn("warn - \n %s ", err);
}else {
console.log(data);
}
});
階乘運算輸出
console.info("\n");
console.info("-----階乘計算-----");
console.info("\n");
var iNum, iFactorial=1;
var strFactorial;
//從控制台讀取使用者輸入
var readline = require('readline');
var rl = readline.createInterface( {
input: process.stdin,
output: process.stdout
});
rl.question("請輸入階乘運算起始數值:\nn =" , function(iNum) {
strFactorial = iNum + "!= " + factorial(iNum);
console.info(strFactorial);
console.info("\n");
rl.close();
});
function factorial(n) {
if(n>0)
{
if (n == 1)
{
iFactorial = 1;
}
else
{
iFactorial = n * factorial(n-1);
}
}
return iFactorial;
}

模擬一個簡單的控制介面
var readline = require('readline'); //引入模組
rl = readline.createInterface ( //初始化rl
process.stdin,
process.stdout
);
rl.setPrompt('NodeJS>'); //定義控制台的命令提示字元
rl.prompt(); //初始化模擬控制台
rl.on('line', function(line) { //啟動readline模組的line事件
switch(line.trim()) {
case 'name':
console.log('king');
break;
case 'code':
console.log('Node.js!');
break;
case 'time':
console.log('2025!');
break;
default:
console.log('Say what? I might have heard '+ line.trim() +'`');
break;
}
rl.prompt();
}).on('close', function() { //啟動readline模組的close事件
console.log('Have a great day!');
process.exit(0);
});

輸出水仙花數
所謂水仙花數就是一個三位自然數的百位、十位和個位數的立方和。
var m, a, b, c, sum;
for (m=100; m<1000; m++) { //循環判斷100~999整數中的水仙數
a = parseInt(m/100); //計算出百位數
b = parseInt((m-a100)/10); //計算出十位數 c = parseInt(m-a100-b10); //計算個位數 sum = aaa + bbb +cc*c;
if(m == sum) {
console.info("%d", m + "\n");
console.info("百位數" + a );
console.info("十位數" + b );
console.info("個位數" + c +"\n" );
}
}

輸出質數

var i, j, iNum, strPrimeNum;
var bFlag; //定義該變數,用於標記是否為質數
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Please enter number? ", function(iNum) {
strPrimeNum = "2";
for (i=3; i<=iNum; i++)
{
bFlag = true;
for (j=2; j<i; j++)
{
if(i%j == 0) //透過if條件判斷是否滿足質數的條件
{
bFlag = false;
break;
}
}
if (bFlag == true)
{
strPrimeNum = strPrimeNum + i + " "; //將質數儲存在一個字串變數中
}
}
console.log("Prime number > ", strPrimeNum);
rl.close();
})

列印輸出楊輝三角

楊輝三角,又稱為帕斯卡三角形,是二項式係數在三角形中的幾何排列式係數在三角形中的幾何排列
河內塔(Hanoi) 問題
河內塔(Hanoi)是根據一個古老傳說而形成的數學問題,有3根柱子A、B、C,其中A柱上有N個(N>)穿孔圓盤,圓盤的尺寸由下而上依次變小,要求按下列規則將所有圓盤移至C桿。
規則一:每次只能移動一個圓盤。
規則二:大盤不能疊在小盤上面。
var i, j, k, strLine;
var readline = require('readline');
rl = readline.createInterface(
process.stdin,
process.stdout
);
rl.question("Line is:", function(iLine) { //請輸入楊輝三角行數
strLine = ">"; //輸出楊輝三角第一行
for (i=1; i<=10*iLine; i++)
{
if (i==5*iLine)
{
strLine = strLine+1;
} else
{
strLine = strLine+" ";
}
}
console.info(strLine);
strLine = ">"; //輸出楊輝三角後續行
for (j=1; j<=iLine-1; j++)
{
for (k=1; k<5*(iLine-j-1); k++)
{
strLine = strLine + " ";
}
y=1;
strLine = strLine + FormatNumber(y);
for (k=1; k<=j; k++)
{
y=y*(j-k+1)/k;
strLine = strLine + FormatNumber(y);
}
console.info(strLine);
strLine = ">";
}
rl.close();
});
function FormatNumber(y) {
var strL = "";
if (y<10)
{
strL = strL + " " +y+" ";
}
else if ((y>=10) && (y<100))
{
strL = strL + " " +y+" ";
}
else if (y>=100)
{
strL = strL + " " +y+" ";
}
return strL;
}

簡單四則運算應用

var a, b, sign, summary;
console.info("Calculate start!");
/*
* 模擬一個控制台輸入介面
* @type (exports)
*/
var readline = require('readline');
rl = readline.createInterface(
process.stdin,
process.stdout
);
rl.setPrompt('Calculate>');
rl.prompt();
a = Math.round(Math.random() * 100);
b = Math.round(Math.random() * 100);
sign = Math.round(Math.random() * 3);
summary = switchSign(a, b, sign);
rl.on('line', function(line) {
if(line.trim() == summary) {
console.info("answer is right!");
} else {
console.info("answer is error! The correct answer is " + summary + ".");
}
rl.prompt();
a = Math.round(Math.random() * 100);
b = Math.round(Math.random() * 100);
sign = Math.round(Math.random() * 3);
summary = switchSign(a, b, sign);
}).on('close', function() {
console.log('Calculate exits!');
process.exit(0);
})
/*四則運算;方法 - switchSign()
* @param a
* @param b
* @param sign - 運算子
* @param {*}
*/
function switchSign(a, b, sign) {
var c;
switch(sign) {
case 0:
c = a + b;
console.info(a + "+" + b + "=");
break;
case 1:
c = a - b;
console.info(a + "-" + b + "=");
break;
case 2:
c = a * b;
console.info(a + "*" + b + "=");
break;
default:
c = a + b;
console.info(a + "+" + b + "=");
break;
}
return c;
}