Node v6 with ES2015
by
Pine Mizune
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
3 Jun, 2016 / Gotanda.js #4 in Retty Pine Mizune Node v6 with ES2015
Slide 2
Slide 2 text
Profile o GitHub: @pine o Twitter: @pine613 o 好きな言語: JavaScript o 仕事で書いている言語: Kotlin / Perl o Mobile Factory, Inc
Slide 3
Slide 3 text
Table of contents uNode v6 released uDestructuring assignment (分割代入) uDefault parameters uRest parameters (残余引数) uProxy API uReflect API Node v6 ~ 対応
Slide 4
Slide 4 text
Table of contents uNode v6 released uDestructuring assignment (分割代入) uDefault parameters uRest parameters (残余引数) uProxy API uReflect API Node v6 ~ 対応
Slide 5
Slide 5 text
Node v6 released [1/4] 04/26 次期 LTS 候補 Node v6 リリース • 2013/03/11 Node v0.10.0 released • 2015/02/06 Node v0.12.0 released • 2015/09/08 Node v4.0.0 released (LTS) • 2015/10/29 Node v5.0.0 released • 2016/04/26 Node v6.0.0 released (次期 LTS) 今日はこの話
Slide 6
Slide 6 text
Node v6 released [2/4] 04/26 次期 LTS 候補 Node v6 リリース Node v0.10.x / v0.12.x は 2016 年中でサポート切れ
Slide 7
Slide 7 text
Node v6 released [3/4] 04/26 次期 LTS 候補 Node v6 リリース Node v4.x (LTS) は 2018 年春までサポート
Slide 8
Slide 8 text
Node v6 released [4/4] 04/26 次期 LTS 候補 Node v6 リリース Node v6.x なら ES2015 が ほぼトランスパイル不要
Slide 9
Slide 9 text
Table of contents uNode v6 released uDestructuring assignment (分割代入) uDefault parameters uRest parameters (残余引数) uProxy API uReflect API Node v6 ~ 対応
Slide 10
Slide 10 text
Destructuring assignment (分割代入) [1/3] 配列、オブジェクトの代入を簡潔に記述する構文 let [ first, second ] = [ 1, 2 ] console.log(first, second) #=> 1 2 let { name, age } = { name: “rem”, age: 17 } console.log(name, age) #=> rem 17 配列での分割代入 オブジェクトでの分割代入
Slide 11
Slide 11 text
Destructuring assignment (分割代入) [2/3] 関数の引数でも、分割代入が可能 function foo({ flag = false } = {}) { console.log(flag) } foo() #=> false foo({ flag: true }) #=> true オプションを受け取る関数が、簡潔に定義可能 呼び出す側は今まで通り
Slide 12
Slide 12 text
Destructuring assignment (分割代入) [3/3] require / import 文で使うと綺麗 const {assign} = require(‘lodash’) import/export は Node v6 では非対応、要 Babel require での記述が簡略化可能 import {exec} from ‘child_process’
Slide 13
Slide 13 text
Default parameters 関数の引数に初期値が設定可能 function foo(a = 1, b, c = 3) { console.log(a, b, c) } 任意の箇所の引数の初期値が指定可能 foo() #=> 1 undefined 3 foo(1, 2, 3) #=> 1 2 3 初期値を指定しない場合は従来通り undefined
Slide 14
Slide 14 text
Rest parameters (残余引数) 可変長引数を簡潔に記述可能 function foo(a, b, …args) { console.log(a, b, args) } 任意の箇所の引数の初期値が指定可能 foo(1, 2) #=> 1 2 [] foo(1, 2, 3, 4, 5) #=> 1 2 [ 3, 4, 5 ] arguments と違い本物の配列として扱える
Slide 15
Slide 15 text
Proxy API [1/2] プロパティアクセスや演算子の処理を上書きする機能 const target = { foo: ‘foo’ } const proxy = new Proxy(target, { get(target, name) { return ‘bar’ } }) プロパティアクセスを上書きする場合 console.log(target.foo) #=> foo console.log(proxy.foo) #=> bar Proxy 経由でのアクセスのみ上書きされる ※ Babel 未対応
Slide 16
Slide 16 text
Proxy API [2/2] Proxy API で上書き可能な処理な例 名前 上書きできる処理 get obj[‘key’] set obj[‘key’] = value has ’key’ in obj apply obj() constructor new obj() enumerate for (var key in obj) { ... }
Slide 17
Slide 17 text
Reflect API Proxy の各処理に対応する関数を提供する API const target = { foo: ‘foo’ } const proxy = new Proxy(target, { get(target, name) { return Reflect.get(target, name) } }) Proxy とセットで用いると有用 console.log(target.foo) #=> foo console.log(proxy.foo) #=> foo Proxy から本来の処理に移譲できている
Slide 18
Slide 18 text
Fin. ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts