node.js 控制台输出
console.log('Node js - console.log() 方法')
console.info('Node js - console.info() 方法')
console.log("%j", {OS:"windows", Version:"8.1", Language:["English", "Chinese"]});
var a = 0;
var b = 1;
console.log(a==b);
console.log(a>=b);
console.log(a<=b);
console.log(a==0 && b==1);
console.log("%s", "argument");
console.log("%d", 8);
var fs = require('fs');
var file = 'error-warn.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);
}
})
命令 node ch02-node-console-redirect.js 2> error.log
console.info('Node.js - readline.write() Usage');
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.write('Delete me! Wait for 3 seconds...');
var timeoutLength = 3 * 1000;
var timeout = setTimeout(function() {
rl.write(null, {ctrl:true, name:'u'});
}, timeoutLength);
var readline = require('readline');
rl = readline.createInterface(
process.stdin,
process.stdout
);
rl.setPromt('NodeJS> ');
rl.prompt();
rl.on('line', function(line) {
switch(line.trim()) {
case 'name':
console.log('king!');
break;
default:
console.log('Say what? I might have heard `' + line.trim() + '`');
}
rl.promt();
}).on('close', function() {
console.log('Have a great day!');
process.exit(0);
})
文件管理
- 打开与关闭文件
文件系统fs模块中提供了fs.open()与fs.openSync()两个方法来完成打开文件的操作,相应地提供了fs.close()与fs.closeSync()两个方法来完成关闭文件的操作。 - 获取文件信息
获取文件信息的方法有4个,分别是fs.stat()、fs.statSync()、fs.fstat()、fs.fstatSync()。其中,fs.stat()与fs.statSync()两个方法可以直接使用文件路径进行操作,而fs.fstat()与fs.fstatSync()两个方法需要使用文件描述符进行操作。
3.重命名文件
fs.rename()与fs.renameSync
4.相对路径转绝对路径
fs.realpath()和fs.realpathSync
5.目录操作
fs.mkdir(), fs.rmdir(),fs.mkdirSync(),fs.rmdirSync(),fs.readdir(),fs.readdirSync()
6.读取文件内容
fs.readFile(),fs.readFileSync(),fs.exists(),fs.existsSync(),fs.writeFile(),fs.writeFileSync(),fs.appendFile(),fs.appendFileSync()
7.监控文件
对指定的文件或路径添加监听事件,当文件或路径发生改变时,触发该事件。
fs.watch()和fs.watchFile()
缓冲区管理
var buffer = new Buffer('nodejs', 'utf8');
Buffer.isBuffer()
Buffer.isEncoding()
Buffer.byteLength(string, [encoding]);
buf.toString([encoding], start, end)
buf.slice(start, end)
buf.copy(targetBuffer, [targetStart], [sourceStart], [sourceEnd])
buf.concat(list, [len])
buf.buffer_parse(), str.string_parse()
网络管理
tcp
net.createServer([options:{allowHalfOpen:false}], [connectionListener]).listen(PORT, HOST)
['listening', 'close']
server.on('connection', function(sock){})
server.address()
server.getConnections()
clinet: {socket}
net.connect(PORT, HOST, fn):client
client.write()
sock address() localAddress localPort
remoteAddress remotePort
socket.write bytesRead bytesWritten
udp
dgram.createSocket('udp4');
listening message error close
server.bind(PORT, HOST)
dgram.createSocket('udp4');
client.send(message, 0, message.length, PORT, HOST, function(err, bytes) {
if (err) throw err;
client.close();
});
client.bind(function () {
<在其中可以调用setBroadcast(true)>
})
Web管理
http 和 https
http.createServer((req, res)=>{})
server.listen(port, [hostname], [acklog], [callback]);
writeHead(statusCode, Options) - 重定向 {'Location': 'http://localhost:8686'} - url.parse(req.url).pathname
writeHeader(statusCode, [resonPhrase], [headers])
write(chunk, [encoding])
end([data], [encoding])
getHeader
setHeader
http.request(options, function(res) {
console.log('STATUS: ', res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
var http = require('http');
var querystring = require('querystring');
var status_codes = new Array();
status_codes[0] = '201';
status_codes[1] = '202';
status_codes[2] = '203';
status_codes[3] = '401';
status_codes[4] = '402';
var postData = new Array();
for (var n=0; n<5; n++) {
postData[n] = querystring.stringify({
statuscodes: status_codes[n]
})
}
http.get(options, callback) - url.parse - 模拟ping命令
express
npm install -g express-generator
express --version
express -h
express -e express-helloworld
npm install
npm start
express -e express-routes
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('index', {
title: 'Express - Routes'
});
});
module.exports = router;
express -e express-login
npm install
router.post('/login', function(req, res, next) {
res.render('login', {
title: 'Express - login',
userid: req.body.userid,
pwd: req.body.pwd
});
});
module.exports = router;
数据库操作
mongoDB
var http = require('http');
var mongodb = require('/usr/local/lib/node_modules/mongodb');
console.log("Now start HTTP server on port 6868...");
console.info();
var server = new mongodb.Server(
'localhost',
27017,
{
auto_reconnect: true
}
),
var db = new mongodb.Db(
'nodejs',
server,
{
safe: true
}
);
db.open(function(err, db) {
if (!err) {
console.log('log - connect mongdb successfully');
} else {
console.log('log - ' + err);
}
});
http.createServer(function (req, res) {
res.writeHead(200, { "Content-Type": "text/html;charset=utf8" });
db.open(function*(err, db) {
if (!err) {
res.write('<p>Connected MongoDB:nodejs successfully!</p>');
db.collection('userinfo', { safe: true }, function(errorCollection, collection) {
if (!errcollection) {
res.write('<p>Connected MongoDB:nodejs:userinfo successfully!</p>');
collection.find().toArray(function(errorfind, cols) {
if (!errorfind) {
res.write('<p>collection.find() is: </p>');
res.write(JSON.stringify(cols));
console.log(cols);
}
});
collection.find({userid: 'king'}).toArray(function(errorfind, cols) {
if (!errorfind) {
res.write('<p>collection.find({}) is: </p>');
res.write(JSON.stringify(cols));
console.log(cols);
}
});
collection.findOne({username: 'king'}, function(errorfind, col) {
if (!errorfind) {
res.write('<p>collection.findOne({}) is,</p>');
res.write(JSON.stringify(col));
console.log(col);
}
});
var insertCol = {userid: 'wang', pwd: '123456', username: 'wang'};
collection.insert(insertCol, {safe: true}, function(errinsert, result) {
res.write('<p>collection.insert() is: </p>');
res.write(JSON.stringify(result));
console.log(result);
})
collection.remove({userid: 'wang', {safe: true}, function(errremove, count) {
res.write('<p>collection.remove() is: </p>');
res.write(JSON.stringify(count)),
console.log(count);
});
collection.update({userid: "king"}, {$set: {username:'king-update'}},
function(errupdate, cols) {
res.write('<p>collection.update() is: </p>');
})
} else {
console.log('log - ' + err);
}
});
} else {
res.write('<p>Error Connected to MySQL!</p>');
console.log('log - ' + err);
}
})
});
}).listen(6868);
Mysql数据库
var http = require('http');
var mysql = require('/usr/local/lib/node_modules/mysql');
console.log('Now start HTTP server on port 6868...');
console.info();
var connnection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'nodejs',
port: 3306
});
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': "text/html;charsert=utf8"});
res.write("<h3>测试 Node.js - MySQL 数据库连接!<h3><br/>");
connection.connect(function(err) {
if (err) {
res.end('<p>Error Connected to MySQL!</p>');
return;
} else {
res.end('<p>Connected to MySQL!</p>');
}
});
connection.query('select * from userInfo', function(error, rows, fields) {
res.writeHead(200, { "Content-Type": "text/html;charset=utf8" });
res.write("<h3>测试 Node.js - MySQL 数据库查询操作!</h3><br/>");
res.end(JSON.stringify(rows));
});
connection.query('insert into userinfo(id,name,pwd) values(7, "genius", "12345678");', function(errorinsert, resinsert) {
if (errorinsert) console.log(errorinsert);
console.log('INSERT Return ===> ');
console.log(resinsert);
}
connection.query('delete from userinfo where id=7;', function(errordelete, resdelete) {
if (errordelete) console.log(errordelete);
console.log('DELETE Return ===> ');
console.log(resdelete);
});
connection.query('update userinfo set pwd="87654321 where pwd="12345678";', function (errorupdate, resupdate) {
if (errorupdate) console.log(errorupdate);
console.log("Update Return ==> ");
console.log(resupdate);
});
pool.getConnection(function (err, conn) {
if (err) {
console.log("POOL ==> " + err);
console.log();
}
var selectSQL = 'select * from userinfo';
conn.query(selectSQL, function(err, rows) {
if (err) {
console.log(err); console.log();
}
console.log("SELECT ==> ");
for (var i in rows) {
console.log(rows[i]);
}
conn.release();
res.writeHead(200, { "Content-Type": "text/html; charset=utf8" });
res.write("<h3>测试Node.js - MySQL 数据库连接池操作!</h3><br/>");
res.end(JSON.stringify(rows));
});
});
}).listen(6868);