Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Node.js 현재와 미래

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Outsider Outsider
October 19, 2014

Node.js 현재와 미래

한국 웹20주년 국제 콘퍼런스( http://www20.kr/ )에서 발표한 발표자료

Avatar for Outsider

Outsider

October 19, 2014
Tweet

More Decks by Outsider

Other Decks in Technology

Transcript

  1. node.js ! Ryan Dahl ! JSConf.eu 2009 http://www.youtube.com/watch?v=EeYvFl7li9E Node.js의 미래를

    예측하거나 하진 않습니다. Node.js를 개발하고 앞으로 공부하기 위해 도움이 될만한 현재 상태와 앞으로 관심가져야 할 방향에 대한 얘기입니다
  2. Ryan Dahl Isaac Z. Schlueter TJ Fontaine node.js에는 2번의 리더

    교체가 있었습니다. Issac이 올 초에 물러나고 TJ Fontaine가 새 리더가 되었습니다.
  3. Ryan Dahl Isaac Z. Schlueter TJ Fontaine node.js의 개발이 늦어지는

    이유는 리더와 코어 개발팀이 교체되었고 그 뒤에 코어 개발자의 커밋이 줄어들었습니다
  4. TJ Fontain은 올해 Node.js on the road 라는 이름으로 발표를

    하며 각 도시에서 커뮤니티를 만나고 있습니다
  5. Network Program Tools Desktop Application Robot node-webkit 최근에는 로봇제어가 큰

    이슈로 관련 컨퍼런스도 많이 열리고 있습니다
  6. - 클러스터링에 라운드로빈 로드밸런싱 도입 - 한 프로세스 안에서 여러

    인스턴스 실행 - Node Inspector로 클러스터 앱의 디버깅 - 성능 최적화(TLS, Crypto, …)
  7. - 클러스터링에 라운드로빈 로드밸런싱 도입 - 한 프로세스 안에서 여러

    인스턴스 실행 - Node Inspector로 클러스터 앱의 디버깅 - 성능 최적화(TLS, Crypto, …) 성능 개성 및 기능 강화가 주 내용으로 커다란 기능의 추가는 없습니다 v1.0에서도 API는 확정후에 개선을 위주로 개발할 것이라고 발표했습니다.
  8. ES6 Harmony Node.js 개발에 차후 크게 신경써야 할 부분 중

    하나가 ES6 라고 생각합니다 브라우저는 크로스 브라우징 문제로 최신 기능을 쓰기 어렵지만 Node.js에서는 바로 사용할 수 있다
  9. if (true){ let name = ‘www20’; console.log(name); // www20 }

    ! console.log(name); // ReferenceError: name is not defined Block Scope
  10. var map1 = new Map(); ! map1.set('name', 'www20kr'); map1.set('date', new

    Date(‘2014-10-17')); ! map1.get('name'); // ‘www20kr’ map1.get('date'); // Fri Oct 17 2014 09:00:00 GMT+0900 (KST) Collection
  11. var map1 = new Map(); ! var obj = {name:

    ‘www20kr’); map1.set(obj, 'Congrat'); ! map1.get(obj); // ‘Congrat’ Collection
  12. var set1 = new Set(); ! set1.add(1); set1.add(2); set1.add(2); !

    set.size; // 2 set1.has(2); // true Collection
  13. var t = (x) => x * x; ! t(4)

    // 16 t(8) // 64 Arrow Functions(Lambdas)
  14. db.find(id, function(err, data) { return data; }); ! ! //

    es6 db.find(id, (err, data) => data); Arrow Functions(Lambdas)
  15. var doSomething = function(callback) { somethingAsync(function(err, data) { somethingAsync(function(err, data)

    { somethingAsync(function(err, data) { somethingAsync(function(err, data) { callback(err, data); }); }); }); }); };
  16. Promise q, bluebird Promise도 ES6에 포함되어 있습니다 현재 callback hell을

    해결하는 접근으로 많이 사용하고 있습니다
  17. var fs = require(‘fs’); var Q = require(‘q’); ! var

    readFile = function(file) { var deferred = Q.defer(); fs.readFile(file, function(err, data) { if (err) { return deferred.reject(err); deferred.resolve(data); }); return deferred.promise; }; ! readFile(‘/path/to/file’) .then(function(data) { … }) .catch(function(err) { … });
  18. var fs = require(‘fs’); var Q = require(‘q’); ! var

    readFile = Q.denodeify(fs.readFile); ! readFile(‘/path/to/file’) .then(function(data) { … }) .catch(function(err) { … });
  19. function* inc() { for (var i = 0; i <

    5; i++) { yield i; } }
  20. > var index = increase(); > index.next(); { value: 0,

    done: false } > index.next(); { value: 1, done: false }
  21. > var index = increase(); > index.next(); { value: 0,

    done: false } > index.next(); { value: 1, done: false } > index.next(); { value: 2, done: false }
  22. > var index = increase(); > index.next(); { value: 0,

    done: false } > index.next(); { value: 1, done: false } > index.next(); { value: 2, done: false } > index.next(); { value: 3, done: false }
  23. > var index = increase(); > index.next(); { value: 0,

    done: false } > index.next(); { value: 1, done: false } > index.next(); { value: 2, done: false } > index.next(); { value: 3, done: false } > index.next(); { value: 4, done: false } > index.next(); { value: undefined, done: true }