HTML 웹페이지 제작하기

이제부터 Express 모듈을 사용하여 직접 웹서버를 개발해보도록 하겠습니다.

1. Repository 생성

Github 에서 New Repository 를 통해 프로젝트 리파지토기를 생성합니다.

  • Repository Name : URLShortener
  • Initialize this repository with a README 체크
  • Add .gitignore : Node
  • Add a license : MIT

위와 같이 리파지토리를 생성하면, 자동으로 .gitignore, LICENSE, README.md 파일이 생성됩니다.

이제 git clone 으로 로컬 PC 에 복재해 오도록 하겠습니다.

$ git clone https://github.com/[본인계정]/URLShortener.git
$ cd URLShortener

2. Express 웹서버 개발

package.json 파일을 생성하기 위하여 npm init 명령어를 실행하고, Express 모듈을 설치하도록 합니다.

$ npm init
$ npm install --save express

웹서버를 구현 할 server.js 파일을 아래와 같이 작성합니다.

var express = require('express');
var app = express();
app.use(express.static('public'));

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
});

위의 코드는 Express에서 제공하는 express.static 미들웨어를 사용하여 static 서비스를 위한 폴더명을 지정하는 것입니다.

이제 ./public/index.html파일을 아래와 같이 작성합니다.

<html>
  <head>
    <title>URL Shortener</title>
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
  </head>
  <body>
    <br><br>

    <form id="createUrl" role="form">
      <input type="url" id="longUrl">
      <button type="submit">Shorten !</button>
    </form>

    <br><br>

    <h2><strong id="shortUrl"></strong></h2>

    <script type="text/javascript">
      var API_SERVER = 'http://localhost:3000';

      $( "#createUrl" ).submit(function( event ) {

        event.preventDefault();

        var longUrl = $('#longUrl').val();

        $.ajax({
          url: API_SERVER + '/url/' + encodeURIComponent(longUrl)
          , crossDomain: true
          , dataType: "json"
          , type: 'GET'
          , data: {}
          , success: success
          , error: function(jqXHR, textStatus, errorThrown){
              alert(errorThrown);
          }
        });

      });

      var success = function(data){
        $('#shortUrl').text(API_SERVER +'/' +data.key);
      };
    </script>
  </body>
 </html>

URL을 입력 받을 수 있도록 HTML 테그를 작성하고, 버튼을 클릭하는 이벤트가 발생하면, JSONP(JSON with padding)로 서버의 API를 호출하도록 구현합니다. 버튼의 이벤트와 같은 일부 로직 부분은 JQuery를 사용하였습니다.

웹브라우저로 http://localhost:3000 에 접속하면, 아래와 같은 화면이 나오게 될 것이다.

results matching ""

    No results matching ""