Angular#Kanazawa

80
Angularでつくる Webアプリケーション

Transcript of Angular#Kanazawa

Page 1: Angular#Kanazawa

Angularでつくる Webアプリケーション

Page 2: Angular#Kanazawa

Kenichi Kanai

@can_i_do_web

AngularJS Japan User Group 管理人Web先端技術味見部部長

Page 3: Angular#Kanazawa
Page 4: Angular#Kanazawa

AngularJS Japan User Group #ng_jp

Page 5: Angular#Kanazawa

facebook.com/ajimibu

twitter.com/ajimibu #ajimibu

Page 6: Angular#Kanazawa

HTML5 Experts.jp #html5exp

Page 7: Angular#Kanazawa

Basic

つくってみた

Plugin

Tools

Angular2

Agenda

Page 8: Angular#Kanazawa

https://angularjs.org/

Page 9: Angular#Kanazawa

Google Trends

Page 10: Angular#Kanazawa

Features

Fullstack

HTML enhanced

Page 11: Angular#Kanazawa

Concepts

Two way data binding

Template Engine

Ajax Support

Routing

Test

Security

Page 12: Angular#Kanazawa

得意なこと

CRUD系のアプリケーション

管理画面・マイページ

ハイブリッドアプリケーション

Page 13: Angular#Kanazawa

苦手なこと

モバイル向けアプリケーション※

ゲーム等のグラフィックやエフェクト

いわゆるWebサイト

※ 改善はされてきています

Page 14: Angular#Kanazawa

一番最初の Angular

Page 15: Angular#Kanazawa

built-in directive

Page 16: Angular#Kanazawa

DOM 操作 (一部)

ng-bind

ng-bind-html

ng-repeat

ng-show / hide / if

ng-switch /

ng-switch-when

a

textarea

select /

ng-options

form

input[type=“xxx”]

Page 17: Angular#Kanazawa

Event

ng-click

ng-dblclick

ng-change

ng-checked

ng-mousedown

ng-mouseenter

ng-mouseleave

ng-mouseover

ng-mouseup

ng-submit

Page 18: Angular#Kanazawa

step2

Page 19: Angular#Kanazawa

step2

Page 20: Angular#Kanazawa

Form Validation

required ( = ng-required)

min / max ( = ng-min / ng-max)

ng-minlength

ng-maxlength

ng-pattern

ng-true-value

ng-false-value

Page 21: Angular#Kanazawa

step3

Page 22: Angular#Kanazawa

step3

Page 23: Angular#Kanazawa

Form Validation

form[name].input[name].$valid

form[name].input[name].$invalid

form[name].input[name].$error.required

form[name].input[name].$error.max

childForm[name].$error.minlength

form[name].childForm[name].$valid

Page 24: Angular#Kanazawa

step4

Page 25: Angular#Kanazawa

step4

Page 26: Angular#Kanazawa

Form Validation

check box email number radio text url text

area select

required ◯ ○ ○ ○ ○ ○

min ○

max ○

ng-minlength ○ ○ ○ ○ ○

ng-maxlength ○ ○ ○ ○ ○

ng-pattern ○ ○

Page 27: Angular#Kanazawa

Filter

currency

date

filter

json

limitTo

lowercase

number

orderBy

uppercase

Page 28: Angular#Kanazawa

Filter

Page 29: Angular#Kanazawa

ng core - function

Page 30: Angular#Kanazawa

ng core - function

angular.bind

angular.bootstrap

angular.copy

angular.element

angular.equals

angular.extend

angular.forEach

angular.fromJson

angular.identity

angular.injector

angular.isArray

angular.isDate

angular.isDefined

angular.isElement

angular.isFunction

angular.isNumber

angular.isObject

angular.isString

angular.isUndefined

angular.lowercase

angular.merge

angular.module

angular.noop

angular.reloadWithDebugInfo

angular.toJson

angular.uppercase

Page 31: Angular#Kanazawa

Model View Controller

Page 32: Angular#Kanazawa

Model

データ

ビジネスロジック

Page 33: Angular#Kanazawa

View

Template -> HTML

Page 34: Angular#Kanazawa

Controller

Scope 初期化

イベントの受け渡し

Page 35: Angular#Kanazawa

MVC - before

Page 36: Angular#Kanazawa

MVC - after

Page 37: Angular#Kanazawa

MVC - after

Page 38: Angular#Kanazawa

Service

Page 39: Angular#Kanazawa

Service

factory

service

provider

constant

value

Page 40: Angular#Kanazawa

Scope

Page 41: Angular#Kanazawa

Scope

Page 42: Angular#Kanazawa

Scope

Page 43: Angular#Kanazawa

Scope

Page 44: Angular#Kanazawa

Custom Directive

Page 45: Angular#Kanazawa

Web Components

Custom Elements

Shadow DOM

Templates

HTML Imports

Page 46: Angular#Kanazawa

Web Components

https://html5experts.jp/1000ch/11142/  

Page 47: Angular#Kanazawa

Custom Directive

Custom Element

Custom Attribute

From Class Name (CSS)

Page 48: Angular#Kanazawa

一番最初の Custom Directive

Page 49: Angular#Kanazawa

Custom Directive

Page 50: Angular#Kanazawa

Component

Page 51: Angular#Kanazawa

Routing

Page 52: Angular#Kanazawa

Routing

ngRoute

AngularUI Router

Component Router

Page 53: Angular#Kanazawa

http://angular-ui.github.io/ui-router/site/#/api/ui.router

Page 54: Angular#Kanazawa

https://github.com/angular/router

Page 55: Angular#Kanazawa

基礎おわり

Page 56: Angular#Kanazawa

Plugin

Page 57: Angular#Kanazawa

https://angular-ui.github.io/

Page 58: Angular#Kanazawa

http://ngmodules.org/

Page 59: Angular#Kanazawa

Tools

Page 60: Angular#Kanazawa

https://nodejs.org/en/

Page 61: Angular#Kanazawa

http://gruntjs.com/

Page 62: Angular#Kanazawa

http://gulpjs.com/

Page 63: Angular#Kanazawa

http://bower.io/

Page 64: Angular#Kanazawa

http://yeoman.io/

Page 65: Angular#Kanazawa

https://github.com/broccolijs/broccoli

Page 66: Angular#Kanazawa

http://brunch.io/

Page 67: Angular#Kanazawa

つくってみた

Page 68: Angular#Kanazawa

つくってみた

yeoman でテンプレート作成

grunt でサーバ起動

Page 69: Angular#Kanazawa
Page 70: Angular#Kanazawa

about Angular2

Component ベース

新しい構文

Universal JavaScript

Page 71: Angular#Kanazawa

Angular2 Demo

Page 72: Angular#Kanazawa

migration to Angular2

Page 73: Angular#Kanazawa

FAQ

Page 74: Angular#Kanazawa

Why “ng-“

“ng” sounds like “angular”

Page 75: Angular#Kanazawa

“ng-“ は HTML5 の構文的に NG!

data-ng-repeat で OK!

Page 76: Angular#Kanazawa

SEO

基本無理です...

Page 77: Angular#Kanazawa

MVWって?

Model

View

Whatever (?)

MVC でも MVVM でも何でもいいからコード書こうぜ!

Page 78: Angular#Kanazawa

Angular1 のサポート期間は?

みんなが Angular2 になるまで(!?)

Page 79: Angular#Kanazawa

Enjoy Angular!

Page 80: Angular#Kanazawa

Thank you!

@can_i_do_web