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

本当は...仲良くなりたいES2015

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →
Avatar for Taka Sasaki Taka Sasaki
November 25, 2016

 本当は...仲良くなりたいES2015

ES2015の導入に使える資料。
既存のコードにも組み込める便利な構文集や
ES2015を最小構成で書き始める方法を記載しています。

Avatar for Taka Sasaki

Taka Sasaki

November 25, 2016

Other Decks in Technology

Transcript

  1. 自己紹介 T aka (@kashira2339) 株式会社サイバー・ バズ J ava, J ava

    S cript https://github.com/kashira2339 http://qiita.com/kashira2339
  2. ...

  3. ES 2015新機能たち A rr ows and L ex ical T

    his, C lass es, E nhanced O bject L it er als, T emp lat e S tr ings, D estru ctur ing, D efau lt + R est + S pr ead, L et + C onst, M odu les (imp ort/exp ort), P r omis es, G ener at ors... https:// babeljs.io/ do cs/l earn‑ es2015 から抜粋
  4. 変数宣言のシンタックス (let, const) f u n c t i o

    n f ( ) { { l e t x ; { v a r y = " h o g e " ; c o n s t z = " f u g a " ; / / e r r o r ! z = " f o o " ; } / / o k x = " b a r " ; c o n s o l e . l o g ( x ) ; / / b a r } c o n s o l e . l o g ( x ) ; / / e r r o r ! x i s n o t d e f i n e d c o n s o l e . l o g ( y ) ; / / h o g e }
  5. アロー 関数 l e t a r r = [

    1 , 2 , 3 ] , r e s u l t = [ ] ; / / o l d r e s u l t = a r r . m a p ( f u n c t i o n ( n ) { r e t u r n n * 1 0 ; } ) ; / / E S 2 0 1 5 r e s u l t = a r r . m a p ( n = > n * 1 0 ) ; c o n s o l e . l o g ( r e s u l t ) ; / / [ 1 0 , 2 0 , 3 0 ] l e t n u m b e r s = { s e p : ' , ' , p r i n t ( ) { c o n s t r e s u l t = a r r . r e d u c e ( ( n 1 , n 2 ) = > { r e t u r n n 1 + t h i s . s e p + n 2 ; } ) ; c o n s o l e . l o g ( r e s u l t ) ; } } ; n u m b e r s . p r i n t ( ) ; / / 1 , 2 , 3
  6. オブジェクトのプロパティ糖衣構文 l e t h e l l o =

    ( ) = > { c o n s o l e . l o g ( ' H e l l o , W e A r e J a v a S c r i p t e r s ! ' ) } ; l e t m e = { h e l l o , / / h e l l o : h e l l o p r i n t F r i e n d s ( ) { / / p r i n t F r i e n d s : f u n c t i o n ( ) { c o n s o l e . l o g ( ' ' ) ; } } ;
  7. 文字列内での変数展開 c o n s t n a m e

    = " T a k a " ; c o n s t o n e l i n e = ` H e l l o J a v a S c r i p t e r s . I ' m $ { n a m e } ! ` / / 複数行も可 c o n s t m u l t i l i n e = ` H e l l o J a v a S c r i p t e r s , I ' m $ { n a m e } ! `
  8. 分割代入 l e t [ a , , b ]

    = [ 1 , 2 , 3 ] ; c o n s o l e . l o g ( a , b ) ; / / 1 3 l e t { a , b : { b 1 , b 2 } , c } = { a : ' エー' , b : { b 1 : ' ビー イチ' , b 2 : ' ビー ニ' } , c : ' シー' } ; c o n s o l e . l o g ( a , b 1 , b 2 , c ) ; / / " エー" " ビー イチ" " ビー ニ" " シー"
  9. デフォルト引数 f u n c t i o n f

    1 ( x , y = 1 2 ) { c o n s o l e . l o g ( x + y ) ; } f 1 ( 3 ) / / 1 5 デフォルト引数 + 分割代入 f u n c t i o n f 2 ( { x , y = 1 2 } ) { c o n s o l e . l o g ( x + y ) ; } f 2 ( { x : 3 } ) ; / / 1 5
  10. 可変長引数 f u n c t i o n f

    1 ( x , . . . y ) { / / y は配列なのでl e n g t h プロパティがある c o n s o l e . l o g ( x * y . l e n g t h ) ; / / 9 } f 1 ( 3 , " o n e " , " t w o " , " t h r e e " ) ; 配列の展開 f u n c t i o n f 2 ( v 1 , v 2 , v 3 ) { c o n s o l e . l o g ( ` $ { v 1 } , $ { v 2 } a n d $ { v 3 } ` ) ; } f 2 ( . . . [ " o n e " , " t w o " , " t h r e e " ] ) ; / / " o n e , t w o a n d t h r e e "
  11. B abel 次世代 J av a S cr ipt を使うためのツー

    ル ES 2015以降の仕様で書かれたコー ドを、 ES 5までの環境で動作可能な形に変換する
  12. B abelを用いた開発をする際の最小構成 ├ ─ ─ p a c k a

    g e . j s o n ├ ─ ─ d i s t └ ─ ─ s r c ├ ─ ─ i n d e x . j s └ ─ ─ a n d m o r e . . . package.json { " s c r i p t s " : { " s t a r t " : " b a b e l s r c ‐ d d i s t ‐ ‐ p r e s e t s = l a t e s t ‐ w " , " b u i l d " : " b a b e l s r c ‐ d d i s t ‐ ‐ p r e s e t s = l a t e s t " } , " d e v D e p e n d e n c i e s " : { " b a b e l ‐ c l i " : " ^ 6 . 1 8 . 0 " , " b a b e l ‐ p r e s e t ‐ l a t e s t " : " ^ 6 . 1 6 . 0 " } }
  13. 開発を始める n p m i n s t a l

    l n p m s t a r t # s r c / の中でj s ファイルを編集する. . .
  14. B abel(babel‑cli)ができること ファイルの変更監視 (‑w, ‑‑w at ch) ファイルのminify (‑‑minified) ソー

    スマップの出力 (‑s, ‑‑s our ce‑maps) コメントを取り除く (‑‑comments) 本番環境/開発環境変数の設定 (‑‑env)
  15. ちょこっと解説 G u lp/G ru nt タスクランナー。G u lp が後発で高速で人気

    設定ファイルが G ru nt はjs on寄り,G u lp はコー ド寄り B r ows er ify r equ ir e構文が使われたjs をバンドルし、 ブラウザで読めるよう にする w ebp ack js のみならずcss やht ml,画像もモジュー ルとしてバンドルする 複数の出力ファイルが設定できる r ollup.js B r ows er ify,W ebp ackの後発で、ES 6ベー スでバンドルする 生成されるファイルが小さい
  16. 結論 ES 2015を使うためだけにあれこれツー ルは覚える必要なし 最小構成のp ackage.js onを G ist に貼っておいたよ

    https://gist.git hu b.com/kas hir a2339/a9a3b360703ccb69e 851f2b1075a7751 np mとbabel‑cliの最小構成でまずは試してみよう!
  17. おまけ ES 6と ES 2015 ? ES 5に対して ES 6と命名したものの、

    仕様策定にあまりに時間がか かった 今後は年ごとに策定された仕様を指し、2015,2016,2017...と命名さ れる import/export ブラウザで使うには ? 上述のモジュー ルバンドラから合うものを選んでみて。 ブラウザで使う目的に絞ったbu bleというトランスパイラもある https://www.np mjs.com/p ackage/bu ble
  18. 参考 B abel ( http://babeljs.io/ ) buble ( https://gitlab.com/R ich‑H

    arris/buble ) webpack ( http://webpack.github.io/ ) B rowserify ( http://browserify.org/ ) rollup.js ( http://rollupjs.org/ ) G ulp ( http://gulpjs.com/ ) G runt ( http://gruntjs.com/ ) npm ( https://www.npmjs.com/ )