ํฐ์คํ ๋ฆฌ ๋ทฐ
Node.js๋ก ๊ฒ์ํ ๋ง๋ค๊ธฐ [์์]
๋๋์ด๋ฐ๐พ 2018. 11. 5. 18:34์์ง ์์ฑ๋ณธ์ ์๋์ง๋ง ๋์์ธ์ ์ข ๋ค๋กํ๊ณ ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ํ์ ๋ง๋ค์ด๋ณด๊ณ ์ ํฉ๋๋ค.
์ฌ์ฉ์ธ์ด ๋ฐ ๋๊ตฌ๋ html(pugํ
ํ๋ฆฟ ์ฌ์ฉ), css, jquery, javascript, node.js, mysql (sequelize ์ฌ์ฉ) ์ ๋ ์
๋๋ค.
ํ์ฌ ์งํ์ฌํญ ๋ฐ ๊ณํ์
1. ๊ฒ์ํ ๊ธ ๋ก๋ (์๋ฃ)
2. ํ์ด์ง ๋ถํ (์์ง ์์ ์์ ์ ํจ)
3. ์กฐํ ์ (์๋ฃ)
4. ๊ธ ์ฐ๊ธฐ (ํผ ์์ ์์ ํ์)
5. ๋๊ธ๊ธฐ๋ฅ(์์ง ์์ ์์ ์ ํจ)
5. ๊ฒ์๊ธ ๋ณด๊ธฐ (ํผ ์์ ์์ ํ์)
6. ๋ณธ์ธ ๊ฒ์๊ธ ์์ (์์ง ์์ ์์ ์ ํจ)
7. ๊ฒ์๊ธ ๊ฒ์ (์์ฑ์ ์ด๋ฆ๋ง ์์ ์๋ฃ. ์ ๋ชฉ+๋ด์ฉ ์ ๋ฐ์ดํธ ์์ )
์ผ๋จ์ ์ด ์ ๋ ์ ๋๋ค. ์ง๊ธ๊น์ง ์์ ํ ํ์ด์ง์ ๊ฐ๋จํ ๋์ ์์์ gif ํ์ผ๋ก ๋ง๋ค์ด ๋ณด์์ต๋๋ค.
๊ธฐ์กด์ ์์ ํ๋ ํ์ด์ง์ ํ๋ ํฐ๋ผ ๋ก๊ทธ์ธ์ด๋ ๊ธฐํ ํ๋ฉด๋ค์ด ๊ฐ์ด ๋ค์ด๊ฐ ์๊ธด ํฉ๋๋ค. ๊ฒ์ํ ํ์ด์ง์ ์ํฅ์ ์ฃผ๋ ํ์ผ์ ์ค์ ์ ์ผ๋ก ํฌ์คํ ํ๋ ค๊ณ ํฉ๋๋ค.
์ผ๋จ ๊ธฐ๋ณธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ ๋๋ค.
๋ค๋ฅธ ์ก๋คํ ํ์ผ๋ค์ด ๋ง์์ ํ์ํ ํ์ผ๋ค์ด ์ด ์ฃผ์ ์ ๊ด๋ จ์ด ์๋ ํ์ผ๋ค ์ ๋๋ค.
1. app_mvc.js - app.js ํ์ผ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
2. routes - ๊ฐ์ข ๋ผ์ฐํฐ๋ค์ด ์๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค.
3. views - ์๋จ์ด ์๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค. html ํ์ผ๋ค ์ ๋ pug ํ ํ๋ฆฟ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ pug ํ์ผ๋ค์ด ๋ค์ด์์ต๋๋ค.
4. bin - npm start๋ฅผ ํ์ ๋ ์คํ๋๋ www ํ์ผ์ด ์๋๋ฐ ๊ฐ์ธ ํ๊ฒฝ์ ๋ง๊ฒ๋ ํ์ผ๋ช ์ด๋ ํฌํธ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ํน์ app.js ํ์ผ์ listen์ ์ถ๊ฐํ์ฌ node ๋ช ๋ น์ด๋ก app.js ํ์ผ์ ์คํ์์ผ๋ ๋ฉ๋๋ค.
5. models - ๊ฐ ํ ์ด๋ธ๋ค์ ์ ์๊ฐ ์๋ ๋๋ ํ ๋ฆฌ ์ ๋๋ค. ์ฌ๊ธฐ์๋ board์ user ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
6. config - sequelize ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์ค์ ์ด ์๋ ํ์ผ์ด ๋ค์ด์์ต๋๋ค.
7. function - ์ฌ์ฉ์ ์ ์ ํจ์๋ค์ ๋ชจ์๋์ ๋๋ ํ ๋ฆฌ ์ ๋๋ค.
๊ทธ ์ธ์ ์๋ต๋ ๊ฒ์ ๊พธ๋ฏธ๋ ์ฉ๋ ์ด๊ฑฐ๋ ํน์ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅธ ํ์ผ๋ค ์ ๋๋ค.
[ app_mvc.js ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | var createError = require('http-errors'); var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session') var passport = require('passport') var sequelize = require('sequelize') var bodyParser = require('body-parser'); var models = require('./models') var app = express(); //app.get var indexRouter = require('./routes/index'); var headerRouter = require('./routes/header'); var aboutRouter = require('./routes/about'); var practiceRouter = require('./routes/practice'); var mypageRouter = require('./routes/mypage'); var loginRouter = require('./routes/login'); var enrollRouter = require('./routes/enroll'); var commuityRouter = require('./routes/commuity') var commuityIdRouter = require('./routes/commuity_id') var logoutRouter = require('./routes/logout'); var writeRouter = require('./routes/write'); var facebookRouter = require('./routes/facebook'); var facebookCallbackRouter = require('./routes/facebook_callback'); var facebookSuccessRouter = require('./routes/login_success') //app.post var loginReceiveRouter = require('./routes/login_receive'); var writeReceiveRouter = require('./routes/write_receive'); var enrollReceiveRouter = require('./routes/enroll_receive'); //sequelize models.sequelize.sync() .then(function() { console.log('โ DB connection success.'); console.log(' Press CTRL-C to stop\n'); }) .catch(function(err) { console.error(err); console.log('โ DB connection error. Please make sure DB is running.'); process.exit(); }); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'pug'); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(bodyParser.urlencoded({extended: false})); app.use(bodyParser.json()); app.use(cookieParser()) app.use(session({ secret:'123123123', resave:false, saveUninitialize:true })); app.use(express.static(__dirname)); app.use(passport.initialize()); app.use(passport.session()); //get app.use('/', indexRouter); app.use('/header',headerRouter); app.use('/about',aboutRouter); app.use('/practice',practiceRouter); app.use('/mypage',mypageRouter); app.use('/enroll',enrollRouter); app.use('/login',loginRouter); app.use('/commuity',commuityRouter); app.use('/commuity',commuityIdRouter); app.use('/logout',logoutRouter); app.use('/write',writeRouter); app.use('/auth/facebook',facebookRouter); app.use('/auth/facebook/callback',facebookCallbackRouter); app.use('/login_success',facebookSuccessRouter); //post app.use('/login_receive',loginReceiveRouter); app.use('/write_receive',writeReceiveRouter); app.use('/enroll_receive',enrollReceiveRouter); // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app; | cs |
[ commuity.js ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | var express = require('express') var router = express.Router() var app = express(); var path = require('path') var board = require('../function/board') app.set('views',path.join(__dirname,'views')); app.set('view engine','pug') router.get('/',function(req,res){ board.boardLoadFunction(function(result){ var jsonStr = JSON.stringify(result); if(result.length==0) res.render('commuity',{data:0}) else res.render('commuity',{data:jsonStr}) }) }) module.exports = router; | cs |
[ commuity_id.js ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | var express = require('express') var router = express.Router() var app = express(); var path = require('path') var board = require('../function/board') var models = require('../models') app.set('views',path.join(__dirname,'views')); app.set('view engine','pug') router.get('/:id',function(req,res){ var id = req.params.id; models.Board.findAll({ where: {'id':id} }).then(function(result){ models.Board.update({count:++result[0].dataValues.count}, {where: {'id':id} }) var jsonObj = JSON.stringify(result) res.render('commuity_detail',{data:jsonObj}) }) }) module.exports = router; | cs |
๊ธฐ๋ณธ์ ์ผ๋ก app_mvc.js ํ์ผ์ด ์คํ๋์ด์ routes์ ์๋ commuity์ ๊ด๋ จ๋ pug ํ์ผ์ ๋ ๋๋งํด์ ์คํ๋๋ ๊ตฌ์กฐ์ ๋๋ค.
๋ฌผ๋ก routes ๋๋ ํ ๋ฆฌ ์ ํ์ผ๋ค์ ์์ฑ๋์ด์๋ ๊ฐ์ข ํจ์๋ค์ function์ ์์ฑํด๋์ ํ์ผ๋ค์ด๊ณ ๋ชจ๋์ npm์ ์ด์ฉํด์ ์ค์น๊ฐ
ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ DB๋ฅผ ๊ณ์ ๋๊ณ ๋ค๋๊ธฐ ๋๋ฌธ์ Sequelize ์ค์ ์ด ์ ๋๋ก ๋์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ ์ ๋ฐ์ ์์ต๋๋ค.
์์ ์ด๊ธฐ๋ถํฐ ํฌ์คํ ์ ํ์ง ๋ชปํ๊ฒ ๋์ด ์ผ๋จ ์ฒซ ๊ฒ์๋ฌผ์ ๋์ฒด์ ์ผ๋ก ์ด๋ ๋ค๋ ๋ชจ์ต์ ๋ณด์ฌ ๋๋ฆฝ๋๋ค. ์ด์ ์ ํ๋ ์์ ๋ค๋ ๋ณด์ถฉ์ค๋ช ์ ๊ณ๋ค์ฌ ํฌ์คํ ํ๊ณ , ์์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ๊ฒ์๋ฌผ๋ ๋์์ ์งํํ ์์ ์ ๋๋ค.
ํ์ฌ ์งํ์ค์ธ ์์ ์ https://github.com/JooHyeongLee/webserver_nodejs
์ฌ๊ธฐ์ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ ํ ์์ ์ด๋ฉฐ ์ค๋ฅ๊ฐ ์๊ธฐ๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์~
์์ํ ๊ฒ์ํ ํ์ด์ง๋ฅผ ๊ตฌํํ ํ๋ก์ ํธ ํ์ผ์ด ์๋๋ค๋ณด๋ ์ฌ๊ธฐ์ ๊ธฐ ์ถฉ๋๋๋ ๋ถ๋ถ์ด ์๊ธธ ์ ๋ฐ์ ์์ ๋ฏ ํ๋ค์ ใ
'Node.js > ๊ฒ์ํ ๋ง๋ค๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฒ์ํ ๊ธ ์์ฑํ๊ธฐ (0) | 2018.11.18 |
---|---|
DB์ ์๋ ๋ฐ์ดํฐ ๊ฒ์ํ ํ์ด์ง๋ก ๋๊ธฐ๊ธฐ (3) | 2018.11.12 |
๊ฒ์ํ DB ์ ํ ํ๊ธฐ (Sequelize ์ฌ์ฉ) (1) | 2018.11.09 |
- Total
- Today
- Yesterday
- ๋น๋๊ธฐ ์์ฒญ
- typeorm
- android
- Spring
- DeferredResult
- docker mysql
- nestjs config
- node.js
- nestjs configService
- typeorm ์ฐ๊ฒฐ
- nestjs/cli
- JavaScript
- @nestjs/config
- node.js backend
- nestjs directory
- Request_Limit_Exceeded
- nestjs typeorm
- ๊ธฐ์์ฒญAPI
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- Promise error
- Promise bulk
- foreignkey
- nestjs module
- sequelize
- nestjs doc
- backend-framework
- NestJS
- nestjs project
- Spring Async
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |