임태민

Update project directory

- update index.js
- create directories (public, routes, views)
- create routes.js
- create ejs files
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 }
......
1 +body {
2 + font-family: 'Open Sans', sans-serif;
3 +}
4 +
5 +h1 {
6 + font-family: 'PT Serif', serif;
7 +}
...\ No newline at end of file ...\ No newline at end of file
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
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
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
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
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