c o d i n g . . ๐Ÿ‰/Node.js

[์ƒํ™œ์ฝ”๋”ฉ] Node.js ๋ฅผ ์ด์šฉํ•ด ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ(2)

H J 2021. 7. 12. 16:18

๋™๊ธฐํ™” ๋น„๋™๊ธฐํ™”

let fs = require('fs');

// Sync
console.log('1');
let data = fs.readFileSync('data.txt',{encoding:'utf8'});
console.log(data);

//Async
console.log('2');
fs.readFile('data.txt', {encoding:'utf8'}, function(err, data){
    console.log('3');
    console.log(data);
});
console.log('4');


 

Express

 

express๋ฅผ ์„ค์น˜ํ•œ ํ›„!

 

let express = require('express');
let app = express();

app.get('/', function(req, res){
    res.send('Hello home page');
});

app.get('/login', function(req, res){
    res.send('Login please');
});

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

์ด๋ ‡๊ฒŒ express๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

get์„ ํ†ตํ•ด์„œ ๋“ค์–ด์˜จ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค!

 

 

 

์ •์ ์ธ ํŒŒ์ผ ์„œ๋น„์Šคํ•˜๋Š” ๋ฒ•

 

let express = require('express');
let app = express();

app.use(express.static('public'));

app.get('/', function(req, res){
    res.send('Hello home page');
});

app.get('/route', function(req, res){
    res.send('Hello Router, <img src="/cat.jpg">');
});

app.get('/login', function(req, res){
    res.send('Login please');
});

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

 

์ •์ ์ธ ํŒŒ์ผ์„ ์„œ๋น„์Šคํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๋Ÿฐ ์ฝ”๋“œ๋ฅผ ํ•ญ์ƒ ์“ฐ๊ณ  public์ด๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์ •์ ์ธ ํŒŒ์ผ์„ ๊ฐ€์ ธ๋‹ค ๋‘๋ฉด ๋œ๋‹ค

app.use(express.static('public'));

 

 

์›นํŽ˜์ด์ง€ ํ‘œํ˜„ํ•˜๋Š” ๋ฒ•

 

1. ์ •์ ์ธ ํŒŒ์ผ ์ „๋‹ฌ

 

public ๋””๋ ‰ํ† ๋ฆฌ์— ์ด๋ฏธ์ง€๋‚˜ html ์ €์žฅ ํ›„ ์œ„์˜ ๋ฐฉ๋ฒ•์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค!

 

http://localhost:3000/static.html

์ด๋Ÿฐ ์‹์œผ๋กœ ์ •์ ์ธ ํŒŒ์ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ!

(์ •์ ์ธ ํŒŒ์ผ์€ ๋ณ€๊ฒฝ๋˜๋ฉด ์„œ๋ฒ„๋ฅผ ๊ป๋‹ค ํ‚ฌ ํ•„์š”์—†์ด ๋ณ€๊ฒฝ๋จ)

 

 

2. ๋™์ ์ธ ํŒŒ์ผ ์ „๋‹ฌ

app.get('/dynamic', function(req, res){
    let output = `<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        Hello, Dynamic!
    </body>
    </html>`;
    res.send(output);
})

์ด๋ ‡๊ฒŒ ๋™์ ์ธ ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ณ  ์„œ๋น„์Šคํ•  ์ˆ˜ ์žˆ๋‹ค

๋™์ ์ธ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ ํ›„์—๋Š” ์„œ๋ฒ„๋ฅผ ๊ป๋‹ค๊ฐ€ ์ผœ์•ผ ๋ฐ”๋€๋‹ค

 

app.get('/dynamic', function(req, res){
    let lis = '';

    for(let i=0;i<5;i++){
        lis = lis + '<li>coding</li>';
    }

    let time = Date();

    let output = `<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        Hello, Dynamic!
        <ul>
            ${lis}
        </ul>
        ${time}
    </body>
    </html>`;
    res.send(output);
})

์ด๋Ÿฐ ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

์ •์ , ๋™์ ์ธ ํŒŒ์ผ์˜ ์žฅ์ ๋งŒ ๋ชจ์€ ๋ฐฉ๋ฒ• -> ํ…œํ”Œ๋ฆฟ ์—”์ง„

 

๋จผ์ € ์„ค์น˜๋ฅผ ํ•ด์ค€๋‹ค! ๊ฐ•์˜์—์„œ๋Š” npm install jade --save ๋กœ ๋‹ค์šด๋ฐ›์•„์„œ ๋‚˜๋„ ๊ทธ๋ ‡๊ฒŒ ํ•ด๋ณด์•˜๋Š”๋ฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ดค๋”๋‹ˆ

ํ˜„์žฌ๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค๊ณ  ํ•œ๋‹ค!!  npm install pug --save 

 

(์•ž์œผ๋กœ ๊ฐ•์˜์—์„œ ๋‚˜์˜ค๋Š” jade์˜ ๋ถ€๋ถ„์œผ๋กœ ๋ชจ๋‘ pug๋กœ ๋ฐ”๊พธ์–ด ์‚ฌ์šฉํ•˜๋ฉด ๋จ!!)

 

let express = require('express');
let app = express();

app.set('view engine', 'pug');
app.set('views', './views');

app.get('/template', function(req, res){
    res.render('temp');
});

ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์‚ฌ์šฉํ•  ๋•Œ 

 

app.set('view engine''pug');

app.set('views''./views');

์ด ์ฝ”๋“œ๋ฅผ ํ•ญ์ƒ ์‚ฌ์šฉํ•˜๊ณ  pug ํŒŒ์ผ์„ views๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋œ๋‹ค

 

app.get('/template'function(reqres){

    res.render('temp');

});

ํ•ญ์ƒ ์‚ฌ์šฉํ•˜๋˜ send๊ฐ€ ์•„๋‹Œ render๋ฅผ ์‚ฌ์šฉํ•ด์„œ temp.pug ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜จ๋‹ค

 

Jade ๋ฌธ๋ฒ•

 

์ค„๋ฐ”๊ฟˆ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ƒˆ๋กœ์šด ํƒœ๊ทธ๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค„๋ฐ”๊ฟˆ์„ ํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค!

app.get('/template', function(req, res){
    res.render('temp', {time: Date(), _title:'Jade'});
});

pug ํŒŒ์ผ์— ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋ฐ›์•„์˜ค๋ ค๋ฉด js ํŒŒ์ผ์—์„œ ์œ„์™€ ๊ฐ™์ด { ๋ณ€์ˆ˜๋ช…: ํ• ๋‹น ๊ฐ’ }์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค

 

[pug ํŒŒ์ผ]

html

    head

        title_title

    boby

        h1 Hello Jade

        ul

            -for(let i=0i<5;i++)

                li coding

        divtime

 

๋”๋ณด๊ธฐ

์™ ์ง€ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ body ํƒœ๊ทธ๊ฐ€ ๊ฒน์นœ๋‹คใ…œใ…œ