SlideShare une entreprise Scribd logo
1  sur  24
Single-page Application
- 나에게 맞는 프레임워크 선택하기
2016년 5월 22일
크로키닷컴㈜ 윤상민
 경력
 디지탈아리아 : 2003~2012
 C, C++로 Adobe Flash의 모바일 버전을 개발
 크로키닷컴: 2012~
 비스킷 - 단어장 앱: 2012~2014
 나이키 컵 관리 시스템: 2013~2015
 지그재그: 2015~
발표자는…
 iOS 앱 – Swift 전환중
 안드로이드 앱 – Kotlin 고려중
 서버 – Node.js
 Amazon Web Services – EC2, RDS, CloudSearch, S3,
ElasticBeanstalk…
 웹 어플리케이션 – Bootstrap, Mithril.js, Gulp, Browserify, …
 데이터 분석 – Spark on Zeppelin
지그재그 개발 스택
 정적 페이지(1991~1993) -> JavaScript & DOM Level 0(1995) ->
Dynamic HTML(1997) -> XMLHTTP ActiveX(1999) ->
XMLHttpRequest(2000~2005) -> Ajax(2005) -> SPA
 브라우저의 페이지 이동 없이 모든 기능을 제공
 = Client-side web application, Rich web application, Modern webapp
Single-page Application 이란?
 장점
 사용자 친화적
 빠른 반응
 화면 전환 애니메이션
 서버 요청이 적음
 단점
 JavaScript 활성화가 필요함
 보안이슈
 메모리 이슈
 검색 엔진 최적화(SEO)가 어려움
 초기 구동에 시간이 걸림
SPA 장단점
 모든 어플리케이션이 로그인이 필요함 -> 검색 엔진을 고려하지 않아도
됨
 모바일 어플리케이션을 위해 이미 API 서버는 있음 -> 같은 API를
이용해서 구현할 수 있음
 API 서버는 웹 서버에 비해 구조가 단순해서 차후 한계에 이르렀을 때
다른 것으로 교체가 쉬움 (예 Node.js -> Rails)
 서버 부하가 적음
크로키의 SPA 선택 이유
SPA의 가장 큰 문제
정답이 없다
(no de facto standard)
 http://yeoman.io
 어느 정도 표준화된 프로젝트
파일을 생성해줌
 수천개의 생성기(generator)
 크로키는 초기 설정에만
사용하고 현재는 사용하지 않음.
하지만 간혹 최신 툴의 변경점을
체크하고 있음
Yeoman
 전통적인 빌드 툴
 Makefile, Ant, Maven, Gradle, Rakefile …
 Grunt
 http://gruntjs.com/
 설정 기반, 조금 더 오래되어 문서와 플러그인이 많‘았’음
 Gulp
 http://gulpjs.com/
 코드 기반으로 자유롭게 작성할 수 있음, 속도가 빠름
 크로키의 추천
 기타
 Webpack을 사용하는 경우 많은 부분을 처리해주기 때문에(파일 묶기, 최소화등) 빌드
시스템 없이 npm scripts만을 사용할 수도 있다
빌드 시스템
 원하는 라이브러리를 홈페이지가서 받아 프로젝트에 추가하는 작업을
없애줌
 Bower
 http://bower.io/
 Twitter에서 내 놓은 웹 프론트엔드 패키지 관리자
 NPM
 https://www.npmjs.com/
 Node.js에서 사용하는 백엔드 패키지 관리자이지만, 프론트엔드에도
동일하게 쓰는 경우가 늘어남
 간혹 같은 모듈의 Bower와 NPM의 패키지가 다른 경우가 있음
 크로키는 Bower -> NPM 전환중
패키지 관리자
 SPA는 기본적으로 모든 스크립트를 하나로 만들어서 패포한다.
 하지만 모든 코드를 하나의 파일에 두고 개발할 수는 없다.
 JavaScript는 기본적으로 모듈 시스템이 없다. (ECMAScript 2015
(ES6)에서 추가됨)
모듈 시스템
 Browserify
 http://browserify.org/
 Node.js에서 사용하는 CommonJS 모듈 시스템(require)을 지원 ->
Node.js용 모듈을 클라이언트에서 사용할 수 있음
 크로키에서 현재 사용중
 Webpack
 https://webpack.github.io/
 모듈을 묶어주는 역할. JavaScript 외에 CSS, 이미지도 처리해준다
 크로키는 앞으로 전환할 예정
모듈 시스템
 http://todomvc.com/
 동일한 할일 관리
예제를 통해 각종
프레임워크를 비교해
볼 수 있음
 현재 64개의
어플리케이션이 있음
MV* 프레임워크
 jQuery UI
 Dojo Toolkit
 YUI
 Ext JS
 Kendo UI
 Naver Jindo
웹 어플리케이션 초기
 http://backbonejs.org/
 비교적 초기에 인기를 끌었음
 크기가 작아서 배우기 쉽고, 수정하기 쉬움
 부족한 기능은 플러그인으로 보강
 큰 어플리케이션에는 적합하지 않다고 보임
 하지만 Backbone + React등으로 아직 사용되기도 함
 Code size (gzipped) : 7.6kb, jQuery(Zepto), Underscore 필요
 추천하지 않음
Backbone.js
 https://www.angularjs.org/
 구글 개발자에 의해 개발된 프레임워크
 MEAN(MongoDB, Express, AngularJS, Node.js)라는 명칭이 있을 정도로
가장 널리 쓰임
 Code size (gzipped) : 56k
 최적화가 쉽지 않음
 Angular 2는 거의 다른 프레임워크라고 보일 정도로 많이 바뀜
 풍부한 커뮤니티의 지원이 필요한 경우 추천
AngularJS
 https://facebook.github.io/react/
 페이스북에 의해 개발되었고, 실제로 페이스북 홈페이지에 적용되어 있음
 최근 가장 핫한 프레임워크
 View 부분만 담당하기 때문에 다른 파트를 위해 Flux(Redux),
Immutable등 다른 라이브러리를 같이 쓰게 됨
 Code size (gzipped) : 44kb
 한번 개념을 익혀두면 React Native를 통해 iOS/안드로이드 개발도 할 수
있음
 가장 빠르게 발전하고 있어서 장래성이 가장 높아보임
React
 http://emberjs.com/
 설정 보다 관례(Convention over Configuration)를 따름
 자체 프로젝트 툴이 있음
 ember new ember-quickstart
ember generate route scientists
ember generate component people-list
ember serve
ember build --env production
 Code size (gzipped) : 116kb
 데스크탑/모바일 네이티브 앱 개발과 비슷한 환경을 원할 경우 사용
Ember.js
 https://www.meteor.com/
 서버 개발을 포함하는 프레임워크(플랫폼?)
 V 부분은 Angular, React, Blaze를 사용
 서버와 클라이언트를 하나의 코드로 개발
 데이터가 클라이언트에 있는 것처럼 다루면 자동으로 서버와 동기화를
시켜줌
 여러 클라이언트 간에 동기화가 필요한 경우 고려해볼만함
Meteor
 http://mithril.js.org/
 가벼우면서도 모든 파트를 커버함
 다른 프레임워크보다 평범한 JavaScript에 가까움
 Code size (gzipped) : 7.8kb
 현재 크로키의 프로젝트에 사용중
Mithril.js
 Vue.js
 Ext js
 Cycle.js
 Polymer
 Riot.js
그외에도…
 Minification (not obfuscation)
 Sass (or Less)
 CSS Sprites
 Static asset revisioning: unicorn.css  unicorn-d41d8cd98f.css
알아두면 좋은 개념
감사합니다

Contenu connexe

Tendances

오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5Taegon Kim
 
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강 [토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강 우영 주
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJSJae Sung Park
 
Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)Junsu Kim
 
원모먼트 Vue js 적용기
원모먼트 Vue js 적용기원모먼트 Vue js 적용기
원모먼트 Vue js 적용기우현 김
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Sang Seok Lim
 
How_to_choose_the_right_framework
How_to_choose_the_right_frameworkHow_to_choose_the_right_framework
How_to_choose_the_right_frameworkJT Jintae Jung
 
[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridappNAVER D2
 
하이브리드앱 성능 극복
하이브리드앱 성능 극복하이브리드앱 성능 극복
하이브리드앱 성능 극복sung hwan Park
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJSEunYoung Kim
 
자바스크립트의 또다른 발전, Backbone.js
자바스크립트의 또다른 발전, Backbone.js자바스크립트의 또다른 발전, Backbone.js
자바스크립트의 또다른 발전, Backbone.jsJinKwon Lee
 
구글 인박스 히드라 프로그래밍
구글 인박스 히드라 프로그래밍구글 인박스 히드라 프로그래밍
구글 인박스 히드라 프로그래밍Lee Ji Eun
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신Sungwoo Choo
 
위플래닛 발표자료 Meteor_js
위플래닛 발표자료 Meteor_js위플래닛 발표자료 Meteor_js
위플래닛 발표자료 Meteor_jsWebFrameworks
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012Daum DNA
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기우영 주
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스WebFrameworks
 

Tendances (20)

오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5
 
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강 [토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS
 
Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)
 
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
 
원모먼트 Vue js 적용기
원모먼트 Vue js 적용기원모먼트 Vue js 적용기
원모먼트 Vue js 적용기
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
 
How_to_choose_the_right_framework
How_to_choose_the_right_frameworkHow_to_choose_the_right_framework
How_to_choose_the_right_framework
 
[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp
 
하이브리드앱 성능 극복
하이브리드앱 성능 극복하이브리드앱 성능 극복
하이브리드앱 성능 극복
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
자바스크립트의 또다른 발전, Backbone.js
자바스크립트의 또다른 발전, Backbone.js자바스크립트의 또다른 발전, Backbone.js
자바스크립트의 또다른 발전, Backbone.js
 
구글 인박스 히드라 프로그래밍
구글 인박스 히드라 프로그래밍구글 인박스 히드라 프로그래밍
구글 인박스 히드라 프로그래밍
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
 
위플래닛 발표자료 Meteor_js
위플래닛 발표자료 Meteor_js위플래닛 발표자료 Meteor_js
위플래닛 발표자료 Meteor_js
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
 

En vedette

Building a Single-Page App: Backbone, Node.js, and Beyond
Building a Single-Page App: Backbone, Node.js, and BeyondBuilding a Single-Page App: Backbone, Node.js, and Beyond
Building a Single-Page App: Backbone, Node.js, and BeyondSpike Brehm
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page ApplicationKMS Technology
 
Software Architect day - 웹 프레임워크 종결 - metaworks3
Software Architect day - 웹 프레임워크 종결 -  metaworks3Software Architect day - 웹 프레임워크 종결 -  metaworks3
Software Architect day - 웹 프레임워크 종결 - metaworks3uEngine Solutions
 
Introducing to node.js
Introducing to node.jsIntroducing to node.js
Introducing to node.jsJeongHun Byeon
 
Learning Single page Application chapter 1
Learning Single page Application chapter 1Learning Single page Application chapter 1
Learning Single page Application chapter 1Puguh Rismadi
 
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버JungWoon Lee
 
Rise of the responsive single page application
Rise of the responsive single page applicationRise of the responsive single page application
Rise of the responsive single page applicationOren Shatken
 
JSConf US 2014: Building Isomorphic Apps
JSConf US 2014: Building Isomorphic AppsJSConf US 2014: Building Isomorphic Apps
JSConf US 2014: Building Isomorphic AppsSpike Brehm
 
VAADIN으로 스크립트 없는 자바 웹 애플리케이션 만들기
VAADIN으로 스크립트 없는 자바 웹 애플리케이션 만들기 VAADIN으로 스크립트 없는 자바 웹 애플리케이션 만들기
VAADIN으로 스크립트 없는 자바 웹 애플리케이션 만들기 Jae-il Lee
 
HTML5 소개 및 배우기- HTML5 Open Conference
HTML5 소개 및 배우기- HTML5 Open ConferenceHTML5 소개 및 배우기- HTML5 Open Conference
HTML5 소개 및 배우기- HTML5 Open ConferenceChanny Yun
 
Five stages of grief: Evolving a multi-page web app to a single page application
Five stages of grief: Evolving a multi-page web app to a single page applicationFive stages of grief: Evolving a multi-page web app to a single page application
Five stages of grief: Evolving a multi-page web app to a single page applicationCharles Knight
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
Single Page WebApp Architecture
Single Page WebApp ArchitectureSingle Page WebApp Architecture
Single Page WebApp ArchitectureMorgan Cheng
 
eclipse에서 intelliJ IDEA로
eclipse에서 intelliJ IDEA로eclipse에서 intelliJ IDEA로
eclipse에서 intelliJ IDEA로Juntai Park
 
JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!Eric Wendelin
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applicationsSC5.io
 
Single Page Application presentation
Single Page Application presentationSingle Page Application presentation
Single Page Application presentationJohn Staveley
 
Microservice, Micro Deployments and DevOps
Microservice, Micro Deployments and DevOpsMicroservice, Micro Deployments and DevOps
Microservice, Micro Deployments and DevOpsAlois Reitbauer
 

En vedette (20)

Building a Single-Page App: Backbone, Node.js, and Beyond
Building a Single-Page App: Backbone, Node.js, and BeyondBuilding a Single-Page App: Backbone, Node.js, and Beyond
Building a Single-Page App: Backbone, Node.js, and Beyond
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
 
Software Architect day - 웹 프레임워크 종결 - metaworks3
Software Architect day - 웹 프레임워크 종결 -  metaworks3Software Architect day - 웹 프레임워크 종결 -  metaworks3
Software Architect day - 웹 프레임워크 종결 - metaworks3
 
Introducing to node.js
Introducing to node.jsIntroducing to node.js
Introducing to node.js
 
Learning Single page Application chapter 1
Learning Single page Application chapter 1Learning Single page Application chapter 1
Learning Single page Application chapter 1
 
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
클라우드와 마이크로 서비스를 위한 새로운 시대의 경량화 WAS - IBM WAS Liberty 서버
 
Rise of the responsive single page application
Rise of the responsive single page applicationRise of the responsive single page application
Rise of the responsive single page application
 
JSConf US 2014: Building Isomorphic Apps
JSConf US 2014: Building Isomorphic AppsJSConf US 2014: Building Isomorphic Apps
JSConf US 2014: Building Isomorphic Apps
 
VAADIN으로 스크립트 없는 자바 웹 애플리케이션 만들기
VAADIN으로 스크립트 없는 자바 웹 애플리케이션 만들기 VAADIN으로 스크립트 없는 자바 웹 애플리케이션 만들기
VAADIN으로 스크립트 없는 자바 웹 애플리케이션 만들기
 
HTML5 소개 및 배우기- HTML5 Open Conference
HTML5 소개 및 배우기- HTML5 Open ConferenceHTML5 소개 및 배우기- HTML5 Open Conference
HTML5 소개 및 배우기- HTML5 Open Conference
 
Five stages of grief: Evolving a multi-page web app to a single page application
Five stages of grief: Evolving a multi-page web app to a single page applicationFive stages of grief: Evolving a multi-page web app to a single page application
Five stages of grief: Evolving a multi-page web app to a single page application
 
Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
Single Page WebApp Architecture
Single Page WebApp ArchitectureSingle Page WebApp Architecture
Single Page WebApp Architecture
 
eclipse에서 intelliJ IDEA로
eclipse에서 intelliJ IDEA로eclipse에서 intelliJ IDEA로
eclipse에서 intelliJ IDEA로
 
JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!JavaScript + Jenkins = Winning!
JavaScript + Jenkins = Winning!
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
 
Single Page Application presentation
Single Page Application presentationSingle Page Application presentation
Single Page Application presentation
 
Microservice, Micro Deployments and DevOps
Microservice, Micro Deployments and DevOpsMicroservice, Micro Deployments and DevOps
Microservice, Micro Deployments and DevOps
 

Similaire à Single-page Application

Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
최근 Javascript framework 조사
최근 Javascript framework 조사최근 Javascript framework 조사
최근 Javascript framework 조사Kichul Jung
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER Engineering
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodedpTablo
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월월간 IT 슬라이드
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
올챙이 현재와 미래
올챙이 현재와 미래올챙이 현재와 미래
올챙이 현재와 미래cho hyun jong
 
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트NAVER D2
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview민태 김
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발cho hyun jong
 
황규영 포트폴리오
황규영 포트폴리오황규영 포트폴리오
황규영 포트폴리오Q_0
 
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기hajaekwon
 
2017. 프론트엔드 트랜드
2017. 프론트엔드 트랜드2017. 프론트엔드 트랜드
2017. 프론트엔드 트랜드Tai Hoon KIM
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발Jinuk Kim
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsKyunghun Jeon
 
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라NAVER D2
 

Similaire à Single-page Application (20)

Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
최근 Javascript framework 조사
최근 Javascript framework 조사최근 Javascript framework 조사
최근 Javascript framework 조사
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
올챙이 현재와 미래
올챙이 현재와 미래올챙이 현재와 미래
올챙이 현재와 미래
 
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
 
Electron
ElectronElectron
Electron
 
hexa core
hexa corehexa core
hexa core
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발
 
황규영 포트폴리오
황규영 포트폴리오황규영 포트폴리오
황규영 포트폴리오
 
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
 
2017. 프론트엔드 트랜드
2017. 프론트엔드 트랜드2017. 프론트엔드 트랜드
2017. 프론트엔드 트랜드
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build tools
 
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
 

Single-page Application

  • 1. Single-page Application - 나에게 맞는 프레임워크 선택하기 2016년 5월 22일 크로키닷컴㈜ 윤상민
  • 2.  경력  디지탈아리아 : 2003~2012  C, C++로 Adobe Flash의 모바일 버전을 개발  크로키닷컴: 2012~  비스킷 - 단어장 앱: 2012~2014  나이키 컵 관리 시스템: 2013~2015  지그재그: 2015~ 발표자는…
  • 3.  iOS 앱 – Swift 전환중  안드로이드 앱 – Kotlin 고려중  서버 – Node.js  Amazon Web Services – EC2, RDS, CloudSearch, S3, ElasticBeanstalk…  웹 어플리케이션 – Bootstrap, Mithril.js, Gulp, Browserify, …  데이터 분석 – Spark on Zeppelin 지그재그 개발 스택
  • 4.
  • 5.  정적 페이지(1991~1993) -> JavaScript & DOM Level 0(1995) -> Dynamic HTML(1997) -> XMLHTTP ActiveX(1999) -> XMLHttpRequest(2000~2005) -> Ajax(2005) -> SPA  브라우저의 페이지 이동 없이 모든 기능을 제공  = Client-side web application, Rich web application, Modern webapp Single-page Application 이란?
  • 6.  장점  사용자 친화적  빠른 반응  화면 전환 애니메이션  서버 요청이 적음  단점  JavaScript 활성화가 필요함  보안이슈  메모리 이슈  검색 엔진 최적화(SEO)가 어려움  초기 구동에 시간이 걸림 SPA 장단점
  • 7.  모든 어플리케이션이 로그인이 필요함 -> 검색 엔진을 고려하지 않아도 됨  모바일 어플리케이션을 위해 이미 API 서버는 있음 -> 같은 API를 이용해서 구현할 수 있음  API 서버는 웹 서버에 비해 구조가 단순해서 차후 한계에 이르렀을 때 다른 것으로 교체가 쉬움 (예 Node.js -> Rails)  서버 부하가 적음 크로키의 SPA 선택 이유
  • 8. SPA의 가장 큰 문제 정답이 없다 (no de facto standard)
  • 9.  http://yeoman.io  어느 정도 표준화된 프로젝트 파일을 생성해줌  수천개의 생성기(generator)  크로키는 초기 설정에만 사용하고 현재는 사용하지 않음. 하지만 간혹 최신 툴의 변경점을 체크하고 있음 Yeoman
  • 10.  전통적인 빌드 툴  Makefile, Ant, Maven, Gradle, Rakefile …  Grunt  http://gruntjs.com/  설정 기반, 조금 더 오래되어 문서와 플러그인이 많‘았’음  Gulp  http://gulpjs.com/  코드 기반으로 자유롭게 작성할 수 있음, 속도가 빠름  크로키의 추천  기타  Webpack을 사용하는 경우 많은 부분을 처리해주기 때문에(파일 묶기, 최소화등) 빌드 시스템 없이 npm scripts만을 사용할 수도 있다 빌드 시스템
  • 11.  원하는 라이브러리를 홈페이지가서 받아 프로젝트에 추가하는 작업을 없애줌  Bower  http://bower.io/  Twitter에서 내 놓은 웹 프론트엔드 패키지 관리자  NPM  https://www.npmjs.com/  Node.js에서 사용하는 백엔드 패키지 관리자이지만, 프론트엔드에도 동일하게 쓰는 경우가 늘어남  간혹 같은 모듈의 Bower와 NPM의 패키지가 다른 경우가 있음  크로키는 Bower -> NPM 전환중 패키지 관리자
  • 12.  SPA는 기본적으로 모든 스크립트를 하나로 만들어서 패포한다.  하지만 모든 코드를 하나의 파일에 두고 개발할 수는 없다.  JavaScript는 기본적으로 모듈 시스템이 없다. (ECMAScript 2015 (ES6)에서 추가됨) 모듈 시스템
  • 13.  Browserify  http://browserify.org/  Node.js에서 사용하는 CommonJS 모듈 시스템(require)을 지원 -> Node.js용 모듈을 클라이언트에서 사용할 수 있음  크로키에서 현재 사용중  Webpack  https://webpack.github.io/  모듈을 묶어주는 역할. JavaScript 외에 CSS, 이미지도 처리해준다  크로키는 앞으로 전환할 예정 모듈 시스템
  • 14.  http://todomvc.com/  동일한 할일 관리 예제를 통해 각종 프레임워크를 비교해 볼 수 있음  현재 64개의 어플리케이션이 있음 MV* 프레임워크
  • 15.  jQuery UI  Dojo Toolkit  YUI  Ext JS  Kendo UI  Naver Jindo 웹 어플리케이션 초기
  • 16.  http://backbonejs.org/  비교적 초기에 인기를 끌었음  크기가 작아서 배우기 쉽고, 수정하기 쉬움  부족한 기능은 플러그인으로 보강  큰 어플리케이션에는 적합하지 않다고 보임  하지만 Backbone + React등으로 아직 사용되기도 함  Code size (gzipped) : 7.6kb, jQuery(Zepto), Underscore 필요  추천하지 않음 Backbone.js
  • 17.  https://www.angularjs.org/  구글 개발자에 의해 개발된 프레임워크  MEAN(MongoDB, Express, AngularJS, Node.js)라는 명칭이 있을 정도로 가장 널리 쓰임  Code size (gzipped) : 56k  최적화가 쉽지 않음  Angular 2는 거의 다른 프레임워크라고 보일 정도로 많이 바뀜  풍부한 커뮤니티의 지원이 필요한 경우 추천 AngularJS
  • 18.  https://facebook.github.io/react/  페이스북에 의해 개발되었고, 실제로 페이스북 홈페이지에 적용되어 있음  최근 가장 핫한 프레임워크  View 부분만 담당하기 때문에 다른 파트를 위해 Flux(Redux), Immutable등 다른 라이브러리를 같이 쓰게 됨  Code size (gzipped) : 44kb  한번 개념을 익혀두면 React Native를 통해 iOS/안드로이드 개발도 할 수 있음  가장 빠르게 발전하고 있어서 장래성이 가장 높아보임 React
  • 19.  http://emberjs.com/  설정 보다 관례(Convention over Configuration)를 따름  자체 프로젝트 툴이 있음  ember new ember-quickstart ember generate route scientists ember generate component people-list ember serve ember build --env production  Code size (gzipped) : 116kb  데스크탑/모바일 네이티브 앱 개발과 비슷한 환경을 원할 경우 사용 Ember.js
  • 20.  https://www.meteor.com/  서버 개발을 포함하는 프레임워크(플랫폼?)  V 부분은 Angular, React, Blaze를 사용  서버와 클라이언트를 하나의 코드로 개발  데이터가 클라이언트에 있는 것처럼 다루면 자동으로 서버와 동기화를 시켜줌  여러 클라이언트 간에 동기화가 필요한 경우 고려해볼만함 Meteor
  • 21.  http://mithril.js.org/  가벼우면서도 모든 파트를 커버함  다른 프레임워크보다 평범한 JavaScript에 가까움  Code size (gzipped) : 7.8kb  현재 크로키의 프로젝트에 사용중 Mithril.js
  • 22.  Vue.js  Ext js  Cycle.js  Polymer  Riot.js 그외에도…
  • 23.  Minification (not obfuscation)  Sass (or Less)  CSS Sprites  Static asset revisioning: unicorn.css  unicorn-d41d8cd98f.css 알아두면 좋은 개념

Notes de l'éditeur

  1. <Single Page Application을 주제로 잡은 이유 설명>
  2. <Single Page Application을 주제로 잡은 이유 설명>