레지스트
컴퓨터\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
문자열값 추가
이름 : 어플리케이션 경로(C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe)
데이터 : ^ RUNASADMIN
레지스트
컴퓨터\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의 폴더 구조와 비슷하게..
외부 모듈 정리