대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주

Similar documents
Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

playnode.key

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Building Mobile AR Web Applications in HTML5 - Google IO 2012

개선과제 보고서

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

PCServerMgmt7

서현수

(......).hwp

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

Intro to Servlet, EJB, JSP, WS

슬라이드 1

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

슬라이드 1

TTA Journal No.157_서체변경.indd

SproutCore에 홀딱 반했습니다.

untitled

Chap7.PDF

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

2파트-07

PowerPoint 프레젠테이션

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

슬라이드 1

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

BEef 사용법.pages

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

NCS : ERP(SAP) ERP(SAP) SW IT,. SW IT 01., 05., 06., 08., 15., , 05. SW IT,,,, SAP HR,,, 4,,, SAP ABAP HR SCHEMA, BSP,

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

슬라이드 1

Week13

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Modern Javascript

Introduction- 소개 Previous- 이전, Next Chapter- 다음장 JavaScript is the most popular scripting language in the world. It is the standard language used in w

Interstage5 SOAP서비스 설정 가이드

유니티 변수-함수.key

Introduction to CTIP

1.장인석-ITIL 소개.ppt

제안서 평가항목은 평가위원의 주관적인 판단이 필요한 정성평가와 객관적인 데이터에 의한 정량평가로 구성되어 있으며, 기관 및 투입 인력 평가(투입인력 전문성 및 전문인력 보유 현황) 책임연구원 전문성(관련 분야 저서 및 논문 발표 실적) 유사용역 사업 수행 실적(최근 3

<C7D1BBF3C1F85FBFDC28B5B5B7CEB1B3C5EBBBE7B0ED20BABBB9AE5FB1B3C1A4292E687770>

UML


Microsoft PowerPoint - chap01-C언어개요.pptx

교육2 ? 그림


초보자를 위한 ASP.NET 21일 완성

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

¨ìÃÊÁ¡2

웹어플리케이션개발도구 Yeoman 공개 SW 개발자 Lab 오픈소스프론티어 2 기문현경

ibmdw_rest_v1.0.ppt

Windows Live Hotmail Custom Domains Korea

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

PowerPoint 프레젠테이션

C H A P T E R 2



[Brochure] KOR_TunA

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

PowerPoint 프레젠테이션

Egretia_White_Paper_KR_V1.1.pages


슬라이드 1

슬라이드 1

소프트웨어 검증 및 설계

대학교육151호-합침

Speculative Register Promotion Using Advanced Load Address Table (ALAT)

2013 <D55C><ACBD><C5F0><BC31><C11C>(<CD5C><C885>).pdf

ThisJava ..

untitled

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

PowerPoint Presentation

초보자를 위한 C++

슬라이드 1

Web Scraper in 30 Minutes 강철

AMP는 어떻게 빠른 성능을 내나.key

Javascript.pages

20주년용

PowerPoint Presentation

No Slide Title

쉽게 풀어쓴 C 프로그래밍

歯CRM개괄_허순영.PDF

3장

PowerPoint 프레젠테이션

Short Presentation Title


Microsoft Word - 김완석.doc

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi

SchoolNet튜토리얼.PDF

분산처리 프레임워크를 활용한대용량 영상 고속분석 시스템

Ver. T3_DWS.UTP-1.0 Unit Testing Plan for Digital Watch System Test Plan Test Design Specification Test Cases Specification Date Team Infor

PowerPoint 프레젠테이션

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax

Service-Oriented Architecture Copyright Tmax Soft 2005

- 이벤트의처리 <input type= button id= button1 value= 확인 /> <input type= button id= button2 value= 확인 /> 자바스크립트인경우 : document.getelementbyid( button1 ).oncl

PowerPoint Template

¿¡À̽º ÃÖÁ¾¿ø°í

final_thesis

Facebook API

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

Transcription:

대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주

웹사이트 웹어플리케이션

Mission

웹사이트처럼 개발하기에는 문제점이많다

Why?!

복잡하다 양이많다

예제를통해해결책을알아보자 http://pillarlee16.github.com/simpleapp/

복잡함을해결하자!! 다양한 MV* Framework BackboneJS, JavaScriptMVC, Spine.js, SproutCore, Ember.js, AngularJS, Knockout. js, Sammy.js, Sencha, YUI library

BackboneJS 를선택한이유 주된이유 가볍다 필요한요소들만있다 자유도가높다 부가적인이유 이해하기가제일쉬웠다 개발하고자하는프로젝트에잘어울렸다

Backbone.Model var Person = Backbone.Model.extend({ }); var person = new Person({name: 'Mr.Lee', age: 26}); person.get('name'); // Mr.Lee person.get('age'); // 26 person.set({part: 'Dev2'}); person.get('part'); // Dev2

Backbone.Collection var PersonList = Backbone.Collection.extend({ model: PersonList }); var personlist = new PersonList(); personlist.add(person1); personlist.add(person2); personlist.remove(person2); personlist.get(1); // person1

Backbone.Event var object = {}; _.extend(object, Backbone.Events); object.on("log", function (msg) { console.log("triggered " + msg); }); object.trigger("log", "an event"); // Triggered an event

Backbone.Event var object = {}; _.extend(object, Backbone.Events); object.on("log", function (msg) { console.log("triggered " + msg); }); object.trigger("log", "an event"); // Triggered an event

Backbone.View var DataInputView = Backbone.View.extend({ template: _.template($("#tmpl").html()) events: { "click input[type=button]": "addperson" } render: function () { this.$el.html(this.template()); return this; }, addperson: function () { /** todo sth ** } });

모듈화를통해코드를분리하자!! Javascript Module 을지원하기위한노력 CommonJS / Node.js AMD / Require.js ECMAScript Harmony / Module

AMD / Require.js // module definition wrapper define(['modulea', 'moduleb'], function (modulea, moduleb) { var module = {}; module.dosomething = function () { modulea(); moduleb(); } return module; } });

AMD / Require.js // top-level require call require(['module'], function (module) { module.dosomething(); });

AMD / Require.js RequireJS 의플러그인 r.js 옵션에따라다양한빌드가가능하다. AMD 의단점인많은 Http Request 문제를해결할수있다. // app.build.js ({ appdir: "some/path/", baseurl: "./", mainconfigfile: '../some/path/to/main.js', paths: { "foo.bar": "../scripts/foo/bar", "baz": "../another/path/baz" }, dir: "../some/path", modules: [ { name: "foo/bar/bip", exclude: ["foo/bar/bop"] } ], wrap: { start: "(function() {", end: "}());" }, fileexclusionregexp: /^\./ })

Referrence (1) http://backbonejs.org/ : BackboneJS 공식홈페이지. http://underscorejs.org/ : UnderscoreJS 공식홈페이지. http://requirejs.org/ : RequireJS 공식홈페이지 http://addyosmani.com/toolsforjqueryapparchitecture/ : Javascript 로프로젝트를진행하는데있어서사용되는다양한도구들을소개한다. 기존의 Java 프로젝트에서이런것들이됐었는데 Javascript 는어떤걸사용하면될까라는의문이들때보면좋다. https://speakerdeck.com/u/addyosmani/p/large-scale-javascript-applicationarchitecture : Javascript 웹어플리케이션아키텍쳐에대해설명한다. 모니터링콘솔의구조를잡는데많은도움을받았다. http://www.html5rocks.com/webappfieldguide/toc/index/ : 웹어플리케이션을만드는데잇어서기본적인지침을소개한다. https://github.com/addyosmani/backbone-fundamentals/ : Developing Backbone.js Applications 책의 ebook 을관리한다. 혹시 ebook 을읽는다면예제파일들이유용하다. https://github.com/addyosmani/backbone-aura : Publish/Subscribe 방식으로 Backbone 의모듈들을어떻게 Decoupling 시키고모듈간의통신을어떻게하는지참고할수있다.

Referrence (2) https://github.com/tbranyen/backbone-boilerplate : Backbone 프로젝트의가장기본적인구조를잘만들어놓았다. https://github.com/backbone-boilerplate/grunt-bbb : Backbone Boilerplate 를 Node.js 로실행시키는프로젝트이다. 자바스크립트로 Server-side 를어떻게구성해놓았는지볼수있다. http://addyosmani.github.com/todomvc/ : TodoMVC 는다양한 Javascript MV* 프레임워크로동일한예제어플리케이션을구현해놓았다. 모니터링콘솔에서사용한 Backbone 뿐만아니라 Ember, Spine, Angular 등다양한프레임워크가있으니실제로구현된웹어플리케이션의구조를엿볼수있다. http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine-sinon.html : Backbone 을 Jasmine 과 Sinon.js 를사용하여테스트하는방법에대한가이드이다. 1 편은기본적인 Backbone 에대한지식과테스트하는방법을소개한다. http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html : 위의가이드의 2 편이다. 2 편은 Backbone 의 Model 과 Collection 을테스트하는방법을소개한다. http://tinnedfruit.com/2011/04/26/testing-backbone-apps-with-jasmine-sinon-3. html : 위의가이드의 3 편이다. 3 편은 Backbone 의 Router 와 View 를테스트하는방법을소개한다.

Referrence (3) http://perka.github.com/backbone-ui/ : Backbone 을사용하여 UI Component 들을만들어놓았다. 직접사용하기에는부족한것같지만 UI Component 들을어떻게구성하고, 구현하였는지참고할수있다. http://backboneconf.com/ : 2012 년 5 월 30 일, 31 일보스턴에서열렸던 BackboneConf 의웹사이트이다. 컨퍼런스에서발표되었던슬라이드들을볼수있다. 슬라이드만보는것으로는내용을완전히이해할수는없지만한번쯤볼만하다.

One More Thing!

Yeoman.io

Yeoman.io Scaffolding (HTML5 Boilerplate, Twitter Bootstrap, AMD) Watch process Lint script Image Optimization & AppCache ECMAScript6 module Package Management PhantomJS Unit Testing

맺음말 웹어플리케이션개발방법들이공개되고있다 Best Practice 는아니다 키워드를알게되는것이라도도움이되었으면

Next Week 자바스크립트프로젝트의 단위테스트, 테스트커버리지그리고 CI

Q & A