基础函数调用
模块
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);

浙公网安备 33010602011771号