ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.js] 개요 - 웹페이지 생성 preview, query string
    생활코딩/WEBn 2020. 9. 9. 20:42

    [강의 출처] opentutorials.org/course/3332

     

    WEB2 - Node.js - 생활코딩

    수업소개 이 수업은 JavaScript를 이용해서 Node.js를 제어해 동적으로 HTML 코드를 생성하는 웹애플리케이션을 만드는 방법에 대한 수업입니다.  수업대상 예를들어 1억개의 페이지로 이루어진 웹사

    opentutorials.org


    Node.js

    • javascript를 웹브라우저 외부(컴퓨터 자체나 서버 등)에서도 사용할 수 있도록 환경을 구현해주는 플랫폼
    • javascript 기반으로 웹페이지를 자동으로 생성하기 때문에 서버쪽 애플리케이션(Server Side Application)이기도 함
      • html을 직접 타이핑해서 웹페이지를 만들면 구조를 바꾸는 등의 작업은 굉장히 복잡해지지만,
      • html template을 정의함으로써 손쉽게 여러 개의 html 페이지 제어가 가능
      • Node.js를 통해서 클라이언트의 요청에 따라 순간순간 페이지(사용자에게 전송할 데이터)를 생성할 수 있음

     

    Node.js로 웹페이지 생성하기 Preview

    만약 여러 html 페이지가 같은 스타일로 구성되어 있다면(탬플릿을 공유한다면)

    기본 모양이 될 탬플릿을 설정한 후,

    유저의 요청에 따라 동적으로 변동될 데이터 부분만을 따로 모아두고

    요청이 오면 탬플릿에 유저의 요청 데이터를 반영해서 출력해주는 형태로 보여줄 수 있다.

    예제에서는 node.js로 웹서버를 운영하는 상태에서, 유저의 요청을 url 쿼리스트링을 통해 처리한다.

     

     

    쿼리 스트링(query string)

    • url 등에 붙어서 클라이언트가 어떤 데이터를 요청하는지 표현해주는 구문
    • 물음표로 시작하고, =로 이름과 값(id: HTML)을 나타내며, 각 이름들은&로 구분한다.(id & page),
    • 이를 통해서 html의 12페이지처럼 구체적인 데이터 요청이 가능해진다.
    • node.js의 url 모듈을 통해 파싱이 가능하다 (ex url.parse(request.url, true).query)

    URL 구조

     

    Preview 예제

    var http = require('http');
    var fs = require('fs');
    var url = require('url');          // node에서 url 모듈 호출
    
    var app = http.createServer(function(request, response){
        var _url = request.url;        // 요기는 모듈 아니고 유저한테 입력받은 url, 구분을 위해 _ 추가
        var queryData = url.parse(_url, true).query;       // 입력받은 url 파싱
    
        /************** 템플릿용 예시데이터 시작 ***********/
        var title = queryData.id;                          // 유저가 입력한 데이터에서 id 추출
        var template = `Hello, This is ${ title } page.`;  // 템플릿에 id를 넣어서 데이터 완성
        var text =                                         // 여기도 무의미한 템플릿 예시임
        `
           ${ title } Lorem ipsum dolor sit amet,
           ${ title } consectetur adipisicing elit,
           ${ title } sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
           ${ title } Ut enim ad minim veniam,
           ${ title } quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
           ${ title } Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
           ${ title } Excepteur sint occaecat cupidatat non proident,
           ${ title } sunt in culpa qui officia deserunt mollit anim id est laborum.
            `;
        /************** 템플릿용 예시데이터 종료 ***********/
    
        if(_url == '/'){                                  // id 입력 없이 홈페이지로 접속했다면
            template = 'type something for url id.';      // 보여줄 내용 선택
            text = 'like: ?id=something';
        }
        response.writeHead(200);
        response.end(template + "\n\n" + text); // 사용자가 요청한 데이터를 보여주는 부분
    });
    app.listen(3000);      // 포트번호는 3000번으로 설정
    

    위 스크립트 이름이 helloworld.js 라고 할 때, 맥 터미널로 아래와 같이 실행시키면 노드로 웹서버를 구동할 수 있다.

    $ node helloworld.js

    설정한 포트번호가 3000번이므로 http://localhost:3000 주소에 접속하면 이런 결과가 출력된다.

    http://localhost:3000/

    id에 뭔가를 입력하면 이런 결과를 확인할 수 있다.

    http://localhost:3000/?id=something

     

    댓글

Designed by Tistory.