node.js基础
基本演示
1. 在windows下安装node.js,安装成功后输入 node --version 可以查看脚本信息
2. 创建服务端js文件
var http = require('http');
var server = http.createServer(function(req, res){
res.writeHead(200, {'Content-Type':'text/html'});
res.end('<marquee>Smashing Node!</marquee>');
});
server.listen(3000);
3. 在js所在目录下运行 node my-web-server.js 开启服务
4. 浏览器中输入 http://localhost:3000/ 可以查看到滚动信息
创建package.json文件
{ "name": "file-explorer", "version": "0.0.1", "description": "A command-file file explorer", "dependencies": { "colors": "^1.4.0" } }
npm install 测试npm
npm install colors
创建index.js文件
require('colors') console.log('smashing node'.rainbow);
运行js文件:
node index
读取目录
var fs = require('fs'); console.log(fs.readdirSync(__dirname));
异步读取目录中文件
function async(err,files) { console.log(files); } require('fs').readdir('.',async);
标准输出
process.stdout.write('Hello World');
读取文件
cwd是指当前node命令执行时所在的文件夹目录
var fs = require('fs'),stdin = process.stdin ,stdout = process.stdout;
fs.readdir(process.cwd(), function (err, files) {
if (!files.length) {
return console.log(' 暂无文件')
} else {
console.log('文件如下:' + files);
}
var stats = [];
function getFiles(i) {
var filename = files[i];
// fs.stat给出文件或目录的元数据
fs.stat(__dirname + '/' + filename, function (err, stat) {
stats[i] = stat;
if (stat.isDirectory()) {
console.log(i+' 目录' + filename);
} else {
console.log(i +' 文件'+ filename);
}
i++;
if (i == files.length) {
read();
} else {
getFiles(i);
}
});
}
getFiles(0);
function read() {
console.log('');
stdout.write('选择');
stdin.resume();
stdin.setEncoding('utf8');
// 监听data事件
stdin.on('data',option);
}
function option(data) {
var filename = files[Number(data)];
if(!filename) {
stdout.write('请选择');
} else {
stdin.pause();
if(stats[Number(data)].isDirectory()) {
fs.readdir(__dirname+'/'+filename,function(err,files) {
console.log('');
files.forEach(function(file) {
console.log(' '+file);
});
console.log(' ');
})
} else {
fs.readFile(__dirname+'/'+filename,'utf8',function(err,data) {
console.log('');
console.log(' \033[90m' + data.replace(/(.*)/g,' $1')+'\033[39m');
})
}
}
}
});
聊天
var count = 0,users = {}; var net = require('net'); var server = net.createServer(function(con) { con.setEncoding('utf8'); con.write(count+' people connect'); count++; var nickname; con.on('data',function(data) { data = data.replace('\r\n',''); if(!nickname) { if(users[data]) { con.write('用户名已使用'); return; } else { nickname = data; users[nickname] = con; for(var i in users) { if(i != nickname) { users[i].write(nickname+' join in'); } } } } }); con.on('close',function() { count--; delete users[nickname]; }); }); server.listen(3000,function() { console.log('\033[90m server listening \033[39m') });

浙公网安备 33010602011771号