SlideShare a Scribd company logo
1 of 39
Download to read offline
あの時AngularJSと出会った僕らは
春のJavaScript祭り
{{about-me}}
名前
所属
職種
Facebook
Twitter
Blog
Mail
むゆう
フリーランス
IT僧侶, Webエンジニア
http://facebook.com/muyuu/
http://twitter.com/anticyborg/
http://stackstock.net/
anticyborg@gmail.com
jQueryつらい(´・_・`)
{{DOM-select}}
$(function(){
$(‘.news .btn’).on(‘click’, function(){
$(this).parent()
.next()
.find(‘.item’)
.addClass(‘splash’);
}
});
密結合になりがち
{{view-update}}
$(function(){
$(‘.btn’).on(‘click’, function(){
// 何か色々処理
view_update(obj);
}
$(‘.prefList’).on(‘change’, function(){
// 何か色々処理
view_update(obj);
}
});
いろんなとこでDOMの更新関数
なんだかなー(´・_・`)
HTMLがテンプレート
{{html-template}}
<body ng-app>
<h1>Hello! I’m {{‘muyuu’ + ‘!!’}}</h1>
</body>
<body ng-app>
<p>1 + 2 = {{1 + 2}}</p>
</body>
{{html-template}}
双方向データバインディング
{{2way-data-binding}}
<body ng-app>
<div>
<label>name:</label>
<input type=‘text’ ng-model=‘myName’>
</div>
<p>Hello! I’m {{myName}}!!</p>
</body>
<body ng-app>
<div>
<label>name:</label>
<input type=‘text’ ng-model=‘myName’>
</div>
<p>Hello! I’m {{myName}}!!</p>
</body>
{{2way-data-binding}}
<body ng-app>
<div>
<label>name:</label>
<input type=‘text’ ng-model=‘myName’>
</div>
<p>Hello! I’m {{myName}}!!</p>
</body>
{{2way-data-binding}}
repeat
{{repeat}}
<body ng-app=‘itemApp’>
<ul ng-controller=‘itemCtrl’>
<li ng-repeat=‘item in items’>
<p>name: {{item.name}}</p>
<p>price: {{item.price}}</p>
</li>
</ul>
</body>
filter
{{filter}}
<body ng-app="itemApp">
<input type="text" ng-model="query">
<ul ng-controller="itemCtrl">
<li ng-repeat="item in items | filter:query">
<p>name: {{item.name}}</p>
<p>price: {{item.price}}</p>
</li>
</ul>
</body>
<body ng-app="itemApp">
<input type="text" ng-model="query">
<ul ng-controller="itemCtrl">
<li ng-repeat="item in items | filter:query">
<p>name: {{item.name}}</p>
<p>price: {{item.price}}</p>
</li>
</ul>
</body>
{{filter}}
<body ng-app="itemApp">
<input type="text" ng-model="query">
<ul ng-controller="itemCtrl">
<li ng-repeat="item in items | filter:query">
<p>name: {{item.name}}</p>
<p>price: {{item.price}}</p>
</li>
</ul>
</body>
{{filter}}
routing
{{routing}}
デモ
まとめ
{{まとめ}}
• 双方向データバインディングやばい
• 双方向データバインディングやばい
• 双方向データバインディングやばい
{{まとめ}}
• htmlがテンプレートになるから分かりやすい
• 双方向データバインディングやばい
• ルーティング機能でSPA
• htmlが進化する!
おわりに
世はJavaScript戦国時代
次から次に新しい
ライブラリが出てくる
「そんなにいっぱい覚えてる
時間ねーんだよ!!」
「今まだjQueryクラスのシェ
アがないから投資時間が無駄に
なるかもだし様子見」
わーかーるー
でもそれじゃ何も変われない
1歩踏み出せば必ず
何かの力になる
それを続けていけば
戦国時代を勝ち抜く力もつく
触り始めるのに敷居が凄く高い
ライブラリはそんなにない
Don’t think
Write code

More Related Content

What's hot

html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
Shumpei Shiraishi
 

What's hot (14)

Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
はじめてのVue.js
はじめてのVue.jsはじめてのVue.js
はじめてのVue.js
 
本当にあった怖いJS
本当にあった怖いJS本当にあった怖いJS
本当にあった怖いJS
 
introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)
 
Web area 2013-07-16
Web area 2013-07-16Web area 2013-07-16
Web area 2013-07-16
 
deviseを利用した認証について@Minamirb
deviseを利用した認証について@Minamirbdeviseを利用した認証について@Minamirb
deviseを利用した認証について@Minamirb
 
上へ戻る
上へ戻る上へ戻る
上へ戻る
 
JAWS-UG CLI #14 LT 【”Waiters”機能の使いドコロ】
JAWS-UG CLI #14 LT 【”Waiters”機能の使いドコロ】JAWS-UG CLI #14 LT 【”Waiters”機能の使いドコロ】
JAWS-UG CLI #14 LT 【”Waiters”機能の使いドコロ】
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
 
イベント
イベントイベント
イベント
 
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
 
Web勉強会 20120927
Web勉強会 20120927Web勉強会 20120927
Web勉強会 20120927
 
Creators'night#13 tech#2今井
Creators'night#13 tech#2今井Creators'night#13 tech#2今井
Creators'night#13 tech#2今井
 

Similar to あの時AngularJSと出会った僕らは

速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2
Nobuhiro Nakajima
 

Similar to あの時AngularJSと出会った僕らは (20)

jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
初めての Data api
初めての Data api初めての Data api
初めての Data api
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2
 
Visualforce + jQuery
Visualforce + jQueryVisualforce + jQuery
Visualforce + jQuery
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21
サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21
サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21
 
Try Jetpack
Try JetpackTry Jetpack
Try Jetpack
 
WordPressと外部APIとの連携
WordPressと外部APIとの連携WordPressと外部APIとの連携
WordPressと外部APIとの連携
 
【ネイティブアドを支えるPhantomJS】
【ネイティブアドを支えるPhantomJS】【ネイティブアドを支えるPhantomJS】
【ネイティブアドを支えるPhantomJS】
 
Knocked out in knockout js
Knocked out in knockout jsKnocked out in knockout js
Knocked out in knockout js
 
Async Enhancement
Async EnhancementAsync Enhancement
Async Enhancement
 
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsugSpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
 
WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
 
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験
 
iOS WebView App
iOS WebView AppiOS WebView App
iOS WebView App
 

More from Muyuu Fujita

Cssアニメーションとその制御
Cssアニメーションとその制御Cssアニメーションとその制御
Cssアニメーションとその制御
Muyuu Fujita
 
Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!
Muyuu Fujita
 

More from Muyuu Fujita (14)

Hello npm
Hello npmHello npm
Hello npm
 
Learn ES2015
Learn ES2015Learn ES2015
Learn ES2015
 
Start React with Browserify
Start React with BrowserifyStart React with Browserify
Start React with Browserify
 
Objective Front-End JavaScript
Objective Front-End JavaScriptObjective Front-End JavaScript
Objective Front-End JavaScript
 
小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ
 
閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは
 
JavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へJavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へ
 
非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」
 
デザイナー向け 初めてのPhp ~サイト制作に役立つtips~
デザイナー向け 初めてのPhp ~サイト制作に役立つtips~デザイナー向け 初めてのPhp ~サイト制作に役立つtips~
デザイナー向け 初めてのPhp ~サイト制作に役立つtips~
 
Cssアニメーションとその制御
Cssアニメーションとその制御Cssアニメーションとその制御
Cssアニメーションとその制御
 
WordPressで企業サイトのテーマを作る
WordPressで企業サイトのテーマを作るWordPressで企業サイトのテーマを作る
WordPressで企業サイトのテーマを作る
 
WPerのWPerによるWPerのためのPHP入門
WPerのWPerによるWPerのためのPHP入門WPerのWPerによるWPerのためのPHP入門
WPerのWPerによるWPerのためのPHP入門
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門
 
Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!
 

Recently uploaded

Recently uploaded (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

あの時AngularJSと出会った僕らは