Data house
생활코딩 node.js_17강부터 19강까지 본문
# JavaScript - 조건문
제어문의 대표적인 사례인 조건문은 조건에 따라서 서로다른 코드가 동작하면서 프로그램의 실행 흐름을 제어한다.
첫번째 if문의 조건이 true이면 if 조건문의 안을 실행하고 그렇지 않으면 if else 구문의 조건을 검사한 뒤 그 안을 실행하고 if else 구문이 이어지고 참인 조건이 나타나지 않는 한 조건 검사 지속, 모두 불만족하면 else 구문의 안을 실행한다.
# Node.js - 콘솔에서의 입력값
software을 정의하는 여러가지 방법 중 하나를 알아볼 것이다.
프로그램은 입력에 대해서 정보를 처리한 후 그 결과를 출력하는 기계이다.
입력을 부르는 여러가지 표현이 있는데 input, parameter, argument가 있다.
parameter은 입력되는 정보의 형식이 있는 것을 말하고 argument는 형식에 맞게 입력한 값을 말한다.
아무튼 프로그램은 input과 output으로 이루어져있어서 IO라고도 부른다.
프로그램을 만들 때 이미 웹 어플리케이션에서 URL parameter을 통해서 입력값을 줍고 그 결과를 html로 출력을 했었다.
콜솔에서는 우리가 실행할 때 콘솔화면에 출력을 했다.
그리고 프린트에 출력하거나 파일에 저장하는 것도 output이라고 할 수 있다.
여튼 input과 out은 여러가지 종류가 있을 수도 있다.
이번 시간에 살펴볼 input은 콘솔에서 명령을 실행할 때 입력값을 주는 방법을 살펴볼 것이다.
입력값에 따라서 프로그램이 내부에서 조건문을 이용해서 입력값이 무엇이냐에 따라서 다르게 동작해서 다른 output을 출력하는 프로그램을 만들어 볼 것이다.
Atom) command line에서 arguments를 node.js에게 넣을 수 있는 법 --> var args = process.argv;
cmd) node syntax/conditional.js egoing을 치면 위 화면과 같이 args 안에 있는 정보 3개가 배열의 형식으로 출력된다.
첫 번째 정보는 node.js runtime이 어디에 위치하고 있는지에 대한 정보를 주고 있다.
두 번째 정보는 우리가 실행시킨 파일의 경로를 표시하고 있다.
세 번째 정보는 우리가 입력한 입력값을 주고있다.
세 번째 정보부터 입력값을 주도록 약속되어 있다. 그리고 세 번째 값을 가져오려면 Atom의 코드를
console.log(args[2])라고 수정해주면된다.
이 점을 착안해서 입력값에 따라 조건문을 실행시켜 출력되는 값을 다르게 해볼것이다.
Atom) if(arg[2] === '1'){} --> 입력값이 문자 1과 같다
cmd) 위의 결과값은 true가 되어서 c1이 실행되었고 아래의 결과값은 false가 되어서 c2가 실행되었다.
# Node.js - App제작_Not found 구현
다음과 같이 main.js 코드를 수정해주었따!
뭘 삭제했는지는 궁금해하지않아도 좋다 왜냐면 삭제한 것을 더 효율적이면서 깔끔하게 다시 구현할 것이기 때문이다!
사용자가 Querystring이 없는 web을 클릭했을 때 welcome page를 출력할 것이고
만약 목록을(HTML, CSS, JavaScript) 클릭했을 때 Querystring이 있는(=id값이 있는) 주소로 접속하면 id값에 해당되는 값을 데이터디렉토리에서 찾아서 web page를 생성할 것이다.
그리고 그 외의 주소로 들어왔을 때, 예를들어 주소값이 localhost:3000/mamaamamama 이라면 파일경로를 찾을 수가 없다는 오류 메시지를 사용자에게 전송하는 기능을 만들어볼 것이다.
사용자가 root로 접근했는가의 여부가 중요하다. 여기서 root란 주소값 뒤에 path정보가 붙지 않는 상태를 의미한다.
url.parse(_url, ture) --> 주어진 url을 분석하는 코드 (console.log와 같이 실행하면 다양한 정보가 뜬다.)
위의 코드를 사용해서 얻은 다양한 정보 중에서 path정보를 이용할 것이다.
url에 주어진 path정보가 Querystring에 저장된 id값과 일치하면 그에 따라 화면을 띄우고 path정보가 등록되지 않은 이상한 정보라면 404페이지를 띄우도록 조건문을 통해 작성해볼 것이다.
var pathname = url.parse(_url, true).pathname; --> url을 분석하여 나온 데이터 중에서 pathname을 변수에 담았다.
if (pathname === '/') {} --> path정보가 없는 경로로 실행했다면 조건문 이하를 실행한다.
else{} --> 그 외의 경로로 접속했다면 error를 표시한다.
# Node.js - App제작_홈페이지 구현
아직 우리는 home에 대한 처리를 하지 않았다. 단, 수정에 앞서서 home의 주소를 알 수 있는 방법부터 찾아야한다.
앞서 만들었던 var pathname은 home과 각각의 pages를 구분할 수 없다.
음.... 반복문을 중첩해서 사용한다면 구분할 수 있 수 있을 것이다.
구분 기준은 queryData.id로 할 것이다. querystring이 있다면 queryData.id는 어떠한 값을 가지고 있을 것이고 querystring이 존재하지 않는다면 queryData.id의 값은 존재하지 않을 것이다.
따라서 if (pathname === '/') {} 안에 queryData.id가 정의되지 않은 데이터이면 home이다.
코드를 보자
위의 화면처럼 home화면에는 'welcome'과 'hello, Node.js'라는 문구가 나오게 하고 싶을 때
'welcome'을 출력할 수 있게하는 title변수를 수정해주고 'hello, Node.js'를 출력할 수 있게하는 description변수를 수정해준다.
else 이하는 원래 있던 fs.readFile() 함수를 복붙해서 넣어 준 것이다.
'WEB > node.js' 카테고리의 다른 글
생활코딩 node.js_23강부터 24강까지 (0) | 2020.09.10 |
---|---|
생활코딩 node.js_20강부터 23강까지 (0) | 2020.09.08 |
생활코드 node.js_14강부터 16강까지 (0) | 2020.09.05 |
생활코드 node.js_10강부터 13강까지 (0) | 2020.09.05 |
생활코딩 node.js_ 7강부터 9강까지 (0) | 2020.09.04 |