AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

Node技术栈实践 张宇辰@猿题库

发布者 noder
发布于 1435538581806  浏览 10461 关键词 架构, Node.JS 
分享到

第1页

Node 技术栈实践

张宇⾠辰 (pw) @ 猿题库



第2页

后端Java/Python/PHP … 前端HTML/CSS/JavaScript…



?



第3页

猿题库前端进化之路



第4页

Node 实践中的那些坑



第5页

后端Java/Python/PHP … 前端HTML/CSS/JavaScript…



?



第6页

浏览器



服务器



数据库



模板 静态资源



第7页

浏览器



服务器



数据库



模板 静态资源



后端



前端



第8页

浏览器



服务器



数据库



模板 静态资源



后端



前端



第9页

浏览器



服务器



数据库



模板 静态资源



后端



灰⾊色地带



前端



第10页

⽤用接⼝口来解决问题



服务器



数据库



模板



后端



前端



第11页

前端包圆



服务器



数据库



模板



后端



前端



第12页

猿题库前端进化之路



第13页

猿题库



Java



HTML Template



CSS / JS / IMG



第14页

主站



公务员



司法考试 ⾼高考



Java

HTML Tmpl

CSS / JS / IMG



Java

HTML Tmpl

CSS / JS / IMG



Java

HTML Tmpl

CSS / JS / IMG



Java

HTML Tmpl

CSS / JS / IMG



第15页

主站



公务员



司法考试 ⾼高考



Java



Java



Java



Java



前端代码

HTML Tmpl CSS / JS / IMG



第16页

主站



公务员



司法考试 ⾼高考



Java



Java



Java



Java



前端服务器

Node

HTML Tmpl CSS / JS / IMG



第17页

主站



公务员



司法考试 ⾼高考



Java



Java



Java



后端 前端



HTTP



前端服务器



Node

HTML Tmpl

CSS / JS / IMG



Java



第18页

前端包圆 (By Node)



服务器



数据库



模板



后端



前端



第19页

那些坑

• HTTP • 异常处理 • 内存泄露 • 多核优化, 部署 • ⼀一些⼯工具: 开发, 调试, 性能调优



第20页

client api request



2n



2n



n

Nginx



Node



n



API Server



第21页

client api request



n

Nginx



n



2n

Nginx

2n



Node



API Server



第22页

10.0.1.3

Nginx



Node



yuantiku.com

/ Nginx

/api



API Server



API Server



API Server



第23页

http.globalAgent.maxSockets = Infinity;



第24页

var agent = new http.Agent({ maxSockets: 2

});

!

req.request = request.defaults({ pool: agent

});



第25页

那些坑

• HTTP • 异常处理 • 内存泄露 • 多核优化, 部署 • ⼀一些⼯工具: 开发, 调试, 性能调优



第26页

app.get('/foo', function (req, res) { throw new Error('foo');

});

!

app.use(function (err, req, res, next) { res.send(500, err.message);

});



第27页

app.get('/bar', function (req, res) { process.nextTick(function () { throw new Error(‘bar'); // 异步函数中的异常

}); });



第28页

process.on('uncaughtException', function () { return;

});



第29页

Domain

Express

http://lostjs.com/2014/01/25/handle-exception-in-node/



第30页

那些坑

• HTTP • 异常处理 • 内存泄露 • 多核优化, 部署 • ⼀一些⼯工具: 开发, 调试, 性能调优



第31页

var val = 'hello world'; function outer() {

var val = 'bar'; return function inner() {

return val; }; } global.inner = outer();



第32页

var getUserData = (function () { var cache = {}; return function (userId, callback) { if (cache[id]) { process.nextTick(function () { callback(cache[id]); }); return; } getUser(id, function (data) { cache[id] = data; callback(data); }); };

}());



第33页

var getUserData = (function () { var cache = new LRU({max: 100}); return function (userId, callback) { if (cache.has(id)) { var user = cache.get(‘id’); process.nextTick(function () { callback(user); }); return; } getUser(id, function (data) { cache.set(id, data); callback(data); }); };

}());



第34页

app.get(‘/users/:id’, function (req, res) { getUser(function (req.param(‘id’), data) { user = data; getOrderByUser(user.id, function (order) { res.render({ user: user, order: order }); }); });

});



第35页

app.get(‘/users/:id’, function (req, res) { getUser(function (req.param(‘id’), data) { user = data; getOrderByUser(user.id, function (order) { res.render({ user: user, order: order }); }); });

});



第36页

app.get(‘/users/:id’, function (req, res) { getUser(function (req.param(‘id’), data) { var user = data; getOrderByUser(user.id, function (order) { res.render({ user: user, order: order }); }); });

});



第37页

‘use strict’; app.get(‘/users/:id’, function (req, res) {

getUser(function (req.param(‘id’), data) { var user = data; getOrderByUser(user.id, function (order) { res.render({ user: user, order: order }); });

}); });



第38页

那些坑

• HTTP • 异常处理 • 内存泄露 • 多核优化, 部署 • ⼀一些⼯工具: 开发, 调试, 性能调优



第39页

• node • pm2 • NODE_ENV



第40页

那些坑

• HTTP • 异常处理 • 内存泄露 • 多核优化, 部署 • ⼀一些⼯工具: 开发, 调试, 性能调优



第41页

• npm • node inspector • webkit-devtools-agent • console.trace



第42页

perfectworks@gmail.com @__pw__ lostjs.com



支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。