첫 번째 따라배우기를 시작합니다. 아마, 익숙하지 않은 분들은 많은 것들이 낯 설게 느껴지실 겁니다. 하지만 당황하지 마시고, 우선은 그런가 보다 하고 넘어가시는 것도 괜찮습니다. 그리고 번역은 크게 오해가 안생기는 수준에서 빠르게 진행할 예정이라 다소 어색할 수 있습니다. 매끄럽지 못하더라도 양해해 주세요. (댓글로 지적해 주시는 부분은 수정할게요~ ^^) 자 그럼 part 01은 비교적 편한 마음으로 쉽게 읽으시면 되겠습니다.
파트1, "웹앱(Webapp)을 만들어 봅시다!"에 오신걸 환영합니다. 본 시리즈는 "Node.js"를 이용해서 웹 애플리케이션(이하 웹앱)을 만들어보는 따라배우기(tutorial)시리즈입니다. 본 시리즈는 node.js를 이용해서 웹앱을 만드는 과정을 따라가면서, 자신만의 애플리케이션을 만들 때 접하게 될 모든 영역을 다룰 예정입니다.
우리가 만들 앱은 Nodepad(노드패드)라 불리는 웹 노트패드입니다. 특별한 점은 없지만, (개념이)잘 정의되어 있고 이해하기 쉽습니다.
프레임워크와 도구 선택하기
현대의 웹 애플리케이션들은 몇몇 컴포넌트들에 의존합니다.
스토리지: 관계형 데이터베이스, NoSQL
저장라이브러리: 단순형, ORM
웹 서버
패키지 매니저
서버-사이드 프레임워크
클라이언트-사이드 프레임워크
테스팅 라이브러리
버전 컨트롤
선택은 전적으로 컨택스트(context)에 달려있습니다. 저는 배포 환경에 맞춰 특정 기술들을 사용해 왔습니다. 그리고 전 오픈소스 소프트웨어를 만들 때 사람들이 쉽게 설치할 수 있는 제품을 선호합니다. 이번 경우에 저의 선택은 제 자신의 전문영역과 독자들이 관심 있어 하는 기술에 대한 피드백을 기초로 정할 예정입니다.
서버-사이드(Server-Side)
노드(node.js)로 웹앱을 만드는 것은 어떤 식으로든 프레임워크가 관계됩니다. 만약 우리의 주간 아티클 Node Roundup을 읽었다면 뛰어난 프레임워크들이 수 없이 많이 존재한다는 걸 잘 알 겁니다. 어떤 것들은 Rails나 Django를 Node로 완벽 포팅하는 걸 목표로 삼기도 하고, 또 어떤 것들은 라우팅과 HTTP영역에 집중하고 있습니다. Rails스러운 프레임워크의 한 예는 Geddy입니다. 좀 더 간결한 걸로는 Sinatra 스타일의 프레임워크인 Express(엑스프레스)가 있습니다. Exprees는 2009년 6월에 시작되서 지금까지 꾸준히 업데이트 되고 있습니다.
더 큰 사이즈의 프레임워크들은 보통 모델/뷰/컨트롤러 추상화를 통해 리소스와 파일간의 one-to-many 맵핑을 제공합니다. 프로젝트는 다음과 같이 구성될 예정입니다.
모델: user.js, note.js
컨트롤러: users.js, notes.js
뷰: index.html (아이템 목록), edit.html, new.html
모든 프레임워크가 다 MVC인건 아닙니다. 또한 node.js 월드에는 마이크로 프레임워크(microframeworks)라 불리는 것들이 많습니다. 저도 처음에는 Express가 마이크로 프레임워크라 생각했었습니다만, Express는 모든 스택을 다루는 추상층을 제시하고 있습니다. 네, 마이크로 프레임워크라 불리기엔 조금 더 뚱뚱하죠.
제 생각엔 Express가 이번 프로젝트에 적절한 것 같습니다. 상식적인 수준내에서 어떤 프레임워크이든 잘 쓸 수 있긴 합니다만, Express 번들이면 지나치게 무겁지 않는 수준에서 즐겁게 작업하기에 충분합니다.
프론트엔드(Frontend)
어떤 종류의 UI 프레임워크는 인터페이스 개발시에 필요한 잡다구리한 일들을 줄여줍니다. 자바 스크립트 UI 프레임워크들은 지난 수년사이에 폭발적으로 증가했습니다. 다음과 같은 종류의 프레임워크들이 우리 프로젝트에 사용가능합니다.
저수준 프레임워크 위에 올려진 인터페이스에 특화된 라이브러리: Scriptaculous, jQuery UI
제 생각에 SproutCore(스프라우트 코어)와 Cappuccino는 이번과 같은 프로젝트에 적용하기에는 다소 무거운 것 같습니다. 지금은 jQuery UI와 Aristo theme가 잘 어울릴 것 같습니다. 무겁다는 느낌을 주지 않고도 훌륭한 결과를 얻을 수 있습니다.
한편, Expresso(엑스프레소)는 서버를 좀 더 깔끔하게 테스트 할 수 있도록 assert.response를 제공합니다. Expresso는 Express와 동일한 저자(TJ Holowaychuk)가 만들었습니다. 그러니 이런 류의 기능을 제공한다는 건 사실 놀라운 건 아니죠. (테스트에 대해서는) 어느 쪽 노선을 따를지는 아직 결정 못했습니다. 앱을 만들어 가면서 둘 다 써보고 결정하겠습니다.
저장소(Storage)
저장소는 지난 2년간 미친듯이 변했습니다. 제가 처음 일을 시작 했을 때는 관계형 데이터베이스 아니면, 객체 데이터베이스(
@doortts (doortts) 님이 작성한 게시글입니다. ---
첫 번째 따라배우기를 시작합니다. 아마, 익숙하지 않은 분들은 많은 것들이 낯 설게 느껴지실 겁니다. 하지만 당황하지 마시고, 우선은 그런가 보다 하고 넘어가시는 것도 괜찮습니다. 그리고 번역은 크게 오해가 안생기는 수준에서 빠르게 진행할 예정이라 다소 어색할 수 있습니다. 매끄럽지 못하더라도 양해해 주세요. (댓글로 지적해 주시는 부분은 수정할게요~ ^^) 자 그럼 part 01은 비교적 편한 마음으로 쉽게 읽으시면 되겠습니다.
원본 http://dailyjs.com/2010/11/01/node-tutorial/
파트1, "웹앱(Webapp)을 만들어 봅시다!"에 오신걸 환영합니다. 본 시리즈는 "Node.js"를 이용해서 웹 애플리케이션(이하 웹앱)을 만들어보는 따라배우기(tutorial)시리즈입니다. 본 시리즈는 node.js를 이용해서 웹앱을 만드는 과정을 따라가면서, 자신만의 애플리케이션을 만들 때 접하게 될 모든 영역을 다룰 예정입니다.
우리가 만들 앱은 Nodepad(노드패드)라 불리는 웹 노트패드입니다. 특별한 점은 없지만, (개념이)잘 정의되어 있고 이해하기 쉽습니다.
프레임워크와 도구 선택하기
현대의 웹 애플리케이션들은 몇몇 컴포넌트들에 의존합니다.
스토리지: 관계형 데이터베이스, NoSQL
저장라이브러리: 단순형, ORM
웹 서버
패키지 매니저
서버-사이드 프레임워크
클라이언트-사이드 프레임워크
테스팅 라이브러리
버전 컨트롤
선택은 전적으로 컨택스트(context)에 달려있습니다. 저는 배포 환경에 맞춰 특정 기술들을 사용해 왔습니다. 그리고 전 오픈소스 소프트웨어를 만들 때 사람들이 쉽게 설치할 수 있는 제품을 선호합니다. 이번 경우에 저의 선택은 제 자신의 전문영역과 독자들이 관심 있어 하는 기술에 대한 피드백을 기초로 정할 예정입니다.
서버-사이드(Server-Side)
노드(node.js)로 웹앱을 만드는 것은 어떤 식으로든 프레임워크가 관계됩니다. 만약 우리의 주간 아티클 Node Roundup을 읽었다면 뛰어난 프레임워크들이 수 없이 많이 존재한다는 걸 잘 알 겁니다. 어떤 것들은 Rails나 Django를 Node로 완벽 포팅하는 걸 목표로 삼기도 하고, 또 어떤 것들은 라우팅과 HTTP영역에 집중하고 있습니다. Rails스러운 프레임워크의 한 예는 Geddy입니다. 좀 더 간결한 걸로는 Sinatra 스타일의 프레임워크인 Express(엑스프레스)가 있습니다. Exprees는 2009년 6월에 시작되서 지금까지 꾸준히 업데이트 되고 있습니다.
더 큰 사이즈의 프레임워크들은 보통 모델/뷰/컨트롤러 추상화를 통해 리소스와 파일간의 one-to-many 맵핑을 제공합니다. 프로젝트는 다음과 같이 구성될 예정입니다.
모델: user.js, note.js
컨트롤러: users.js, notes.js
뷰: index.html (아이템 목록), edit.html, new.html
모든 프레임워크가 다 MVC인건 아닙니다. 또한 node.js 월드에는 마이크로 프레임워크(microframeworks)라 불리는 것들이 많습니다. 저도 처음에는 Express가 마이크로 프레임워크라 생각했었습니다만, Express는 모든 스택을 다루는 추상층을 제시하고 있습니다. 네, 마이크로 프레임워크라 불리기엔 조금 더 뚱뚱하죠.
제 생각엔 Express가 이번 프로젝트에 적절한 것 같습니다. 상식적인 수준내에서 어떤 프레임워크이든 잘 쓸 수 있긴 합니다만, Express 번들이면 지나치게 무겁지 않는 수준에서 즐겁게 작업하기에 충분합니다.
프론트엔드(Frontend)
어떤 종류의 UI 프레임워크는 인터페이스 개발시에 필요한 잡다구리한 일들을 줄여줍니다. 자바 스크립트 UI 프레임워크들은 지난 수년사이에 폭발적으로 증가했습니다. 다음과 같은 종류의 프레임워크들이 우리 프로젝트에 사용가능합니다.
풍부하고(Rich), 데스크탑스러운 프레임워크: Cappuccino(카푸치노), SproutCore, Ext.js
저 수준 기능들을 제공하는 프레임워크: jQuery, Prototype, MooTools
저 수준과 리치 UI툴이 혼합된 프레임워크: YUI
저수준 프레임워크 위에 올려진 인터페이스에 특화된 라이브러리: Scriptaculous, jQuery UI
제 생각에 SproutCore(스프라우트 코어)와 Cappuccino는 이번과 같은 프로젝트에 적용하기에는 다소 무거운 것 같습니다. 지금은 jQuery UI와 Aristo theme가 잘 어울릴 것 같습니다. 무겁다는 느낌을 주지 않고도 훌륭한 결과를 얻을 수 있습니다.
테스팅(Testing)
CommonJS Unit Testing Specification에 대해서는 “프레임워크를 만들어 봅시다”에서 언급했었습니다. Nodeunit은 CommonJS의 assert 모듈에 기반합니다. 그리고 이전에 작성했던 단위테스트들과도 매우 흡사합니다.
한편, Expresso(엑스프레소)는 서버를 좀 더 깔끔하게 테스트 할 수 있도록 assert.response를 제공합니다. Expresso는 Express와 동일한 저자(TJ Holowaychuk)가 만들었습니다. 그러니 이런 류의 기능을 제공한다는 건 사실 놀라운 건 아니죠. (테스트에 대해서는) 어느 쪽 노선을 따를지는 아직 결정 못했습니다. 앱을 만들어 가면서 둘 다 써보고 결정하겠습니다.
저장소(Storage)
저장소는 지난 2년간 미친듯이 변했습니다. 제가 처음 일을 시작 했을 때는 관계형 데이터베이스 아니면, 객체 데이터베이스(
Comments
OK
daclouds | 2011-10-28 금요일 오후 8:11
--
good luck!
doortts | 2011-10-29 토요일 오후 12:2
--
OK
백기선 | 2011-10-28 금요일 오후 10:2
--
good luck 2!
doortts | 2011-10-29 토요일 오후 12:2
--
OK
코마살부 | 2011-10-31 월요일 오전 11:37
--
OK
wafe | 2011-11-01 화요일 오전 12:46
--