SlideShare ist ein Scribd-Unternehmen logo
1 von 16
도구를 활용한 더 나은 웹 개발: Yeoman
   2013.01.24 / nhn_박재성 (alberto.park at gmail.com)




http://www.flickr.com/photos/75905404@N00/7126147125/sizes/l/in/photostream/
오늘날의 웹 개발은?
▪ 라이브러리 다운로드
   라이브러리가 다른 dependency를 필요로 하는 경우 추가 다운로드 필요
   최신버전 업데이트 반영

▪ 페이지에 소스 include
▪ 라이브러리의 사용 가이드에 따른 코드 작업

▪ 빌드 & 배포
  - 웹 서버 설치 및 설정
  - Static 파일들의 minification & merging
  - 이미지 파일의 경우 용량 최적화 처리

▪ 테스트
   - 단위 테스트
   - linting (코드 품질 검사)

…
                       웹 서비스를 개발하기 위해서는 수많은 외부 라이브러리,
                       프레임워크 및 도구의 사용은 필수적!
자, 그럼 이제 어떤
도구들을 사용해 볼까요?
http://nodejs.org/


                                                            http://gruntjs.com/
http://livereload.com/




                         http://twitter.github.com/bower/      http://phantomjs.org/




  http://pivotal.github.com/jasmine/              http://compass-style.org/




         http://modernizr.com/
                                                http://visionmedia.github.com/mocha/
http://html5boilerplate.com/                       http://backbonejs.org/




          http://twitter.github.com/bootstrap/


                                                        http://requirejs.org/

     http://coffeescript.org/


                                                      http://angularjs.org/




 http://emberjs.com/                                       http://jquery.com/
                           http://sass-lang.com/
도구들을 사용해 개발을 시작해 볼까요?
일단 웹 서버가 필요하고, 웹 서버를 설치하고, jQuery를 다운로드 받아야 하고,
Require.js를 사용해서 모듈형태로 비동기 로딩을 하도록 구성해야 하니까 require.js를
다운로드 받아서 작업 폴더로 복사하고, MVC 패턴을 적용해야 하니까 backbone을 사용해야겠군.
그럼 다시 다운로드를 받고…

그럼 이제 기본 HTML 파일을 만들어서 작업을 시작해 볼까?

      http://www.youtube.com/watch?v=_0Vkm6J6els
Yeoman?
                                                http://yeoman.io/

                                                - Released : 2012/09/10
                                                - BSD license




Yeoman is a robust and opinionated set of tools, libraries, and a workflow that
can help developers quickly build beautiful, compelling web apps.
특징
▪ 가볍고 빠른 스캐폴딩
▪ CoffeeScript & Compass 자동 컴파일 지원
▪ 스크립트 품질 검사(JSHint) 수행
▪ 프리뷰를 위한 빌트인 서버
▪ 이미지 최적화 (OptiPNG, JPEGTran)
▪ AppCache manifest 생성
▪ 패키지 매니징을 통해 다양한 외부 패키지들을 손쉽게 관리
▪ 브라우저를 사용하지 않는 WebKit 기반의 단위 테스트 수행 (PhantomJS)
▪ r.js를 통한 AMD 모듈 컴파일


▪ 빠른 프로토타입 개발
▪ DRY(Don't Repeat Yourself) - 반복적인 코드 작성을 하지 않는 것
▪ 패키지 관리 - 의존성 라이브러리 관리 및 업데이트
▪ Live reload 지원을 통한 소스 변경내역 확인
설치 #1
$ curl -L get.yeoman.io | bash


참고 URL :
https://github.com/yeoman/yeoman/wiki/Manual-Install
http://decodize.com/css/installing-yeoman-front-end-development-stack-windows

지원환경 : Mac, Linux (공식적으로 윈도우 환경은 지원하지 않음)

Requirement :
▪ Command line tools for Xcode
  --> Menu : Xcode > Preferences > Downloads > Components > Command Line Tools install

▪ Homebrew (http://mxcl.github.com/homebrew/)
  --> ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
  OS X에 기본으로 포함되어 있지 않은 UNIX 도구들을 유연하게 설치 및 관리하게 도와주는 도구

▪ NodeJS >= 0.8.x  http://nodejs.org/download/

▪ Ruby >= 1.8.7  ruby -v로 버전 확인
설치 #2
▪ Compass - CSS Authoring Framework (http://compass-style.org/)
   1) gem update --system
   2) gem install compass

▪ PhantomJS (http://phantomjs.org/)
  --> brew update && brew install phantomjs
  --> or http://phantomjs.org/download.html에서 다운로드 설치

▪ JPEGTran
  --> brew install jpeg-turbo && brew link jpeg-turbo
  --> or
    1) curl http://www.ijg.org/files/jpegsrc.v6b.tar.gz > /tmp/libjpeg.tar.gz
    2) tar -xzvf /tmp/libjpeg.tar.gz
    3) cd /tmp/jpeg-6b
    4) ./configure
    5) sudo make install

▪ OptiPNG (http://optipng.sourceforge.net/)  brew install optipng

▪ yeoman global npm module  npm install -g yeoman
명령어
 명령어                              설명
   init      새로운 프로젝트를 생성하거나, 템플릿 생성자를 통한 스캐폴드 코드 생성

  build      최적화된 서비스 배포 버전의 프로젝트 생성

  server     프리뷰를 할수 있는 서버 실행

   test      커맨드 라인에서 Mocha 테스트를 수행

  install    패키지 설치

 uninstall   패키지 제거

 update      최신 버전의 패키지로 업데이트

   list      설치된 패키지 목록 출력

  search     레지스트리에서 패키지 검색

 lookup      특정 패키지를 검색
사용방법

프로젝트를 시작할 폴더로 이동해 ‘yeoman init’ 명령어로 프로젝트 생성

$ mkdir 폴더명 && cd 폴더명
$ yeoman init

# for backbone project and generator
$ yeoman init backbone
$ yeoman init backbone:model testModel
$ yeoman init backbone:view testView
기본 프로젝트 구조



       /app : 프로젝트 파일
       /test : 테스트 관련 파일
       /dist : yeoman build를 통해 생성된 배포 버전 파일
           (build 명령을 통해 생성)


       Gruntfile.js :
       빌드 및 프로젝트 전반에 사용되는 각종 환경설정 파일
서버실행
프리뷰 서버 실행
$yeoman server
빌드

$yeoman build
* dist 폴더에 빌드된 파일이 생성


▪ 모든 JavaScript 파일은 JSHint로 체크됨
▪ CoffeeScript와 SASS 파일은 서비스를 위해 컴파일됨
▪ AMD 모듈은 r.js를 통해 컴파일되거나 최적화됨
▪ 스크립트 파일과 스타일시트 파일들은 병합 및 최소화(minification) 처리됨
▪ PNG는 OptiPNG, JPG는 JPEGtrans-turbo를 통해 압축됨
▪ PhantomJS를 통한 WebKit 브라우저의 단위테스트 실행
▪ Confess.js를 통한 Application Cache manifest 생성
▪ 파일명에 리비전 적용
고맙습니다.




http://www.flickr.com/photos/hollyladd/4513146360/sizes/o/in/photostream/

Weitere ähnliche Inhalte

Was ist angesagt?

Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나JeongHun Byeon
 
Next Javascript ES2015 시작하기
Next Javascript ES2015 시작하기Next Javascript ES2015 시작하기
Next Javascript ES2015 시작하기JinKwon Lee
 
최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기Hyeonjin Cho
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)JinKwon Lee
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angularredribbon1307
 
Front-end Development with Ruby on Rails
Front-end Development with Ruby on RailsFront-end Development with Ruby on Rails
Front-end Development with Ruby on Rails추근 문
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅JinKwon Lee
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정leejungwang
 
프론트엔드 개발자
프론트엔드 개발자프론트엔드 개발자
프론트엔드 개발자jung kyunghwan
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구Jae Sung Park
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅Yoonsung Jung
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔NAVER D2
 
크롬 개발자 도구 소개 및 사용법
크롬 개발자 도구 소개 및 사용법크롬 개발자 도구 소개 및 사용법
크롬 개발자 도구 소개 및 사용법Gihyo Joshua Jang
 
오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5Taegon Kim
 
Electron 시작하기
Electron 시작하기Electron 시작하기
Electron 시작하기Hyeokjoo Yoon
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기KwangSeob Jeong
 
vuetiful korea 발표자료
vuetiful korea 발표자료vuetiful korea 발표자료
vuetiful korea 발표자료치웅 이
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1Booseol Shin
 

Was ist angesagt? (20)

Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
Next Javascript ES2015 시작하기
Next Javascript ES2015 시작하기Next Javascript ES2015 시작하기
Next Javascript ES2015 시작하기
 
최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular
 
Front-end Development with Ruby on Rails
Front-end Development with Ruby on RailsFront-end Development with Ruby on Rails
Front-end Development with Ruby on Rails
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅Logcat과 함께 하는 모바일 웹 디버깅
Logcat과 함께 하는 모바일 웹 디버깅
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
 
프론트엔드 개발자
프론트엔드 개발자프론트엔드 개발자
프론트엔드 개발자
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔
 
크롬 개발자 도구 소개 및 사용법
크롬 개발자 도구 소개 및 사용법크롬 개발자 도구 소개 및 사용법
크롬 개발자 도구 소개 및 사용법
 
오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5
 
Electron 시작하기
Electron 시작하기Electron 시작하기
Electron 시작하기
 
How to Grunt.js
How to Grunt.jsHow to Grunt.js
How to Grunt.js
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기
 
vuetiful korea 발표자료
vuetiful korea 발표자료vuetiful korea 발표자료
vuetiful korea 발표자료
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
 

Ähnlich wie 도구를 활용한 더 나은 웹 개발: Yeoman

Single-page Application
Single-page ApplicationSingle-page Application
Single-page ApplicationSangmin Yoon
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반BJ Jang
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodedpTablo
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교Junyoung Lee
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15Chanwoong Kim
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
 
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
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure rockplace
 

Ähnlich wie 도구를 활용한 더 나은 웹 개발: Yeoman (20)

Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Internship backend
Internship backendInternship backend
Internship backend
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
okspring3x
okspring3xokspring3x
okspring3x
 
Electron forge
Electron forgeElectron forge
Electron forge
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
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
 
Portfolio
PortfolioPortfolio
Portfolio
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure
 

Mehr von Jae Sung Park

[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenes[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenesJae Sung Park
 
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기Jae Sung Park
 
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지Jae Sung Park
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기Jae Sung Park
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjsJae Sung Park
 
How jQuery event works
How jQuery event worksHow jQuery event works
How jQuery event worksJae Sung Park
 
현실적 Angular js
현실적 Angular js현실적 Angular js
현실적 Angular jsJae Sung Park
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJSJae Sung Park
 
Web Components & Polymer
Web Components & PolymerWeb Components & Polymer
Web Components & PolymerJae Sung Park
 
모바일 웹 디버깅
모바일 웹 디버깅모바일 웹 디버깅
모바일 웹 디버깅Jae Sung Park
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - PolymerJae Sung Park
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기Jae Sung Park
 
How to create Aptana Ruble
How to create Aptana RubleHow to create Aptana Ruble
How to create Aptana RubleJae Sung Park
 
Developing game audio with the Web Audio API
Developing game audio with the Web Audio APIDeveloping game audio with the Web Audio API
Developing game audio with the Web Audio APIJae Sung Park
 

Mehr von Jae Sung Park (20)

[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenes[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenes
 
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
 
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
 
현실적 PWA
현실적 PWA현실적 PWA
현실적 PWA
 
How jQuery event works
How jQuery event worksHow jQuery event works
How jQuery event works
 
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
 
현실적 Angular js
현실적 Angular js현실적 Angular js
현실적 Angular js
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS
 
Web Components & Polymer
Web Components & PolymerWeb Components & Polymer
Web Components & Polymer
 
모바일 웹 디버깅
모바일 웹 디버깅모바일 웹 디버깅
모바일 웹 디버깅
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
 
CSS Functions
CSS FunctionsCSS Functions
CSS Functions
 
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기
 
How to create Aptana Ruble
How to create Aptana RubleHow to create Aptana Ruble
How to create Aptana Ruble
 
Web Audio API
Web Audio APIWeb Audio API
Web Audio API
 
Developing game audio with the Web Audio API
Developing game audio with the Web Audio APIDeveloping game audio with the Web Audio API
Developing game audio with the Web Audio API
 

도구를 활용한 더 나은 웹 개발: Yeoman

  • 1. 도구를 활용한 더 나은 웹 개발: Yeoman 2013.01.24 / nhn_박재성 (alberto.park at gmail.com) http://www.flickr.com/photos/75905404@N00/7126147125/sizes/l/in/photostream/
  • 2. 오늘날의 웹 개발은? ▪ 라이브러리 다운로드  라이브러리가 다른 dependency를 필요로 하는 경우 추가 다운로드 필요  최신버전 업데이트 반영 ▪ 페이지에 소스 include ▪ 라이브러리의 사용 가이드에 따른 코드 작업 ▪ 빌드 & 배포 - 웹 서버 설치 및 설정 - Static 파일들의 minification & merging - 이미지 파일의 경우 용량 최적화 처리 ▪ 테스트 - 단위 테스트 - linting (코드 품질 검사) … 웹 서비스를 개발하기 위해서는 수많은 외부 라이브러리, 프레임워크 및 도구의 사용은 필수적!
  • 3. 자, 그럼 이제 어떤 도구들을 사용해 볼까요?
  • 4. http://nodejs.org/ http://gruntjs.com/ http://livereload.com/ http://twitter.github.com/bower/ http://phantomjs.org/ http://pivotal.github.com/jasmine/ http://compass-style.org/ http://modernizr.com/ http://visionmedia.github.com/mocha/
  • 5. http://html5boilerplate.com/ http://backbonejs.org/ http://twitter.github.com/bootstrap/ http://requirejs.org/ http://coffeescript.org/ http://angularjs.org/ http://emberjs.com/ http://jquery.com/ http://sass-lang.com/
  • 6. 도구들을 사용해 개발을 시작해 볼까요? 일단 웹 서버가 필요하고, 웹 서버를 설치하고, jQuery를 다운로드 받아야 하고, Require.js를 사용해서 모듈형태로 비동기 로딩을 하도록 구성해야 하니까 require.js를 다운로드 받아서 작업 폴더로 복사하고, MVC 패턴을 적용해야 하니까 backbone을 사용해야겠군. 그럼 다시 다운로드를 받고… 그럼 이제 기본 HTML 파일을 만들어서 작업을 시작해 볼까? http://www.youtube.com/watch?v=_0Vkm6J6els
  • 7. Yeoman? http://yeoman.io/ - Released : 2012/09/10 - BSD license Yeoman is a robust and opinionated set of tools, libraries, and a workflow that can help developers quickly build beautiful, compelling web apps.
  • 8. 특징 ▪ 가볍고 빠른 스캐폴딩 ▪ CoffeeScript & Compass 자동 컴파일 지원 ▪ 스크립트 품질 검사(JSHint) 수행 ▪ 프리뷰를 위한 빌트인 서버 ▪ 이미지 최적화 (OptiPNG, JPEGTran) ▪ AppCache manifest 생성 ▪ 패키지 매니징을 통해 다양한 외부 패키지들을 손쉽게 관리 ▪ 브라우저를 사용하지 않는 WebKit 기반의 단위 테스트 수행 (PhantomJS) ▪ r.js를 통한 AMD 모듈 컴파일 ▪ 빠른 프로토타입 개발 ▪ DRY(Don't Repeat Yourself) - 반복적인 코드 작성을 하지 않는 것 ▪ 패키지 관리 - 의존성 라이브러리 관리 및 업데이트 ▪ Live reload 지원을 통한 소스 변경내역 확인
  • 9. 설치 #1 $ curl -L get.yeoman.io | bash 참고 URL : https://github.com/yeoman/yeoman/wiki/Manual-Install http://decodize.com/css/installing-yeoman-front-end-development-stack-windows 지원환경 : Mac, Linux (공식적으로 윈도우 환경은 지원하지 않음) Requirement : ▪ Command line tools for Xcode --> Menu : Xcode > Preferences > Downloads > Components > Command Line Tools install ▪ Homebrew (http://mxcl.github.com/homebrew/) --> ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)" OS X에 기본으로 포함되어 있지 않은 UNIX 도구들을 유연하게 설치 및 관리하게 도와주는 도구 ▪ NodeJS >= 0.8.x  http://nodejs.org/download/ ▪ Ruby >= 1.8.7  ruby -v로 버전 확인
  • 10. 설치 #2 ▪ Compass - CSS Authoring Framework (http://compass-style.org/) 1) gem update --system 2) gem install compass ▪ PhantomJS (http://phantomjs.org/) --> brew update && brew install phantomjs --> or http://phantomjs.org/download.html에서 다운로드 설치 ▪ JPEGTran --> brew install jpeg-turbo && brew link jpeg-turbo --> or 1) curl http://www.ijg.org/files/jpegsrc.v6b.tar.gz > /tmp/libjpeg.tar.gz 2) tar -xzvf /tmp/libjpeg.tar.gz 3) cd /tmp/jpeg-6b 4) ./configure 5) sudo make install ▪ OptiPNG (http://optipng.sourceforge.net/)  brew install optipng ▪ yeoman global npm module  npm install -g yeoman
  • 11. 명령어 명령어 설명 init 새로운 프로젝트를 생성하거나, 템플릿 생성자를 통한 스캐폴드 코드 생성 build 최적화된 서비스 배포 버전의 프로젝트 생성 server 프리뷰를 할수 있는 서버 실행 test 커맨드 라인에서 Mocha 테스트를 수행 install 패키지 설치 uninstall 패키지 제거 update 최신 버전의 패키지로 업데이트 list 설치된 패키지 목록 출력 search 레지스트리에서 패키지 검색 lookup 특정 패키지를 검색
  • 12. 사용방법 프로젝트를 시작할 폴더로 이동해 ‘yeoman init’ 명령어로 프로젝트 생성 $ mkdir 폴더명 && cd 폴더명 $ yeoman init # for backbone project and generator $ yeoman init backbone $ yeoman init backbone:model testModel $ yeoman init backbone:view testView
  • 13. 기본 프로젝트 구조 /app : 프로젝트 파일 /test : 테스트 관련 파일 /dist : yeoman build를 통해 생성된 배포 버전 파일 (build 명령을 통해 생성) Gruntfile.js : 빌드 및 프로젝트 전반에 사용되는 각종 환경설정 파일
  • 15. 빌드 $yeoman build * dist 폴더에 빌드된 파일이 생성 ▪ 모든 JavaScript 파일은 JSHint로 체크됨 ▪ CoffeeScript와 SASS 파일은 서비스를 위해 컴파일됨 ▪ AMD 모듈은 r.js를 통해 컴파일되거나 최적화됨 ▪ 스크립트 파일과 스타일시트 파일들은 병합 및 최소화(minification) 처리됨 ▪ PNG는 OptiPNG, JPG는 JPEGtrans-turbo를 통해 압축됨 ▪ PhantomJS를 통한 WebKit 브라우저의 단위테스트 실행 ▪ Confess.js를 통한 Application Cache manifest 생성 ▪ 파일명에 리비전 적용