Update project directory
- update index.js - create directories (public, routes, views) - create routes.js - create ejs files
Showing
9 changed files
with
177 additions
and
2 deletions
1 | +const express = require('express'); | ||
2 | +const mongoose = require('mongoose'); | ||
3 | +const bodyParser = require('body-parser'); | ||
4 | +const methodOverride = require('body-parser'); | ||
5 | +const app = express(); | ||
6 | + | ||
7 | +// DB Setting | ||
8 | +mongoose.set('useNewUrlParser', true); | ||
9 | +mongoose.set('useFindAndModify', false); | ||
10 | +mongoose.set('useCreateIndex', true); | ||
11 | +mongoose.set('useUnifiedTopology', true); | ||
12 | + | ||
13 | +// Connect DB environment variable | ||
14 | +mongoose.connect('mongodb+srv://Mapmory_admin:admin@cluster0.ncnjj.mongodb.net/Project-Mapmory?retryWrites=true&w=majority'); | ||
15 | + | ||
16 | +// Store DB in the variable 'db' | ||
17 | +var db = mongoose.connection; | ||
18 | + | ||
19 | +// If DB is opened successfully | ||
20 | +db.once('open', function(){ | ||
21 | + console.log('DB connected'); | ||
22 | +}); | ||
23 | + | ||
24 | +// if DB is failed to open | ||
25 | +db.on('error', function(err){ | ||
26 | + console.log('DB ERROR : ', err); | ||
27 | +}); | ||
28 | + | ||
29 | +// Settings | ||
30 | +app.set('view engine', 'ejs'); | ||
31 | +app.use(express.static(__dirname + '/public')); | ||
32 | +app.engine('html', require('ejs').renderFile); | ||
33 | +app.use(bodyParser.json()); | ||
34 | +app.use(bodyParser.urlencoded({extended:true})); | ||
35 | +app.use(methodOverride('_method')); | ||
36 | + | ||
37 | +// Routes | ||
38 | +app.use('/', require('./routes/home')); | ||
39 | + | ||
40 | +var port = 3000; | ||
41 | +app.listen(port, function(){ | ||
42 | + console.log('server on! http://localhost:' + port); | ||
43 | +}); | ... | ... |
1 | { | 1 | { |
2 | - "name": "Project", | 2 | + "name": "Project-Mapmory", |
3 | "version": "1.0.0", | 3 | "version": "1.0.0", |
4 | "lockfileVersion": 2, | 4 | "lockfileVersion": 2, |
5 | "requires": true, | 5 | "requires": true, |
6 | "packages": { | 6 | "packages": { |
7 | "": { | 7 | "": { |
8 | + "name": "Project-Mapmory", | ||
8 | "version": "1.0.0", | 9 | "version": "1.0.0", |
9 | "license": "ISC", | 10 | "license": "ISC", |
10 | "dependencies": { | 11 | "dependencies": { |
12 | + "body-parser": "^1.19.0", | ||
11 | "ejs": "^3.1.6", | 13 | "ejs": "^3.1.6", |
12 | "express": "^4.17.1", | 14 | "express": "^4.17.1", |
15 | + "method-override": "^3.0.0", | ||
13 | "mongoose": "^5.12.8" | 16 | "mongoose": "^5.12.8" |
14 | } | 17 | } |
15 | }, | 18 | }, |
... | @@ -451,6 +454,28 @@ | ... | @@ -451,6 +454,28 @@ |
451 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | 454 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", |
452 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" | 455 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" |
453 | }, | 456 | }, |
457 | + "node_modules/method-override": { | ||
458 | + "version": "3.0.0", | ||
459 | + "resolved": "https://registry.npmjs.org/method-override/-/method-override-3.0.0.tgz", | ||
460 | + "integrity": "sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==", | ||
461 | + "dependencies": { | ||
462 | + "debug": "3.1.0", | ||
463 | + "methods": "~1.1.2", | ||
464 | + "parseurl": "~1.3.2", | ||
465 | + "vary": "~1.1.2" | ||
466 | + }, | ||
467 | + "engines": { | ||
468 | + "node": ">= 0.10" | ||
469 | + } | ||
470 | + }, | ||
471 | + "node_modules/method-override/node_modules/debug": { | ||
472 | + "version": "3.1.0", | ||
473 | + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", | ||
474 | + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", | ||
475 | + "dependencies": { | ||
476 | + "ms": "2.0.0" | ||
477 | + } | ||
478 | + }, | ||
454 | "node_modules/methods": { | 479 | "node_modules/methods": { |
455 | "version": "1.1.2", | 480 | "version": "1.1.2", |
456 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | 481 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", |
... | @@ -1261,6 +1286,27 @@ | ... | @@ -1261,6 +1286,27 @@ |
1261 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | 1286 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", |
1262 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" | 1287 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" |
1263 | }, | 1288 | }, |
1289 | + "method-override": { | ||
1290 | + "version": "3.0.0", | ||
1291 | + "resolved": "https://registry.npmjs.org/method-override/-/method-override-3.0.0.tgz", | ||
1292 | + "integrity": "sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==", | ||
1293 | + "requires": { | ||
1294 | + "debug": "3.1.0", | ||
1295 | + "methods": "~1.1.2", | ||
1296 | + "parseurl": "~1.3.2", | ||
1297 | + "vary": "~1.1.2" | ||
1298 | + }, | ||
1299 | + "dependencies": { | ||
1300 | + "debug": { | ||
1301 | + "version": "3.1.0", | ||
1302 | + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", | ||
1303 | + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", | ||
1304 | + "requires": { | ||
1305 | + "ms": "2.0.0" | ||
1306 | + } | ||
1307 | + } | ||
1308 | + } | ||
1309 | + }, | ||
1264 | "methods": { | 1310 | "methods": { |
1265 | "version": "1.1.2", | 1311 | "version": "1.1.2", |
1266 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | 1312 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | ... | ... |
1 | { | 1 | { |
2 | - "name": "Project", | 2 | + "name": "Project-Mapmory", |
3 | "version": "1.0.0", | 3 | "version": "1.0.0", |
4 | "description": "", | 4 | "description": "", |
5 | "main": "index.js", | 5 | "main": "index.js", |
... | @@ -10,8 +10,10 @@ | ... | @@ -10,8 +10,10 @@ |
10 | "author": "", | 10 | "author": "", |
11 | "license": "ISC", | 11 | "license": "ISC", |
12 | "dependencies": { | 12 | "dependencies": { |
13 | + "body-parser": "^1.19.0", | ||
13 | "ejs": "^3.1.6", | 14 | "ejs": "^3.1.6", |
14 | "express": "^4.17.1", | 15 | "express": "^4.17.1", |
16 | + "method-override": "^3.0.0", | ||
15 | "mongoose": "^5.12.8" | 17 | "mongoose": "^5.12.8" |
16 | } | 18 | } |
17 | } | 19 | } | ... | ... |
Project/public/css/master.css
0 → 100644
Project/routes/home.js
0 → 100644
1 | +const express = require('express'); | ||
2 | +const router = express.Router(); | ||
3 | + | ||
4 | +router.get('/', function(req,res){ | ||
5 | + res.render('home/welcome'); | ||
6 | +}); | ||
7 | + | ||
8 | +router.get('/about', function(req,res){ | ||
9 | + res.render('home/about'); | ||
10 | +}); | ||
11 | + | ||
12 | +module.exports = router; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
Project/views/home/about.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | + <head> | ||
4 | + <%- include('../partials/head') %> | ||
5 | + </head> | ||
6 | + <body> | ||
7 | + <%- include('../partials/nav') %> | ||
8 | + | ||
9 | + <div class="container mb-3"> | ||
10 | + | ||
11 | + <h2 class="mb-3">About</h2> | ||
12 | + | ||
13 | + <P>이 사이트는 <a href="http://a-mean-blog.com/ko/blog/Node-JS-첫걸음/게시판-만들기">http://a-mean-blog.com/ko/blog/Node-JS-첫걸음/게시판-만들기</a>에서 작성되었습니다!</p> | ||
14 | + | ||
15 | + </div> | ||
16 | + </body> | ||
17 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
Project/views/home/welcome.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | + <head> | ||
4 | + <%- include('../partials/head') %> | ||
5 | + </head> | ||
6 | + <body> | ||
7 | + <%- include('../partials/nav') %> | ||
8 | + | ||
9 | + <div class="container mb-3"> | ||
10 | + | ||
11 | + <div class="jumbotron"> | ||
12 | + <h1>My Website</h1> | ||
13 | + <P>제 웹사이트를 방문해 주셔서 감사합니다!</p> | ||
14 | + </div> | ||
15 | + | ||
16 | + </div> | ||
17 | + </body> | ||
18 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
Project/views/partials/head.ejs
0 → 100644
1 | +<meta name="viewport" content="width=device-width,initial-scale=1"> | ||
2 | + | ||
3 | +<!-- jquery & bootstrap --> | ||
4 | +<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> | ||
5 | +<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> | ||
6 | +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> | ||
7 | +<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> | ||
8 | + | ||
9 | +<!-- web font --> <!-- 1 --> | ||
10 | +<link href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap" rel="stylesheet"> | ||
11 | +<link rel="preconnect" href="https://fonts.gstatic.com"> | ||
12 | +<link href="https://fonts.googleapis.com/css2?family=PT+Serif:ital@1&display=swap" rel="stylesheet"> | ||
13 | +<!-- my css --> | ||
14 | +<link rel="stylesheet" href="/css/master.css"> | ||
15 | + | ||
16 | +<title>Mapmory</title> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
Project/views/partials/nav.ejs
0 → 100644
1 | +<nav class="navbar navbar-expand-sm navbar-light bg-light mb-3"> | ||
2 | + <div class="container"> | ||
3 | + <div class="navbar-brand">My Website</div> | ||
4 | + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"> | ||
5 | + <span class="navbar-toggler-icon"></span> | ||
6 | + </button> | ||
7 | + <div class="collapse navbar-collapse" id="navbarSupportedContent"> | ||
8 | + <ul class="navbar-nav"> | ||
9 | + <li class="nav-item"><a href="/" class="nav-link">Home</a></li> | ||
10 | + <li class="nav-item"><a href="/about" class="nav-link">About</a></li> | ||
11 | + </ul> | ||
12 | + </div> | ||
13 | + </div> | ||
14 | + </nav> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment