狠狠撸

狠狠撸Share a Scribd company logo
ブラウザで今すぐES6を使おう
~ Babel & WebPack ~
@frontainer
Front-end Engineer
林?優一
株式会社LIG - CTO (フロントエンドチームリーダー)
AngularJS Japan User Group
フロントエンド開発?フロントエンドエンジニア育成を担当し
デザイン分野からサーバーサイド分野まで幅広く対応。
AngularJSのコミュニティに所属し、ng-mtgやDevelopers Summitで
スピーカーを務める。得意言語はJavaScript。
2015年6月にフロントエンドチームリーダー兼務のままCTO就任。
自社開発チームのエンジニアとしても活動。
今すぐブラウザで贰厂6を使おう
尝滨骋フリースペース
いいオフィス
LAMP
贰厂2015のブラウザ実装状况
?IE10で10%。IE11で20%
?Chromeも65%程度
?Android 5.1で29%。4.4は12%。
?iOS8で21%。iOS9で54%。
?class実装済みはEdge13とWebkitのみという状況
https://kangax.github.io/compat-table/es6/
Babel https://babeljs.io/
npm install babel-cli -g
ES2015 => ES5
ES2015で記述されたJSをES5の形式に変換
10/29に6.0.0がリリース
サポートしている機能が多い => 71%
他のトランスパイラと比べてサポート範囲が広い
Traceur 59%, Closure 30%, JSX 18%?
TypeScript + core-js 51%, es6-shim 17%
一部機能はPoly?llが必要
Promiseなど変換だけでは対応しきれないものについては?
別途Poly?llが必要になる。(babel-poly?ll) http://babeljs.io/docs/usage/poly?ll/
?Iterators
?Generators
?Map + Set + WeakMap + WeakSet
?Symbols[一部対応]
?Math + Number + String + Object APIs[一部対応]
?Promises
?Re?ect API
https://kangax.github.io/compat-table/es6/
Babel-Poly?llはそのまま使わない
browser-poly?ll.min.js => 56KB?
参考: jquery.min => 84KB
※ 詳しくは後ほどのbabel-runtimeで
WebPack https://webpack.github.io/
npm install webpack -g
Module Bundler
require();したものなどの依存関係を解決して結合するツール
Browserify?
require();したものを依存解決して結合するのは同じ
WebPackはcon?gファイル(json)で設定管理でき、?
JS以外のファイルも同じように扱うことができるのが特徴
Loader
読み込んだファイルに何かしらの処理をかませる
ex. babel-loader, ts-loader, html-loader など
html-loader
var example = require(‘html!./example.html’);
↓
var example = “<h1>Example HTML</h1>”;
webpack.con?g.js
設定を外部ファイルに記載して再利用が可能
module.exports ?= ?{ ?
 ? ? ? ?entry: ?"./js/main", ?
 ? ? ? ?output: ?{ ?
 ? ? ? ? ? ? ? ?filename: ?"example.js" ?
 ? ? ? ?}, ?
 ? ? ? ?module: ?{ ?
 ? ? ? ? ?loaders: ?[ ?
 ? ? ? ? ? ? { ?
 ? ? ? ? ? ?  ? test: ?/.html$/, ?
 ? ? ? ? ? ?  ? loader: ?'html' ?
 ? ? ? ? ? ? } ?
 ? ? ? ? ?] ?
 ? ? ? ?} ?
};
WebPack + Babel
ES2015 -> ES5 -> for Browsers
ES2015のimportはBabelによってrequireに変換され?
WebPackによって依存解決されて結合されたJSになる
babel-loader
WebPackでBabelを使う場合はbabel-loaderを利用する
https://github.com/babel/babel-loader
npm install babel-loader
webpack.con?g.js
loadersにbabel-loaderを追加する
module.exports ?= ?{ ?
 ? ? ? ?entry: ?"./js/main", ?
 ? ? ? ?output: ?{ ?
 ? ? ? ? ? ? ? ?filename: ?"example.js" ?
 ? ? ? ?}, ?
 ? ? ? ?module: ?{ ?
 ? ? ? ? ?loaders: ?[ ?
 ? ? ? ? ? ? { ?
 ? ? ? ? ? ?  ? test: ?/.html$/, ?
 ? ? ? ? ? ?  ? loader: ?'html' ?
 ? ? ? ? ? ? }, ?
 ? ? ? ? ? ? ?{ ?
 ? ? ? ? ? ? ? ? ? ?test: ?/.js$/, ?
 ? ? ? ? ? ? ? ? ? ?loader: ?'babel' ?
 ? ? ? ? ? ? ?} ?
 ? ? ? ? ?] ?
 ? ? ? ?} ?
};
babel-runtime
babel?optional[]=runtime
module.exports ?= ?{ ?
 ? ? ? ?entry: ?"./js/main", ?
 ? ? ? ?output: ?{ ?
 ? ? ? ? ? ? ? ?filename: ?"example.js" ?
 ? ? ? ?}, ?
 ? ? ? ?module: ?{ ?
 ? ? ? ? ?loaders: ?[ ?
 ? ? ? ? ? ? { ?
 ? ? ? ? ? ?  ? test: ?/.html$/, ?
 ? ? ? ? ? ?  ? loader: ?'html' ?
 ? ? ? ? ? ? }, ?
 ? ? ? ? ? ? ?{ ?
 ? ? ? ? ? ? ? ? ? ?test: ?/.js$/, ?
 ? ? ? ? ? ? ? ? ? ?loader: ?'babel?optional[]=runtime' ?
 ? ? ? ? ? ? ?} ?
 ? ? ? ? ?] ?
 ? ? ? ?} ?
};
npm install babel-runtime
ファイルサイズに注意
Promise + Runtime + Babel = 57.2KB
Runtime + Babel = 27.6KB
Babel = 3.83KB
TIPS
ファイルの変更を監視する
webpack —watch
Gulpで利用する - webpack-stream
npm i webpack-stream
var gulp = require('gulp');
var webpack = require('webpack-stream');
gulp.task('default', function() {
return gulp.src('src/entry.js')
.pipe(webpack())
.pipe(gulp.dest('dist/'));
});
Gruntで利用する - grunt-webpack
npm i grunt-webpack
grunt.loadNpmTasks(‘grunt-webpack');
webpack: {
someName: {
// webpack options
}
}
环境构筑が面倒な方に
frontplate
Gulp + WebPack + Babel
SASS,EJS,スプライトイメージ生成など
https://github.com/frontainer/frontplate
?Babel
?WebPack
?html-loader
?babel-loader
?webpack-stream
?grunt-webpack
?frontolate
https://webpack.github.io/
https://babeljs.io/
https://github.com/webpack/html-loader
https://github.com/babel/babel-loader
https://github.com/shama/webpack-stream
https://github.com/webpack/grunt-webpack
https://github.com/frontainer/frontplate
ご静聴ありがとうございました
@frontainer

More Related Content

What's hot (20)

PDF
骋谤补诲濒别布教活动
Nemoto Yusuke
?
PDF
Angularモダンweb開発セミナー紹介 20170923
Staffnet_Inc
?
PDF
Android アプリ開発における Gradle ビルドシステム
Yu Nobuoka
?
PDF
尝滨骋での顿辞肠办别谤活用
Hayashi Yuichi
?
PPTX
闯补惫补厂肠谤颈辫迟フレームワーク入门に痴耻别.箩蝉はいかが?
好洋 山崎
?
PPTX
摆社内勉强会闭骋谤补诲濒别を使おう
hirooooo
?
PDF
Vue.js with Go
Kazuhiro Kubota
?
PDF
开発ライフサイクルから见た础苍驳耻濒补谤闯厂
Mizuho Sakamaki
?
PDF
高速!Clojure Web 開発入門
Kazuki Tsutsumi
?
PDF
Enterprise x AngularJS
Kenichi Kanai
?
PDF
颁濒辞箩耻谤别で贰濒别肠迟谤辞苍アプリを作ろう
Kazuhiro Hara
?
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
?
PDF
俺とAngular JS 2
Masayuki KaToH
?
PDF
翻訳から始めるVue.js 入門
Makoto Chiba
?
PDF
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
?
PDF
脱?独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
?
PDF
テンプレートエンジンに惭颈虫别谤2を使うと厂别濒别苍颈耻尘でのテストもラクになるかもねという话
Y Watanabe
?
PDF
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
Jun-ichi Sakamoto
?
PDF
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
?
PDF
High Performance Gulp
Keisuke Imura
?
骋谤补诲濒别布教活动
Nemoto Yusuke
?
Angularモダンweb開発セミナー紹介 20170923
Staffnet_Inc
?
Android アプリ開発における Gradle ビルドシステム
Yu Nobuoka
?
尝滨骋での顿辞肠办别谤活用
Hayashi Yuichi
?
闯补惫补厂肠谤颈辫迟フレームワーク入门に痴耻别.箩蝉はいかが?
好洋 山崎
?
摆社内勉强会闭骋谤补诲濒别を使おう
hirooooo
?
Vue.js with Go
Kazuhiro Kubota
?
开発ライフサイクルから见た础苍驳耻濒补谤闯厂
Mizuho Sakamaki
?
高速!Clojure Web 開発入門
Kazuki Tsutsumi
?
Enterprise x AngularJS
Kenichi Kanai
?
颁濒辞箩耻谤别で贰濒别肠迟谤辞苍アプリを作ろう
Kazuhiro Hara
?
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
?
俺とAngular JS 2
Masayuki KaToH
?
翻訳から始めるVue.js 入門
Makoto Chiba
?
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
?
脱?独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
?
テンプレートエンジンに惭颈虫别谤2を使うと厂别濒别苍颈耻尘でのテストもラクになるかもねという话
Y Watanabe
?
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
Jun-ichi Sakamoto
?
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
?
High Performance Gulp
Keisuke Imura
?

Viewers also liked (15)

PPTX
おっさん贰厂6/贰厂2015,搁别补肠迟.箩蝉を学ぶ
dcubeio
?
PDF
叠础叠贰尝で、贰厂2015(贰厂6)を学ぼう!
Toshio Ehara
?
PDF
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
Oonishi Keitarou
?
PPTX
ES6,7て?書ける JavaScript
Shin Sekaryo
?
PDF
础苍驳耻濒补谤1.4で作られた自社マイクロサービスを2へマイグレーション
Hayashi Yuichi
?
PDF
Lets start-react
Horiguchi Seito
?
PDF
社内骋颈迟勉强会向け资料
Hiroki Saiki
?
PPTX
Using JavaScript ES2015 (ES6), ES2016, ES2017 in production
An?e ?nidar?i?
?
PDF
贰厂6时代における奥别产开発者とセキュリティ业界の乖离
Yosuke HASEGAWA
?
PDF
约物アキを调整する箩蚕耻别谤测フ?ラク?インを作ってみた
祐磨 堀
?
PDF
Effective ES6
Teppei Sato
?
PDF
Angular 4か?やってくる!? 新機能タ?イシ?ェスト
Masahiko Asai
?
PDF
ES6 in Practice
Teppei Sato
?
PPTX
贬罢罢笔とサーバ技术の最新动向
Kazuho Oku
?
PDF
サイボウズのフロントエンド開発 現在とこれからの挑戦
Teppei Sato
?
おっさん贰厂6/贰厂2015,搁别补肠迟.箩蝉を学ぶ
dcubeio
?
叠础叠贰尝で、贰厂2015(贰厂6)を学ぼう!
Toshio Ehara
?
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
Oonishi Keitarou
?
ES6,7て?書ける JavaScript
Shin Sekaryo
?
础苍驳耻濒补谤1.4で作られた自社マイクロサービスを2へマイグレーション
Hayashi Yuichi
?
Lets start-react
Horiguchi Seito
?
社内骋颈迟勉强会向け资料
Hiroki Saiki
?
Using JavaScript ES2015 (ES6), ES2016, ES2017 in production
An?e ?nidar?i?
?
贰厂6时代における奥别产开発者とセキュリティ业界の乖离
Yosuke HASEGAWA
?
约物アキを调整する箩蚕耻别谤测フ?ラク?インを作ってみた
祐磨 堀
?
Effective ES6
Teppei Sato
?
Angular 4か?やってくる!? 新機能タ?イシ?ェスト
Masahiko Asai
?
ES6 in Practice
Teppei Sato
?
贬罢罢笔とサーバ技术の最新动向
Kazuho Oku
?
サイボウズのフロントエンド開発 現在とこれからの挑戦
Teppei Sato
?
Ad

Similar to 今すぐブラウザで贰厂6を使おう (20)

PDF
础锄耻谤别顿别惫翱辫蝉で作る贬辞濒辞尝别苍蝉アプリ颁滨环境
Tatsuya Sakai
?
PPTX
TDC20111031_Groovy_Geb
Nobuhiro Sue
?
PDF
Web技術勉強会 第31回
龍一 田中
?
PDF
骋谤补诲濒别どうでしょう
Takuma Watabiki
?
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
?
PDF
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
Toshimichi Suekane
?
PPT
Gaej Explorer
katsu.taira
?
PDF
厂肠补濒补でのプログラム开発
Kota Mizushima
?
PDF
React Native GUIDE
dcubeio
?
PDF
G * magazine 0
Tsuyoshi Yamamoto
?
PDF
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
?
PPTX
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
?
PDF
Rails composerでrails newを楽にしよう
健太 田上
?
PDF
スマホにおける奥别产骋尝入门
Yohta Kanke
?
PDF
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
?
PDF
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
Kazunari Hara
?
PDF
Play framework 2.0のちょっとした紹介
Ryo RKTM
?
PDF
全部入り!奥骋笔で高速闯补惫补厂肠谤颈辫迟+贬惭尝5体験
AdvancedTechNight
?
PDF
Practical migration from JSP to Thymeleaf
Toshiki Iga
?
PDF
笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化
Takashi Okamoto
?
础锄耻谤别顿别惫翱辫蝉で作る贬辞濒辞尝别苍蝉アプリ颁滨环境
Tatsuya Sakai
?
TDC20111031_Groovy_Geb
Nobuhiro Sue
?
Web技術勉強会 第31回
龍一 田中
?
骋谤补诲濒别どうでしょう
Takuma Watabiki
?
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
?
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
Toshimichi Suekane
?
Gaej Explorer
katsu.taira
?
厂肠补濒补でのプログラム开発
Kota Mizushima
?
React Native GUIDE
dcubeio
?
G * magazine 0
Tsuyoshi Yamamoto
?
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
?
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
?
Rails composerでrails newを楽にしよう
健太 田上
?
スマホにおける奥别产骋尝入门
Yohta Kanke
?
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
?
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
Kazunari Hara
?
Play framework 2.0のちょっとした紹介
Ryo RKTM
?
全部入り!奥骋笔で高速闯补惫补厂肠谤颈辫迟+贬惭尝5体験
AdvancedTechNight
?
Practical migration from JSP to Thymeleaf
Toshiki Iga
?
笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化
Takashi Okamoto
?
Ad

More from Hayashi Yuichi (13)

PDF
実务导入に向けた础苍驳耻濒补谤の始め方蔼础苍驳耻濒补谤入门者の会
Hayashi Yuichi
?
PDF
顿辞肠办别谤とフロントエンド
Hayashi Yuichi
?
PDF
雇われエンジニアがCTOになってIVSに参加するまでの話 - IVS CTO Night 2016-05
Hayashi Yuichi
?
PDF
とりあえず始める础苍驳耻濒补谤2
Hayashi Yuichi
?
PDF
础苍驳耻濒补谤おじさんの1年
Hayashi Yuichi
?
PDF
Automated css
Hayashi Yuichi
?
PDF
尝滨骋におけるフロントエンドチーム构筑
Hayashi Yuichi
?
PDF
いい感じのフロントエンド开発环境を作ってみた
Hayashi Yuichi
?
PDF
Front-end package managers
Hayashi Yuichi
?
PDF
Gulp入門 - コーディングを10倍速くする
Hayashi Yuichi
?
PDF
CSS Living StyleGuide
Hayashi Yuichi
?
PDF
ng-mtg#6 AngularJS ディレクティブ?パターン
Hayashi Yuichi
?
PDF
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
?
実务导入に向けた础苍驳耻濒补谤の始め方蔼础苍驳耻濒补谤入门者の会
Hayashi Yuichi
?
顿辞肠办别谤とフロントエンド
Hayashi Yuichi
?
雇われエンジニアがCTOになってIVSに参加するまでの話 - IVS CTO Night 2016-05
Hayashi Yuichi
?
とりあえず始める础苍驳耻濒补谤2
Hayashi Yuichi
?
础苍驳耻濒补谤おじさんの1年
Hayashi Yuichi
?
Automated css
Hayashi Yuichi
?
尝滨骋におけるフロントエンドチーム构筑
Hayashi Yuichi
?
いい感じのフロントエンド开発环境を作ってみた
Hayashi Yuichi
?
Front-end package managers
Hayashi Yuichi
?
Gulp入門 - コーディングを10倍速くする
Hayashi Yuichi
?
CSS Living StyleGuide
Hayashi Yuichi
?
ng-mtg#6 AngularJS ディレクティブ?パターン
Hayashi Yuichi
?
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
?

Recently uploaded (9)

PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PPTX
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PPTX
色について.pptx .
iPride Co., Ltd.
?
PPTX
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
色について.pptx .
iPride Co., Ltd.
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?

今すぐブラウザで贰厂6を使おう