SlideShare a Scribd company logo
Ionic 으로 모바일앱 만들기
#2. MVC, Component(css)
ABCD, 스노우키위 한성일
1. 콘솔 사용방법(윈도우, 맥)
2. 작업 환경 설정
3. 아이오닉 CSS 컴포넌트
4. MVC 사용
코스
1. 콘솔 사용방법(윈도우, 맥)
익숙치 않은 콘솔
알고나면 어렵지 않아요.
전체는 너무 많고
지금 필요한 것들만 알아보죠.
콘솔 사용 방법
1. 시작 버튼
2. 프로그램 및 파일 검색
3. cmd
cmd
작업폴더 설정 (맥)
1
2 3
mkdir
make directory
디렉토리를 생성하는 명령어
$ mkdir ~/Documents/test
mkdir C:test
C드라이브 아래에 test 라는 폴더를 생성
~ 자신의 홈디렉토리의 Document 폴더에 test 라는 폴더 생성
cd 1
change directory
cd c:ionic-space
cd ~/Document/ionic-space
C드라이브 test라는 폴더로 이동합니다.
Document의 test 폴더로 이동합니다.
cd 2
change directory
cd ..
한칸 뒤로 나옵니다. 윈도우에서는 c: 로
맥에서는 Document 폴더로 이동합니다.
~
자기의 홈 디렉토리를 나타냅니다.
(리눅스에서는 /home/아이디)
ex) /Users/자신의 아이디
하면 자신의 홈으로 이동합니다.
cd ~
ls
list directory
ls 현재 경로의 모든 파일과 디렉토리 출력
유닉스(맥, 리눅스) 계열에서 사용
dir
directory
현재 경로의 모든 파일과 디렉터로 출력
윈도우 계열에서 사용
절대경로, 상대경로
절대경로
/Users/jamie/Document
상대경로
cd Document/test
만약 /Users/jamie 경로에 위치하고 있다면..
로 이동 가능
tip
cd /Use
Use 까지만 누리고 ‘tab’ 버튼을 눌르면
cd /Users
가 자동 완성됩니다. 폴더 파일명 모두 적용 됩니다.
더 알고 싶다면
http://passing2.tistory.com/56
http://mactraining.tistory.com/148
2. 작업 환경 설정
작업폴더 이동
cd ~/ionic-space
cd c:ionic-space
ionic start blankApp blank
작업 폴더로 이동 합시다.
blankApp 이 없다면 프로젝트를 생성해줍니다.
app.js 수정
blankApp/www/app.js 를 수정합니다.
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('test', {
url: "/test",
templateUrl: "templates/test.html"
})
})
index.html 수정
blankApp/www/index.html 를 수정합니다.
<body ng-app=“starter">
<ion-nav-bar class="bar bar-header bar-positive">
<ion-nav-back-button class="button-clear">
<i class="ion-arrow-left-c"></i> Back
</ion-nav-back-button>
</ion-nav-bar>
<!— 네비게이션 뷰 -->
<ion-nav-view></ion-nav-view>
</body>
bar-positive 상단바 색상
<i class="ion-arrow-left-c"></i> Back 백버튼 출력
test.html 추가
blankApp/www/templates/test.html 를 추가합니다.
<ion-view view-title="Components Test">
<ion-content>
</ion-content>
</ion-view>
<ion-content>
<!-- 컨텐츠는 여기 배치 됩니다. -->
</ion-content>
에러없이 뜨는지 확인
ionic serve
/#/test
디버깅
크롬 개발자 도구 사용
3. 아이오닉 CSS 컴포넌트
컴포넌트 Docs
http://ionicframework.com/docs/components/
Sub Header
blankApp/www/templates/test.html 을 수정합니다.
<!-- 서브 헤더 -->
<div class="bar bar-header">
<h1 class="title">Header</h1>
</div>
<ion-content>
<!-- 여기에 입력 -->
</ion-content>
Footer
<ion-view view-title="Components Test">
</ion-view>
<!-- footer -->
<div class="bar bar-footer bar-balanced">
<div class="title">Footer</div>
</div>
Buttons<!-- 버튼 -->
<div class="content padding has-header">
<p>
<button class="button button-small button-light">button-light</button>
</p>
<p>
<button class="button button-small button-stable">button-stable</button>
</p>
<p>
<button class="button button-small button-positive">button-positive</button>
</p>
<button class="button button-full button-positive">
Full Width Block Button
</button>
<p>
<button class="button button-outline button-light">button-light</button>
</p>
<p>
<button class="button button-outline button-stable">button-stable</button>
</p>
<p>
<button class="button button-outline button-positive">button-positive</button>
</p>
<p>
<button class="button button-clear button-light">button-light</button>
</p>
<p>
<button class="button button-clear button-stable">button-stable</button>
</p>
<p>
<button class="button button-clear button-positive">button-positive</button>
</p>
</div>
Buttons
Header Buttons
<div class="bar bar-header">
<button class="button button-icon icon ion-navicon"></button>
<div class="h1 title">Header Buttons</div>
<button class="button button-clear button-positive">Edit</button>
</div>
Button Bar
<div class="bar bar-header">
<div class="button-bar">
<a class="button">First</a>
<a class="button">Second</a>
<a class="button">Third</a>
</div>
</div>
List
<div class="list">
<a class="item item-avatar" href="#">
<img src="http://jindorishop.com/board/data/file/sale/2109181960_eb40320a_DSC01132.JPG">
<h2>Venkman</h2>
<p>Back off, man. I'm a scientist.</p>
</a>
<a class="item item-avatar" href="#">
<img src="http://jindorishop.com/board/data/file/sale/2109181960_eb40320a_DSC01132.JPG">
<h2>Egon</h2>
<p>We're gonna go full stream.</p>
</a>
<a class="item item-avatar" href="#">
<img src="http://jindorishop.com/board/data/file/sale/2109181960_eb40320a_DSC01132.JPG">
<h2>Ray</h2>
<p>Ugly little spud, isn't he?</p>
</a>
<a class="item item-avatar" href="#">
<img src="http://jindorishop.com/board/data/file/sale/2109181960_eb40320a_DSC01132.JPG">
<h2>Winston</h2>
<p>That's a big Twinkie.</p>
</a>
</div>
Card
<div class="list card">
<div class="item item-avatar">
<img src="http://tutupash.com/site/assets/nin_logo.jpeg">
<h2>Pretty Hate Machine</h2>
<p>Nine Inch Nails</p>
</div>
<div class="item item-image">
<img src="http://ecx.images-amazon.com/images/I/41D5vU4I1NL.jpg">
</div>
<a class="item item-icon-left assertive" href="#">
<i class="icon ion-music-note"></i>
Start listening
</a>
</div>
Forms
<div class="content has-header">
<div class="list">
<label class="item item-input item-stacked-label">
<span class="input-label">First Name</span>
<input type="text" placeholder="John">
</label>
<label class="item item-input item-stacked-label">
<span class="input-label">Last Name</span>
<input type="text" placeholder="Suhr">
</label>
<label class="item item-input item-stacked-label">
<span class="input-label">Email</span>
<input type="text" placeholder="john@suhr.com">
</label>
</div>
<div class="padding">
<button class="button button-block button-positive">Create Account</button>
</div>
</div>
Toggle
<ul class="list">
<li class="item item-toggle">
HTML5
<label class="toggle toggle-positive">
<input type="checkbox" checked="">
<div class="track">
<div class="handle"></div>
</div>
</label>
</li>
<li class="item item-toggle">
CSS3
<label class="toggle toggle-calm">
<input type="checkbox" checked="">
<div class="track">
<div class="handle"></div>
</div>
</label>
</li>
</ul>
Top Icon Tabs
<!-- 서브 헤더 -->
<div class="bar bar-header">
<h1 class="title">Header</h1>
</div>
<div class="tabs-striped tabs-top tabs-background-positive tabs-color-light">
<div class="tabs">
<a class="tab-item active" href="#">
<i class="icon ion-home"></i>
Test
</a>
<a class="tab-item" href="#">
<i class="icon ion-star"></i>
Favorites
</a>
<a class="tab-item" href="#">
<i class="icon ion-gear-a"></i>
Settings
</a>
</div>
</div>
Grid 1
<!-- 서브 헤더 -->
<div class="bar bar-header">
<h1 class="title">Header</h1>
</div>
<div class="tabs-striped tabs-top tabs-background-positive tabs-color-light">
<div class="tabs">
<a class="tab-item active" href="#">
<i class="icon ion-home"></i>
Test
</a>
<a class="tab-item" href="#">
<i class="icon ion-star"></i>
Favorites
</a>
<a class="tab-item" href="#">
<div class="content has-header">
<div class="row">
<div class="col">
<div class="col-demo">.col</div>
</div>
<div class="col">
<div class="col-demo">.col</div>
</div>
<div class="col">
<div class="col-demo">.col</div>
</div>
<div class="col">
<div class="col-demo">.col</div>
</div>
</div>
Grid 2<div class="row">
<div class="col col-50">
<div class="col-demo">.col</div>
</div>
<div class="col">
<div class="col-demo">.col</div>
</div>
<div class="col">
<div class="col-demo">.col</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="col-demo">Line 1</div>
</div>
<div class="col">
<div class="col-demo">Line 1<br>Line 2<br>Line 3</div>
</div>
</div>
<div class="row">
<div class="col col-center">
<div class="col-demo">Line 1</div>
</div>
<div class="col">
<div class="col-demo">Line 1<br>Line 2<br>Line 3</div>
</div>
</div>
</div><i class="icon ion-gear-a"></i>
Settings
</a>
</div>
</div>
Icon
<ul>
<li class="ion-ionic"></li>
<li class="ion-arrow-up-a"></li>
<li class="ion-arrow-right-a"></li>
<li class="ion-arrow-down-a"></li>
<li class="ion-arrow-left-a"></li>
<li class="ion-arrow-up-b"></li>
</ul>
3. MVC 설정
MVC
controllers.js 추가
www/js 폴더에 controllers.js 파일 추가
angular.module('starter.controllers', ['starter.services'])
첫줄에 추가
services.js 파일 추가
www/js 폴더에 services.js 파일 추가
angular.module('starter.services', [])
다음라인 추가
app.js 1
www/js app.js 수정
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])
첫줄을 다음처럼 수정
app.js 2
www/js app.js 수정
.state('hello', {
url: "/hello",
templateUrl: "templates/hello.html"
})
.state("home", {
url: "/",
templateUrl: "templates/home.html"
})
내용 추가
index.html
www/templates/index.html 수정
<script src="js/controllers.js"></script>
<script src="js/services.js"></script>
<head>에 다음의 내용을 추가합니다.
html 추가
www/templates/
hello.html
home.html
파일 추가
<ion-view view-title="Hello">
<ion-content>
<p>hello</p>
</ion-content>
</ion-view>
<ion-view view-title="Home">
<ion-content>
<p>home</p>
</ion-content>
</ion-view>
파일 추가
html 추가
http://localhost:8100/#/
http://localhost:8100/#/hello
테스트
4. MVC 사용
app.js
.state('posts', {
url: "/posts",
templateUrl: "templates/posts.html",
controller: 'PostsCtrl'
})
.state('post-detail', {
url: '/posts/:postId',
templateUrl: 'templates/post-detail.html',
controller: 'PostDetailCtrl'
})
controllers.js
.controller('PostsCtrl', function($scope, Posts) {
$scope.posts = Posts.all();
})
.controller('PostDetailCtrl', function($scope, $stateParams, Posts) {
$scope.post = Posts.get($stateParams.postId);
})
services.js
.factory('Posts', function() {
var posts = [{
id: 0,
name: '진돗개',
title: '배고프다.',
image: 'http://jindorishop.com/board/data/file/sale/2109181960_eb40320a_DSC01132.JPG',
text: '안녕'
}, {
id: 1,
name: '말티즈',
title: '주인님이 언제오시나?’,
image: 'http://dogplus.petgalleria.net/files/attach/images/47825/785/149/337bec10e301a3885262719d2833336e.jpg',
text: '안녕'
},{
id: 2,
name: '푸들',
title: '후',
image: 'http://rladkfma.nflint.com/%ED%91%B8%EB%93%A4.jpg',
text: '안녕'
}];
return {
all: function() {
return posts;
},
get: function(postId) {
for (var i = 0; i < posts.length; i++) {
if (posts[i].id === parseInt(postId)) {
return posts[i];
}
}
return null;
}
};
});
posts.html
<ion-view view-title="Board">
<ion-content>
<ion-list>
<ion-item class="item-remove-animate item-avatar item-icon-right"
ng-repeat="post in posts" type="item-text-wrap" href="#/posts/{{post.id}}">
<img ng-src="{{post.image}}">
<h2>{{post.name}}</h2>
<p>{{post.title}}</p>
<p>{{post.text}}</p>
<i class="icon ion-chevron-right icon-accessory"></i>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
post-detail.html
<ion-view view-title="{{post.name}}">
<ion-content class="padding">
<img ng-src="{{post.image}}" style="width: 64px; height: 64px">
<p>
{{post.title}}
</p>
<p>
{{post.text}}
</p>
</ion-content>
</ion-view>
home.html
<ion-view view-title="Home">
<ion-content>
<a class="button icon-right" href="#/posts">Board</a>
</ion-content>
</ion-view>
결과
수고하셨습니다. :)
ABCD
http://abcds.kr
https://www.facebook.com/groups/562787713823026/
한성일
https://www.facebook.com/jamie.han.16
iheart79@gmail.com

More Related Content

PDF
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
PDF
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
PPTX
Jqm+appspresso
PDF
하이브리드앱 성능 극복
PPTX
Deview2013 track1 session7
PDF
모바일 무한 스크롤 개발
PDF
Vuejs 시작하기
PDF
Polymer, lego같이 만드는 웹어플리케이션
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Jqm+appspresso
하이브리드앱 성능 극복
Deview2013 track1 session7
모바일 무한 스크롤 개발
Vuejs 시작하기
Polymer, lego같이 만드는 웹어플리케이션

What's hot (20)

PDF
Angularjs 도입 선택 가이드
PDF
AngularJS 2, version 1 and ReactJS
PDF
혁신적인 웹컴포넌트 라이브러리 - Polymer
PDF
Polymer따라잡기
PDF
자바스크립트의 또다른 발전, Backbone.js
PDF
알아봅시다, Polymer: Web Components & Web Animations
PPTX
Angular2를 활용한 컴포넌트 중심의 개발
PDF
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
PDF
Angular Seminar [한빛미디어 리얼타임 세미나]
PDF
Polymer Codelab: Before diving into polymer
PDF
우리가 몰랐던 크롬 개발자 도구
PDF
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
PDF
Web Components & Polymer
PDF
간단한 블로그를 만들며 Django 이해하기
PPSX
스프링시큐리티와 소셜연습 이해를 위한 글
PDF
다시보는 Angular js
PDF
Front end dev 2016 & beyond
PDF
Vue SSR vs Prerender
PPTX
Angular 2 rc5 조사
PDF
처음배우는 자바스크립트, 제이쿼리 #2
Angularjs 도입 선택 가이드
AngularJS 2, version 1 and ReactJS
혁신적인 웹컴포넌트 라이브러리 - Polymer
Polymer따라잡기
자바스크립트의 또다른 발전, Backbone.js
알아봅시다, Polymer: Web Components & Web Animations
Angular2를 활용한 컴포넌트 중심의 개발
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
Angular Seminar [한빛미디어 리얼타임 세미나]
Polymer Codelab: Before diving into polymer
우리가 몰랐던 크롬 개발자 도구
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
Web Components & Polymer
간단한 블로그를 만들며 Django 이해하기
스프링시큐리티와 소셜연습 이해를 위한 글
다시보는 Angular js
Front end dev 2016 & beyond
Vue SSR vs Prerender
Angular 2 rc5 조사
처음배우는 자바스크립트, 제이쿼리 #2
Ad

Similar to Ionic으로 모바일앱 만들기 #2 (11)

PDF
Ionic으로 모바일앱 만들기 #1
PPTX
[Codelab 2017] Ionic Framework을 통한 하이브리드앱 개발하기
PDF
HIG for iOS: UI Element (Bars, Views, Controls)
PPTX
Windows8 Modern UI Style Summary
DOCX
Ionic project guide
PPTX
[124] 하이브리드 앱 개발기 김한솔
KEY
Android design guideline overview
PDF
2011웹표준[04] 실전예제(네비게이션,버튼,박스,포지션)
PDF
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
PPTX
Windows Phone App Design Guide
PDF
HTML5 로 iPhone App 만들기
Ionic으로 모바일앱 만들기 #1
[Codelab 2017] Ionic Framework을 통한 하이브리드앱 개발하기
HIG for iOS: UI Element (Bars, Views, Controls)
Windows8 Modern UI Style Summary
Ionic project guide
[124] 하이브리드 앱 개발기 김한솔
Android design guideline overview
2011웹표준[04] 실전예제(네비게이션,버튼,박스,포지션)
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Windows Phone App Design Guide
HTML5 로 iPhone App 만들기
Ad

More from 성일 한 (20)

PDF
Ionic으로 모바일앱 만들기 #4
PDF
파이어베이스 스터디
PDF
Electron 개발하기
PDF
Python 으로 Slackbot 개발하기
PDF
챗봇 시작해보기
PPTX
2016 ABCD 소개
PDF
Laravel 로 배우는 서버사이드 #5
PDF
Laravel 로 배우는 서버사이드 #4
PDF
Laravel 로 배우는 서버사이드 #3
PDF
Laravel 로 배우는 서버사이드 #2
PDF
Laravel 로 배우는 서버사이드 #1
PDF
인플루언서 마케팅 (INFLUENCER MARKETING)
PDF
Ionic으로 모바일앱 만들기 #5
PDF
Ionic으로 모바일앱 만들기 #3
PDF
처음배우는 자바스크립트, 제이쿼리 #4
PDF
처음배우는 자바스크립트, 제이쿼리 #3
PDF
처음배우는 자바스크립트, 제이쿼리 #1
PDF
CSS 선택자와 디버그
PDF
워드프레스 기초 (ABCD) #2
PDF
워드프레스 기초 (ABCD) #1
Ionic으로 모바일앱 만들기 #4
파이어베이스 스터디
Electron 개발하기
Python 으로 Slackbot 개발하기
챗봇 시작해보기
2016 ABCD 소개
Laravel 로 배우는 서버사이드 #5
Laravel 로 배우는 서버사이드 #4
Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #1
인플루언서 마케팅 (INFLUENCER MARKETING)
Ionic으로 모바일앱 만들기 #5
Ionic으로 모바일앱 만들기 #3
처음배우는 자바스크립트, 제이쿼리 #4
처음배우는 자바스크립트, 제이쿼리 #3
처음배우는 자바스크립트, 제이쿼리 #1
CSS 선택자와 디버그
워드프레스 기초 (ABCD) #2
워드프레스 기초 (ABCD) #1

Ionic으로 모바일앱 만들기 #2