레지스트

컴퓨터\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers


문자열값 추가 

이름 : 어플리케이션 경로(C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe)

데이터 : ^ RUNASADMIN

module

 version 

 desc 

 node 

 4.2.1 

 

 express

 4.13.4 


multer

 1.1.0

 

var multer = require('multer');
var storage = multer.diskStorage({
    destination: function (req, file, callback) {
        callback(null, './uploads');
    },
    filename: function (req, file, callback) {
        console.log(req);
        console.log(file);
        callback(null, Date.now() + '_' + file.originalname);
    }
});
var upload = multer({ storage : storage }).single('image');

router.post('/html_upload_complete', function (req, res, next) {
    upload(req, res, function (err) {
        if (err) {
            return res.end("Error uploading file.");
        }
        res.end("File is uploaded");
    });
});

module

 version 

 desc 

 node 

 4.2.1 

 

 express

 4.13.4 

 

var express = require('express');
var app = express();
app.use('/css', express.static(__dirname + "/css"));

module

 version 

 desc 

 node 

 4.2.1 

 

 express

 4.13.4 


 jade

 1.11.0

 1. jade 파일 로딩 기본

var jade = require('jade');
var fs = require('fs');

router.get('/jade', function (req, res) {
    fs.readFile('./View/jade_test.jade', 'utf8', function (error, data) {
        res.writeHead(200, { 'Content-Type' : 'text/html' });
        var fn = jade.compile(data);
        res.end(fn());
    });
});


2. jade 파일 로딩 데이터 전달

router.get('/jade_json', function (req, res) {
    fs.readFile('./View/jade_json.jade', 'utf8', function (error, data) {
        res.writeHead(200, { 'Content-Type' : 'text/html' });
        var fn = jade.compile(data);
        res.end(fn({
            name : 'deitrihi',
            desc : 'Hello Deitrihi'
        }));
    });
});

fn( json 데이터 ) 사이에 데이터 전달

module

 version 

 desc 

 node 

 4.2.1 

 

 express

 4.13.4 


 ejs

 2.4.1




 

1. 파일 로딩 기본

var ejs = require('ejs');
router.get('/ejs', function (req, res) {
     // EJS는 인코딩이 필요함
    fs.readFile('./View/ejs_test.ejs', 'utf8', function (error, data) {
        res.writeHead(200, { 'Content-Type' : 'text/html' });
        res.end(ejs.render(data));
    });
});


2. 파일 로딩 param 전달

var ejs = require('ejs');
var url = require('url');

// JSON 전달
router.get('/ejs_json', function (req, res) {
    fs.readFile('./View/ejs_json.ejs', 'utf8', function (error, data) {
        res.writeHead(200, { 'Content-Type' : 'text/html' });
        res.end(ejs.render(data, {
            name : 'deitrihi',
            desc : 'Hello Deitrihi'
        }));
    });
});

// GET 데이터 JSON으로 전달
router.get('/ejs_req', function (req, res) {
    var query = url.parse(req.url, true).query;
    fs.readFile('./View/ejs_req.ejs', 'utf8', function (error, data) {
        res.writeHead(200, { 'Content-Type' : 'text/html' });
        var txt = JSON.stringify(query);
        res.end(ejs.render(data, JSON.parse(txt)));
    });
});

파리미터로 Json 데이터 전달
ejs.render(data, JSON.parse(txt))

module

 version 

 desc 

 node 

 4.2.1 

 

1. 파일 읽기

var fs = require('fs');

fs.readFile('./View/html_test.html', 'utf8', function (error, data) {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end(data);
});


2. 파일 쓰기

var fs = require('fs');
fs.createWriteStream(__dirname + '/log/logfile2.log', { flags: 'a' });

module

 version 

 desc 

 node 

 4.2.1 

 

 express

 4.13.4 


 express-logger

 0.0.3  express 기본 로거 
 morgan 1.6.1  morgan 로거 

1. 기본

var express = require('express');
var logger = require('express-logger');

var app = express();

app.use(logger({ path: './log/logfile.log', format: ':method + :date' }));


2. morgan 사용 ( + 파일시스템 )

var express = require('express');
var fs = require('fs');
var morgan = require('morgan');

var app = express();

var logfile = fs.createWriteStream(__dirname + '/log/logfile2.log', { flags: 'a' });
var mo = morgan('combined', { stream : logfile, skip : false });
app.use(mo);


3. express-logger 상세


4. morgan 로거 상세



 module

 version 

 desc 

 node 

 4.2.1 

 

 express

 4.13.4 

router 사용


1. 기본

1) express 선언 (필수)
var express = require('express');

2) router 객체 사용 (필수)
var app = express();
var router = express.Router();

3) router 패턴 선언 (옵션)
    // 루트 선언
    router.get("/", function (req, res) {
        res.status(200).send("OK");
    });
    router.post('/html', function (req, res, next) {
        res.status(200).send("OK");
    });
    // 선언되지 않은 router 접근시 에러 발생
    // *** js 특성상 위에서부터 판단하기 때문에 해당 내용은 맨 마지막에 선언
    router.all("*", function (req, res) {
        res.status(404).send("Page Not Found");
    });

4) router 등록
    app.use("/", router);


2. 응용1 ( router 분리시 )

1) server.js
    var express = require('express');
    var app = express();
    var route = require('./routes/router');        // router.js 참조

    // route 등록
    app.use("/", route);

2) router.js
    var express = require('express');
    var app = express();
    var router = express.Router();

    router.get("/", function (req, res) {
        res.status(200).send("OK");
    });
    // 만들어둔 router를 module.exports로 내보낸다.
    module.exports = router;

express 사용시 기본 폴더 구조


개인적인 의견이므로 절대적인 구조는 아니고,
지속적인 업데이트로 프로젝트 개발시 기본 구조로 활용하기 위한 포스트 입니다.

컴파일 및 npm 설치 과정에서 생겨나는 기본 폴더는 제외입니다.

/

- css --> 공용 CSS ( 실제 프로젝트에는 별도의 서버를 사용 )

- js --> 클라이언트측 JS ( 실제 프로젝트에는 별도의 서버를 사용 )

- routes --> router의 집합. View 단위별로 js 파일 분리

-> ex) user.js, manage.js...

- views --> html, jade, ejs 등과 같은 View 객체

-> 가급적 routes의 폴더 구조와 비슷하게..

외부 모듈 정리

+ Recent posts