基础函数调用

模块

var adder = function(a,b) {
    console.log(`the sum of a and b is ${a+b}`)
}

module.exports = adder;
var add = require("./counter")
add(1,2);

命令行运行

node app

事件

var events = require("events");
var myEmitter = new events.EventEmitter();
myEmitter.on('someEvent',function(message) {
    console.log(message);
});
myEmitter.emit("someEvent",'Some News');

 

var events = require("events");
var utils = require("util");
var Person = function(name) {
    this.name = name;
}
utils.inherits(Person,events.EventEmitter);
var xiaoming = new Person("xiaoming");
var xiaohua = new Person("xiaohua");
var people = [xiaoming,xiaohua];
people.forEach(function(person) {
    person.on("speak",function(message) {
        console.log(person.name+" say " + message);
    });
})

xiaoming.emit('speak',"Hello");
xiaohua.emit('speak',"Orange");

 同步

var fs = require('fs');
var readme = fs.readFileSync('readme.txt','utf8');
fs.writeFileSync('writeme.txt',readme);

 

异步

var fs = require('fs');
fs.readFile('readme.txt','utf8',function(error,data) {
    fs.writeFile('writeme.txt',data,function() {
        console.log('write me');
    });
});
console.log('finished');

删除文件

var fs = require('fs');
fs.unlink('writeme.txt',function() {
    console.log('delete file');
});

创建目录

var fs = require('fs');
fs.mkdir('path',function() {
    fs.readFile('readme.txt',function(error,data) {
        fs.writeFile('./path/writeme.txt',data,function() {
            console.log('finished');
        });
    })
});

 读取流

var fs = require('fs');
var readStream = fs.createReadStream(__dirname+'/readme.txt');
readStream.setEncoding('utf8');
var data = "";
readStream.on('data',function(chunk) {
     data += chunk;
});

readStream.on('end',function() {
    console.log(data);
});

 写入流

var fs = require('fs');
var readStream = fs.createReadStream(__dirname+'/readme.txt');
var writeStream = fs.createWriteStream(__dirname+'/writeme.txt');
readStream.on('data',function(chunk) {
    writeStream.write(chunk);
});

readStream.on('end',function() {
  console.log('finished');  
});

 

var fs = require('fs');
var writeStream = fs.createWriteStream(__dirname+'/writeme.txt');

writeStream.write('hello world');
writeStream.end();
writeStream.on('end',function() {
    console.log('finished');
});
 

管道

var fs = require('fs');
var readStream = fs.createReadStream(__dirname+'/readme.txt');
var writeStream = fs.createWriteStream(__dirname+'/writeme.txt');

readStream.pipe(writeStream);
var crypto = require('crypto');
var fs = require('fs');
var zlib = require('zlib');

var password = Buffer.from(process.env.PASS || 'password');
var encryptStream = crypto.createCipher('aes-256-cbc',password);

var gzip = zlib.createGzip();
var readStream = fs.createReadStream(__dirname+'/readme.txt');
var writeStream = fs.createWriteStream(__dirname+'/out.gz');

readStream.pipe(encryptStream)
.pipe(gzip)
.pipe(writeStream)
.on('finish',function() {
    console.log('done');
});

 管道解压缩

var crypto = require('crypto');
var fs = require('fs');
var zlib = require('zlib');

var password = Buffer.from(process.env.PASS || 'password');
var encryptStream = crypto.createDecipher('aes-256-cbc',password);

var gzip = zlib.createGunzip();
var readStream = fs.createReadStream(__dirname+'/out.gz');

readStream.pipe(gzip)
.pipe(encryptStream)
.pipe(process.stdout)
.on('finish',function() {
    console.log('done');
});

 

Http

var fs = require('fs');
var http = require('http');

var onRequest = function(request,response) {
    response.writeHead(200,{'Content-Type':'text/html'});
    var stream =  fs.createReadStream(__dirname+ '/index.html','utf8');
    stream.pipe(response);
}

var server = http.createServer(onRequest);
server.listen(3000);
console.log('server start');

 

模块重构

var fs = require('fs');
var http = require('http');
function startServer() {
    var onRequest = function(request,response) {
        response.writeHead(200,{'Content-Type':'text/html'});
        var stream =  fs.createReadStream(__dirname+ '/index.html','utf8');
        stream.pipe(response);
    }
    
    var server = http.createServer(onRequest);
    server.listen(3000);
    console.log('server start');
}

exports.startServer = startServer;
 
var server = require('./server')
server.startServer();

 路由

handler.js

var fs = require('fs');
function home(response) {
    response.writeHead(200,{'content-type':'text/html'});
    fs.createReadStream(__dirname+'/index.html','utf8').pipe(response);
}

function review(response) {
    response.writeHead(200,{'content-type':'text/html'});
    fs.createReadStream(__dirname+'/review.html','utf8').pipe(response);
}

function api_records(response) {
    response.writeHead(200,{'content-type':'application/json'});
    var jsonObj = {
        name:'name',
        age:18
    }
    response.end(JSON.stringify(jsonObj));
}

module.exports = {
    home:home,
    review:review,
    api_records:api_records
}

router.js

function route(handle,pathname,response) {
    if(typeof handle[pathname] === 'function') {
        handle[pathname](response);
    } else {
        console.log('Not found'+ pathname);
    }
}

module.exports.route = route;

server.js

var fs = require('fs');
var http = require('http');


function startServer(route,handle) {
    var onRequest = function(request,response) {
        route(handle,request.url,response);
    }
    
    var server = http.createServer(onRequest);
    server.listen(3000);
    console.log('server start');
}

module.exports.startServer = startServer;

app.js

var server = require('./server')
var router = require('./router');
var handler = require('./handler');

var handle = {};
handle['/'] = handler.home;
handle['/home'] = handler.home;
handle['/review'] = handler.review;
handle['/api/v1/records'] = handler.api_records;

server.startServer(router.route,handle);

 

posted @ 2020-03-25 17:24  bradleydan  阅读(85)  评论(0)    收藏  举报