SMALL

Study/Node.js 60

[노드JS] 요청 파라미터 확인하기

URL 객체의 속성을 보면 주소 문자열의 여러 가지 정보가 포함되어 있다.그 중에서도 query 속성은 요청 파라미터 정보를 가지고 있는데, 이 정보를 잘 살펴보면 여러 개의 요청 파라미터가 모두 들어있다. 웹 서버에서는 클라이언트에서 요청한 요청 파라미터를 받아 처리할 때가 많으므로 이 query 속성에 들어 있는 문자열을 다시 각각의 요청 파라미터로 분리해야 한다. 요청 파라미터는 &기호로 구분되는데 querystring 모듈을 사용하면 요청 파라미터를 쉽게 분리할 수 있다. ch04_test1.js 파일에 다음 코드를 추가로 입력한다. // 요청 파라미터 구분하기var querystring = require('querystring');var param = querystring.parse(curURL..

Study/Node.js 2019.03.18

[노드JS] 주소 문자열을 URL 객체로 변환하기

url 모듈에서 문자열을 객체로 만들건아 객체를 문자열로 만들기 위해 사용하는 주요 메소드는 다음과 같다. 메소드 이름 설명 parse() 주소 문자열을 파싱하여 URL 객체를 만들어 준다. format() URL 객체를 주소 문자열로 변환한다. 그러면 네이버 모바일 사이트에서 steve jobs를 검색할 때 사용되는 주소 문자열을 URL 객체로 만들거나 URL 객체에서 다시 원래의 주소 문자열로 바꾸는 방법을 간단하게 확인해보자. ch04_test1.js 파일을 새로 만들고 다음과 같이 url 모듈을 사용하는 코드를 입력한다. var url = require('url'); // 주소 문자열을 URL 객체로 만들기var curURL = url.parse('https://m.search.naver.com/..

Study/Node.js 2019.03.16

[노드JS] 주소 문자열과 요청 파라미터 다루기

웹 사이트에 접속하기 위한 사이트 주소 정보는 노드에서 URL 객체로 만들 수 있다.예를 들어, 구글 사이트에서 영화배우 정보를 찾기 위해 키워드로 actor를 넣고 [검색] 버튼을 누르면, 다음과 같은 주소 문자열을 만들어 검색 요청을 하게 된다. https://www.google.co.kr/?gws_rd=ssl#newwindow=1&q=actor 그런데 이렇게 만들어진 주소 문자열은 단순 문자열이므로 서버에서 이 정보를 받아 처리할 때는 어디까지가 사이트 주소인지, 그리고 어떤 내용이 요청 파라미터인지 구별해야 한다. 이 구별을 위해서 ? 기호를 기준으로 앞에 있는 문자열과 뒤에 있는 문자열을 분리하는 경우가 많다. 이 작업을 쉽게 할 수 있도록 노드에 미리 만드어 둔 모듈이 url 모듈이다. URL..

Study/Node.js 2019.03.16

[노드JS] 프로토타입 객체 만들기

자바스크립트의 객체를 만들 때는 중괄호를 이용한다고 했다. 그런데 자바스크립트 객체는 함수를 이용해서 만들수도 있다. 그 이유는 함수도 객체이기 때문이다. 함수에 여러가지 기능과 속성이 추가되면서 객체 지향(Object oriented) 언어에서 객체의 원형(Prototype)인 클래스를 만들고, 그 클래스에서 새로운 인스턴스 객체를 여러 개 만들어 내듯이 자바스크립트에서도 객체의 원형을 정의한 후 그 원형에서 새로운 인스턴스 객체를 만들어 낼 수 있다. ▲ 프로토타입 객체를 정의한 후 프로토타입에서 인스턴스 객체 만들기 Person 프로토타입 객체는 데이터를 넣어 두려는 목적보다는 하나의 틀로 사용하기 위해 만든다. 붕어빵 틀에서 실제 붕어빵을 만들어 내듯이 실제 사람을 여러 명 찍어 내기 위한 틀을 ..

Study/Node.js 2019.03.16

[노드JS] 함수 안에서 값을 반환할 때 새로운 함수를 만들어 반환하기

지금까지 함수를 호출했을 때 또 다른 함수를 파라미터로 전달하는 방법에 대해 포스팅한다. 그러면 함수 안에서 값을 반환할 때 새로운 함수를 만들어 반환하는 방법도 살펴보자. ▲ 함수에서 반환하는 값이 함수 객체인 경우 어떤 함수를 실행했을 때 또 다른 함수를 반환받으면 반환받은 함수를 그대로 실행할 수 있다. 이렇게 만들면 하나의 함수를 실행했을 때 추가적인 결과를 얻거나 또는 추가 작업을 할 수 있다. 그러면 더하기 함수를 실행했을 때 그 기록을 남겨 두었다가 출력하는 기능을 가상으로 만들어보자. ch03_test16.js 파일을 만든 후 다음과 같이 입력한다. function add(a, b, callback) { var result = a + b; callback(result); var histor..

Study/Node.js 2019.03.16

[노드JS] 함수를 호출했을 때 또 다른 함수를 파라미터로 전달하기

함수를 파라미터로 전달하는 경우는 대부분 비동기 프로그래밍(Non-Blocking Programming) 방식으로 코드를 만들 때이다. 예를 들어, 더하기 함수를 실행한 후 결과 값이 반환될 때까지 기다리지 않고 그 다음 코드를 실해앟려면 비동기 방식으로 코드를 만들어야 한다. 즉, 더하기 함수를 실행하는 데 시간이 걸릴 수 있기 때문에 그 다음 코드를 바로 실행한다. 그리고 연산이 끝났을 때 파라미터로 전달한 함수가 실행될 수 있다면 그 시점에 결과를 처리할 수 있으므로 효율적인 프로그램을 만들 수 있다. 이 때 파라미터로 전달되는 함수를 콜백 함수(Callback function)이라고 한다. 콜백 함수는 함수가 실행되는 중간에 호출되어 상태 정보를 전달하거나 결과 값을 처리하는 데 사용된다. ch0..

Study/Node.js 2019.03.16

[노드JS] slice() 메소드 활용하기

slice() 메소드는 배열의 일부 요소들을 복사하여 새로운 배열을 만들어준다. ▲ slice() 메소드를 이용해 배열의 일부 요소를 복사하여 새로운 배열을 만들기 slice() 메소드에 전달하는 파라미터는 두 개이다. 첫 번째는 복사할 요소의 시작 위치이며 두 번째는 끝 위치이다. ch03_test14.js 파일을 새로 만들고 다음 코드를 입력하자. var Users = [{name:'소녀시대', age:20}, {name:'걸스데이', age:22}, {name:'티아라', age:23}, {name:'애프터스쿨', age:25}]; console.log('배열 요소의 수 : %d', Users.length);console.log('원본 Users');console.dir(Users); var Use..

Study/Node.js 2019.03.16

[노드JS] splice() 메소드 활용하기

splice() 메소드를 호출할 때 전달하는 첫 번째 파라미터는 인덱스 값으로 배열의 몇 번째 요소부터 처리할 것인지를 지정한다.두 번째 파라미터는 삭제할 요소의 개수를 지정한다. 만약 다섯 개의 객체가 들어 있는 Users 배열에서 세 번째와 네 번째 요소를 삭제하고 싶다면 다음과 같이 호출한다. ▲ splice() 메소드를 이용해 배열 요소를 추가하거나 삭제하기 세 번째 요소의 인덱스 값이 2이므로 첫 번째 파라미터의 값은 2가 되고 두 개의 요소를 삭제할 것이므로 두 번째 파라미터의 값도 2가 된다.만약 값을 추가하고 싶다면 두 번째 파라미터의 값을 0으로 입력한 후 추가하려는 객체들을 파라미터로 전달한다. splice() 메소드를 이용해 배열에 요소들을 추가했다가 삭제하는 기능을 만들기 위해 ch..

Study/Node.js 2019.03.16

[노드JS] 배열에 값 추가 및 삭제

배열에 값을 추가하거나 삭제하는 방법을 알아보자.배열에는 다음과 같은 메소드가 포함되어 있어 그 요소 값을 확인하거나 추가 또는 삭제할 수 있다. 속성/메소드 이름 설명 push(object) 배열의 끝에 요소를 추가한다. pop() 배열의 끝에 있는 요소를 삭제한다. unshift() 배열의 앞에 요소를 추가한다. shift() 배열의 앞에 있는 요소를 삭제한다. splice(index, removeCount, [Object]) 여러 개의 객체를 요소로 추가하거나 삭제한다. slice(index, copyCount) 여러 개의 요소를 잘라내어 새로운 배열 객체로 만든다. 먼저 배열의 끝에 요소를 추가하거나 삭제할 때는 push()와 pop() 메소드를 사용한다. 배열에 객체를 추가하는 경우가 많기 때문..

Study/Node.js 2019.03.16