8. [blackANDwhite] $ npm install
[blackANDwhite] $ DEBUG=blackANDwhite ./bin/www
!!!
[blackANDwhite] $ DEBUG=blackANDwhite ./bin/www
blackANDwhite Express server listening on port
3000 +0ms
GET / 304 273.620 ms - -
GET /stylesheets/style.css 200 79.352 ms - 110
GET /favicon.ico 404 24.240 ms - 1302
9. INSTALL THE DEPENDENCIES
FOR THE APP
$ npm install
์์ฉํ๋ก๊ทธ๋จ์ ์ํด ์ฌ์ฉ๋๋ ๋ชจ๋ ๋ฌด๋ฆฌ ์ค์นํ๊ธฐ
- ์์ฉํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ์ค๋น๊ฐ ๋์ด์๋ค
$ node app
Express server listening on port 3000
22. ADD FUNCTIONS
home.jade ํ์ผ์ ์๋์ ์ฝ๋๋ฅผ ์ ๋ ฅํด์ค์๋ค.
!
extends layout
!
block content
#wrapper
#logo
img(src='/images/logo.png')
#display
#login
form(method='post')
| Enter your name if you want to be a ninja
div
input(type='text', name='username')
input(type='submit', value='Log In')
#footer
div Copyright ยฉ Ninja Store #{+new Date().getFullYear()}
a(href='/page?name=about') About
| |
a(href='/page?name=contact') Contact Us
๋ก๊ณ ์ถ๊ฐํด์ฃผ๊ธฐ
๋ก๊ทธ์ธ ์๋ด๋ฌธ๊ตฌ,
์ด๋ฆ์ ๋ ฅ์นธ,
๋ก๊ทธ์ธ ๋ฒํผ
23. ADD FUNCTIONS
๊ฐ์ ์ํ๋ ๋ก๊ณ ๋ฅผ logo.png ๋ก ์ ์ฅํ ๋ค,
/public/images/ ๋๋ ํ ๋ฆฌ์ ์ ์ฅํด์ค์๋ค.
!
cd public
open public ํด์ images ํด๋๋ก ๋ค์ด๊ฐ ๋ค์, logo.png ๋ฅผ ๋ฃ์ด์ค์๋ค
24. ADD FUNCTIONS
/public/stylesheets/ ๋๋ ํ ๋ฆฌ๋ก ๋ค์ด๊ฐ์,
style.styl ์ ๋ฐ์ ์ฝ๋๋ฅผ ๋ฃ์ด์ค์๋ค.
(vi style.styl ์จ์ ํฐ๋ฏธ๋์์ ๋ฐ๋ก ์์ ๊ฐ๋ฅ)
body
padding: 0
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif
!
a
color: #0069FF
#wrapper
width: 450px
margin: 0 auto
padding: 40px 20px
background: #fff
!
#logo
text-align: center
!
#display
margin: 20px 0 50px
!
#userbar
margin-bottom: 10px
36. JADE INCLUDE
views ์์ footer.jade ํ์ผ์ ์๋ก ์์ฑํด์ค๋๋ค
!
#footer
div Copyright ยฉ Ninja Store #{+new Date().getFullYear()}
a(href='/page?name=about') About
| |
a(href='/page?name=contact') Contact Us
37. JADE INCLUDE
views์ userbar.jade ํ์ผ์ ์์ฑํด์ค๋๋ค
!
#userbar
| Welcome
b #{username}
| |
a(href='/items') Items
| |
a(href='/logout') Log Out
38. JADE INCLUDE
home.jade ํ์ผ์ ์์ ํฉ๋๋ค.
!
extends layout
!
block content
#wrapper
#logo
a(href='/')
img(src='/images/logo.png')
#display
#login
form(method='post')
| Enter your name if you want to be a ninja
div
input(type='text', name='username')
input(type='submit', value='Log In')
include footer
์์ ๋ ๋ถ๋ถ
39. ADD
app.js ์ items์ item์ ์ฐ๊ฒฐํด์ค์๋ค
!
// display the list of item
app.get('/items', store.items);
// show individual item
app.get('/item/:id', store.item);
41. ADD
store.js ์ ์ถ๊ฐํด์ค๋๋ค
! // handler for displaying the items
exports.items = function(req, res) {
// don't let nameless people view the items, redirect them back to the homepage
if (typeof req.session.username == 'undefined') res.redirect('/');
else res.render('items', { title: 'Ninja Store - Items', username: req.session.username,
items:items });
};
! // handler for displaying individual items
exports.item = function(req, res) {
// don't let nameless people view the items, redirect them back to the homepage
if (typeof req.session.username == 'undefined') res.redirect('/');
else {
var name = items[req.params.id].name;
var price = items[req.params.id].price;
res.render('item', { title: 'Ninja Store - ' + name, username: req.session.username,
name:name, price:price });
}
};
42. views ์ items.jade ๋ฅผ ์์ฑํด์ค๋๋ค
!
extends layout
!
block content
#wrapper
#logo
img(src='/images/logo.png')
#display
include userbar
-for (var id in items)
- var item = items[id]
div
a(href='/item/#{id}') #{item.name} - $#{item.price}
include footer
43. views ์ item.jade ๋ฅผ ์์ฑํด์ค๋๋ค
!
extends layout
!
block content
#wrapper
#logo
img(src='/images/logo.png')
#display
include userbar
p The #{name.toLowerCase()} is one of the must-have items for
any aspiring ninja. It costs just $#{price} on our store.
p Buy it today!
include footer