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

Node.js 현재와 미래

Outsider
October 19, 2014

Node.js 현재와 미래

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

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 }