node.js와 express-generator로 간단한 Ajax 프로그래밍

만드는 것




↓ 「2」를 입력하고 버튼을 누르면 Ajax 통신하여 표시합니다.

  • 소스


  • 전제


  • node.js 설치됨

  • express-generator 설치


  • 프레임 워크 Express에서 실행할 수있는 앱의 병아리를 만드는 라이브러리 express-generator 설치
  • npm install -g express-generator
    

    병아리 앱 자동 생성


  • Express 병아리 앱 자동 생성 (만드려는 디렉토리에서 실행하면 ajax-app 디렉토리가 만들어지고 앱이 생성됩니다)
    ## ajax-app というアプリが作成される
    express --view=ejs ajax-app
    # ディレクトリ移動
    cd ajax-app
    # package.jsonが自動生成されているので、そこに書いてあるライブラリをインストール
    npm install
    

    앱 만들기


  • 디렉토리 구조
  • ajax-app/
    ├── app.js  ← 今回修正
    ├── bin
    │   └── www
    ├── node_modules
    ├── package-lock.json
    ├── package.json
    ├── public
    │   ├── images
    │   ├── javascripts
    │   └── stylesheets
    │       └── style.css
    ├── routes
    │   ├── ajax.js  ← 今回追加
    │   ├── index.js
    │   └── users.js
    └── views
        ├── ajax.ejs  ← 今回追加
        ├── error.ejs
        └── index.ejs
    

    액션 만들기


  • routes/index.js를 복사하여 ajax.js를 만듭니다.
  • 초기 표시와 버튼 누름시의 액션을 작성한다.

  • routes/ajax.js
    var express = require('express');
    var router = express.Router();
    
    var data = [
      {name: 'Taro', age: '35', mail: 'taro@yamada'},
      {name: 'Hanako', age: '29', mail: 'kanako@flower'},
      {name: 'Sachiko', age: '41', mail: 'sachiko@happy'},
    ];
    
    // 初期画面表示
    router.get('/', function(req, res, next) {
      var msg = "0〜2の数字を入力して送信してください。";
      var data = {
        title: 'Ajax!',
        content: msg
      };
      res.render('ajax', data);
    });
    
    // ボタン押下時に、data配列のn番目のJSONを送る。
    router.get('/get', function(req, res, next) {
      var n = req.query.id;
      res.json(data[n]);
    });
    
    module.exports = router;
    

    메인 프로그램 (app.js) 수정


  • 엔드포인트/ajax와 파일/route/ajax을 연관시킵니다.

  • app.js(일부)
    //(途中省略)
    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');
    var ajaxRouter = require('./routes/ajax');     // add
    //(途中省略)
    app.use('/', indexRouter);
    app.use('/users', usersRouter);
    app.use('/ajax', ajaxRouter);     // add
    //(途中省略)
    

    뷰 만들기


  • JQuery에서 버튼을 누를 때 num 텍스트 박스의 값을 /ajax/get에 GET으로 보내, 반환 된 값을 화면에 표시합니다.

  • views/ajax.ejs
    <!DOCTYPE html>
    <html lang="ja">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <title><%= title %></title>
        <script src="https://code.jquery.com/jquery.min.js"></script>
        <link rel="stylesheet" href="/stylesheets/style.css">
        <script>
            $(document).ready(function () {
                $('#btn').click(function() {
                    var n = $('#num').val();
                    $.getJSON("/ajax/get?id=" + n, function (json) {
                        var msg = '<table>'
                            + '<tr><th>名前</th>'
                            + '<td>'+ json.name +'</td></tr>'
                            + '<tr><th>年齢</th>'
                            + '<td>'+ json.age +'</td></tr>'
                            + '<tr><th>メール</th>'
                            + '<td>'+ json.mail +'</td></tr>'
                            + '</table>';
                        $('#msg').html(msg);
                    })
                })
            })
        </script>
    </head>
    <body>
    <header>
        <h1><%= title %></h1>
    </header>
    <div role="main">
        <p id="msg"><%- content %></p>
        <input type="text" name="num" id="num">
        <input type="button" id="btn" value="GET!">
    </div>
    </body>
    </html>
    
    

    앱 실행


    npm start
    

    http://localhost:3000을 열고 0~2의 숫자를 입력하고 버튼을 누릅니다.

    참고문헌
    Node.js 초입문 [제2판]

    좋은 웹페이지 즐겨찾기