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')
 });

 

posted @ 2018-09-29 11:01  bradleydan  阅读(91)  评论(0)    收藏  举报