SlideShare une entreprise Scribd logo
1  sur  14
簡単AngularJS
5/23(土)【初心者向け】関西AngularJS 勉強会 1
牧 昂拡(マキ タカヒロ)
株式会社グラッドキューブ エンジニア
Webサイト解析ASP「SiTest」の開発をしています
自己紹介
2
本日の内容
1.DI(依存性注入)とは?
2.Directiveとは?
3.NoJSで簡単フォームバリデーション
3
1.DI(依存性注入)とは?
依存性の注入(英: Dependency injection)とは、
コンポーネント間の依存関係をプログラムのソースコード
から排除し、外部の設定ファイルなどで注入できるように
するソフトウェアパターンである(Wikipediaより)
4
なるほど、わからん
5
AngularJSではどう書くの?
(function(){
var app;
app = angular.module("MyApp");
app.controller(“HogeController",
function($scope){
$scope.initialize = function(){
console.log("hoge!");
};
}
);
}).call(this);
6
JSを難読化する場合は?
(function(){
var app;
app = angular.module("MyApp");
app.controller("FugaController", [“$scope",
function($scope){
$scope.initialize = function(){
console.log("fuga!");
};
}
]);
}).call(this);
7
でもめんどくさいよね
そんなあなたに「ng-annotate」(ngmin)
npmからインストールできます
DI部分を文字列宣言しなくても
自動的に変換してくれる便利ツール
(https://github.com/olov/ng-annotate) 8
DIまとめ
DIは宣言したオブジェクトを
Angularが上手いこと渡してやる機能!
文字列でオブジェクトを指定する
記法を推奨!
めんどくさかったらng-annotateを使え!
9
2.Directiveとは?
双方向バインディングを実現するため
のコアな機能
ModelとViewを繋ぐ役割
DOMの振る舞いを自由に作れる
CustomDirective最強
10
超便利Directive
ngApp - これがないと始まらない
angular.bootstrapすれば一応なくても使える
ngBind - バインディングするなら基本はこれ
ngModel - inputで大活躍、
Viewの変更が随時Modelのオブジェクトに反映される
ngClick - クリックした時に関数実行したいならこれ
ngShow(ngHide) - 式を評価してtrueなら表示(非表示)してくれる
動的に表示したい時に便利
ngInclude - パスで指定したテンプレートを動的に読み込む
11
// CustomDirective
(function(){
var app;
app = angular.module("MyApp");
app.directive("binding", [function(){
return {
restrict: "C",
scope: true,
template: "<span>{{obj()}}</span>",
controller: ["$scope", "$element", “$attrs",
function($scope, $element, $attrs){
$scope.obj = function(){
return "Hoge!";
};
}
]
};
}]);
}).call(this); 12
3.NoJSで作る
簡単フォームバリデーション
HTML(Template)だけで作れます!
AngularJSを読み込むだけ!
工夫すれば確認画面まで作れる!
JSを書くともっと幅が広がる!
13
ご静聴ありがとうございました!
14

Contenu connexe

Tendances

AngularJSの高速化
AngularJSの高速化AngularJSの高速化
AngularJSの高速化Kon Yuichi
 
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発 daisuke-a-matsui
 
Angular js開発事例
Angular js開発事例Angular js開発事例
Angular js開発事例Shun Takeyama
 
angular1脳で見るangular2
angular1脳で見るangular2angular1脳で見るangular2
angular1脳で見るangular2Moriyuki Arakawa
 
開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJS開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJSMizuho Sakamaki
 
さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)Kazuhiro Yoshimoto
 
Laravel Blade×vue.js 混在させる場合の注意点
Laravel Blade×vue.js 混在させる場合の注意点Laravel Blade×vue.js 混在させる場合の注意点
Laravel Blade×vue.js 混在させる場合の注意点誠一郎 栗原
 
Enterprise x AngularJS
Enterprise x AngularJSEnterprise x AngularJS
Enterprise x AngularJSKenichi Kanai
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化Toshio Ehara
 
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)Mitsuru Ogawa
 
AngularJSでの非同期処理の話
AngularJSでの非同期処理の話AngularJSでの非同期処理の話
AngularJSでの非同期処理の話Yosuke Onoue
 
エンタープライヤーのためのWeb Componentsハンズオン
エンタープライヤーのためのWeb ComponentsハンズオンエンタープライヤーのためのWeb Componentsハンズオン
エンタープライヤーのためのWeb ComponentsハンズオンMitsuru Ogawa
 
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティスコンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、ReactのベストプラクティスとバッドプラクティスKohei Asai
 
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・AndroidアプリハンズオンJavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・AndroidアプリハンズオンKazuhiro Yoshimoto
 
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオンJavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオンKazuhiro Yoshimoto
 

Tendances (20)

AngularJS入門
AngularJS入門AngularJS入門
AngularJS入門
 
AngularJSの高速化
AngularJSの高速化AngularJSの高速化
AngularJSの高速化
 
React.js + Flux
React.js + FluxReact.js + Flux
React.js + Flux
 
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発
 
Angular js開発事例
Angular js開発事例Angular js開発事例
Angular js開発事例
 
angular1脳で見るangular2
angular1脳で見るangular2angular1脳で見るangular2
angular1脳で見るangular2
 
開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJS開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJS
 
さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)
 
Laravel Blade×vue.js 混在させる場合の注意点
Laravel Blade×vue.js 混在させる場合の注意点Laravel Blade×vue.js 混在させる場合の注意点
Laravel Blade×vue.js 混在させる場合の注意点
 
AngularJS 概説
AngularJS 概説AngularJS 概説
AngularJS 概説
 
Enterprise x AngularJS
Enterprise x AngularJSEnterprise x AngularJS
Enterprise x AngularJS
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
 
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
 
AngularJSでの非同期処理の話
AngularJSでの非同期処理の話AngularJSでの非同期処理の話
AngularJSでの非同期処理の話
 
20160927 reactmeetup
20160927 reactmeetup20160927 reactmeetup
20160927 reactmeetup
 
ASP.NET MVC 1.0
ASP.NET MVC 1.0ASP.NET MVC 1.0
ASP.NET MVC 1.0
 
エンタープライヤーのためのWeb Componentsハンズオン
エンタープライヤーのためのWeb ComponentsハンズオンエンタープライヤーのためのWeb Componentsハンズオン
エンタープライヤーのためのWeb Componentsハンズオン
 
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティスコンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
 
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・AndroidアプリハンズオンJavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
 
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオンJavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン
 

Similaire à 簡単AngularJS(関西AngularJS勉強会)

Automatic api document generation 101
Automatic api document generation 101Automatic api document generation 101
Automatic api document generation 101LINE Corporation
 
AngularJS で ハイスピードSI
AngularJS で ハイスピードSIAngularJS で ハイスピードSI
AngularJS で ハイスピードSIKoichiro Nishijima
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springkounan13
 
RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料pyar6329
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発tak-nakamura
 
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)pinmarch_t Tada
 
One-time Binding & $digest
One-time Binding & $digestOne-time Binding & $digest
One-time Binding & $digestHayashi Yuichi
 
~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~Oda Shinsuke
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Koji Hasegawa
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情我が家のフロントエンド開発事情
我が家のフロントエンド開発事情Naoki Yamada
 
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめVisual Studio 2017 事はじめ
Visual Studio 2017 事はじめHideaki Aoyagi
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」Hiroyuki Ohnaka
 
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界オラクルエンジニア通信
 
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発Satoru Yamaguchi
 

Similaire à 簡単AngularJS(関西AngularJS勉強会) (20)

Automatic api document generation 101
Automatic api document generation 101Automatic api document generation 101
Automatic api document generation 101
 
AngularJS で ハイスピードSI
AngularJS で ハイスピードSIAngularJS で ハイスピードSI
AngularJS で ハイスピードSI
 
AndroidでDIxAOP
AndroidでDIxAOPAndroidでDIxAOP
AndroidでDIxAOP
 
APICのREST API入門
APICのREST API入門APICのREST API入門
APICのREST API入門
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
 
Alt01-LT
Alt01-LTAlt01-LT
Alt01-LT
 
RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
 
DevOps を前提としたユーザー インターフェイスの構造解析
DevOps を前提としたユーザー インターフェイスの構造解析DevOps を前提としたユーザー インターフェイスの構造解析
DevOps を前提としたユーザー インターフェイスの構造解析
 
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
 
One-time Binding & $digest
One-time Binding & $digestOne-time Binding & $digest
One-time Binding & $digest
 
~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
 
CordovaでAngularJSアプリ開発
CordovaでAngularJSアプリ開発CordovaでAngularJSアプリ開発
CordovaでAngularJSアプリ開発
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
 
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめVisual Studio 2017 事はじめ
Visual Studio 2017 事はじめ
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
 
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
 
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
 

Plus de Takahiro Maki

ほぼ1人でAzureからGCPに移行した話
ほぼ1人でAzureからGCPに移行した話ほぼ1人でAzureからGCPに移行した話
ほぼ1人でAzureからGCPに移行した話Takahiro Maki
 
Onsen UIでアプリケーション作ってみた
Onsen UIでアプリケーション作ってみたOnsen UIでアプリケーション作ってみた
Onsen UIでアプリケーション作ってみたTakahiro Maki
 
フロントエンドエンジニアがフルスタックエンジニアもどきになる話
フロントエンドエンジニアがフルスタックエンジニアもどきになる話フロントエンドエンジニアがフルスタックエンジニアもどきになる話
フロントエンドエンジニアがフルスタックエンジニアもどきになる話Takahiro Maki
 
最近流行りのビルドツールとは
最近流行りのビルドツールとは最近流行りのビルドツールとは
最近流行りのビルドツールとはTakahiro Maki
 
WebComponentsとPolymer
WebComponentsとPolymerWebComponentsとPolymer
WebComponentsとPolymerTakahiro Maki
 
jspmを使ってES6を始めてみよう
jspmを使ってES6を始めてみようjspmを使ってES6を始めてみよう
jspmを使ってES6を始めてみようTakahiro Maki
 

Plus de Takahiro Maki (6)

ほぼ1人でAzureからGCPに移行した話
ほぼ1人でAzureからGCPに移行した話ほぼ1人でAzureからGCPに移行した話
ほぼ1人でAzureからGCPに移行した話
 
Onsen UIでアプリケーション作ってみた
Onsen UIでアプリケーション作ってみたOnsen UIでアプリケーション作ってみた
Onsen UIでアプリケーション作ってみた
 
フロントエンドエンジニアがフルスタックエンジニアもどきになる話
フロントエンドエンジニアがフルスタックエンジニアもどきになる話フロントエンドエンジニアがフルスタックエンジニアもどきになる話
フロントエンドエンジニアがフルスタックエンジニアもどきになる話
 
最近流行りのビルドツールとは
最近流行りのビルドツールとは最近流行りのビルドツールとは
最近流行りのビルドツールとは
 
WebComponentsとPolymer
WebComponentsとPolymerWebComponentsとPolymer
WebComponentsとPolymer
 
jspmを使ってES6を始めてみよう
jspmを使ってES6を始めてみようjspmを使ってES6を始めてみよう
jspmを使ってES6を始めてみよう
 

簡単AngularJS(関西AngularJS勉強会)

Notes de l'éditeur

  1. 牧昂拡と申します 株式会社グラッドキューブでエンジニアやっていて Webサイト解析ASP「SiTest」の開発をしています そのSiTestではAngularJSを採用しています
  2. 本日の内容としては3点 DIとは? Directiveとは? JSを使わずにフォームバリデーション作れますよ の3本立てです
  3. まずDIとは
  4. なるほど、よくわからんとなるわけです じゃあ、AngularJSではどうなってるのか
  5. こんな感じに書きます コントローラのコールバックで$scopeという引数をとっているわけですが、 これをAngularが上手く解釈して$socpeオブジェクトをいれてくれるわけです すごいよね、Angular ただしこの書き方には欠点があって、JSを難読化するとダメになる じゃあどうすればいいか
  6. このように文字列として定義してやればいいわけです 文字列は難読化しても変わらないので、それを利用して DIの宣言をしているわけです
  7. ただ、ネイティブでこんなクソ長いコード書いてたら いやになってきますよね? そんなあなたにngminというnpmパッケージ DI部分を文字列宣言しなくても自動的に変換してくれます
  8. DIのまとめです
  9. 2つ目、Directiveとはなにか Angularの売りでもある双方向バインディングを実現するためのコアな機能 ModelとViewをつなぐ役割をしています また、CustomDirectiveを定義してDOMの振る舞いを自由に作れます CustomDirective最強
  10. Angularが最初から用意してくれているDirectiveの中で 便利そうなやつを紹介します
  11. CusotmDirectiveを作る場合はこのように作成します
  12. 3つ目、JS無しで簡単フォームバリデーションが作れます! 用意するのはHTMLだけ Angularは読み込みましょう 頑張れば確認画面も作れちゃいます JSを書くと更に幅が広がります