Post

반응형

생활코딩 주소 : https://opentutorials.org/course/2136/11915


템플릿 엔진 Jade를 소개


정적 + 동적의 장점을 합쳐서 만든 템플릿 엔진

템플릿 엔진 중 Jade 공부


참고 코드 : http://expressjs.com/ko/guide/using-template-engines.html


1. jade  모듈 설치

npm install jade --save


2. 설치 후 코드에 jade 엔진을 사용하겠다는 소스코드를 추가

app.set('view engine', 'jade');


3. 템플릿이 있는 디렉터리를 알려준다.

그리고 views 라고 하는 디렉터리를 생성.(관습적으로 views라는 이름을 사용)

app.set('views', './views');


4. 템플릿에 대한 라우터 만들기

(템플릿엔진은 send가 아닌 웹페이지를 만들어내는 것이라 render()사용)

그리고 temp.jade라는 파일을 views 안에 만든다.

app.get('/template', function(req, res){

res.rennder('temp');

});


* node app.js가 번거롭다면 supervisor app.js 라고 친다.

 supervisor는 app.js 를 등록하면 app.js 가 수정될 때마다 알아서 재시작을 해준다.


5. temp 안에 head라고 적으면

소스코드 보기에서 <head></head> 라고 찍힌 것을 확인할 수 있다.

그런데 만약 

html

head

body


라고 하면 순서대로
<html></html><head></head><body></body> 라고 나온다.
이유는 안에 들어간다고 알려주지 않았기 때문이다.
알려주려면 tab으로 들여쓰기를 한다.

html

head

body


코드를 보기 좋게 하려면

app.locals.pretty = true;



-(마이너스는 화면에 출력되는 녀석이 아니라는 뜻

한줄 띄면 다음 문장의 태그 생성을 의미하므로

안에 내용을 넣고 싶다면 태그 다음에 한줄 띄지말고

적을 것

 

html

head

body

h1 hello Jade

ul

-for(var i = 0; i<5; ++i)

li coding



만약 시간을 출력하고 싶다면?


html

head

body

h1 hello Jade

ul

-for(var i = 0; i<5; ++i)

li coding

div= time


time이란 변수를 외부에서 줘야 한다.

외부에서 주는 것은 우리가 이 페이지를 호출하는 코드에서 인자를 추가해주면 된다.

app.get('/template', function(req, res){

res.render('temp', {time:Date()});

});


helloWorld.js

var express = require('express');

var app = express();

app.set('view engine', 'jade');

app.use(express.static('public'));

app.locals.pretty = true;

app.get('/template', function(req, res){

res.render('temp', {time:Date()});

});


app.get('/', function(req, res){

res.send('Hello World!');

});


app.get('/login', function(req, res){

res.send('Login Please');

});


app.get('/dynamic', function(req, res){

var lis = '';

for(var i = 0; i < 5; ++i)

{

lis = lis + '<li>coding</li>';

}

var time = Date();

var output = `

<!DOCTYPE html>

<html>

<head>

<meta acharset="utf-8">

<title></title>

</head>

<body>

Hello zzㅋㅋㅋdseer2312312fsdd

<ul>

${lis}

</ul>

${time}

</body>

</html>`;

//var output = ''; 

res.send(output);

});


app.listen(3000, function(){

console.log('Example app listening on port 3000!');

});


temp.jade


html

head

title 타이틀입니다

body

h1 hello Jade

ul

-for(var i = 0; i<5; ++i)

li coding

div= time


반응형
▲ top