node+express+ejs 가 모델 엔진 을 사용 하여 만 든 예제 demo
템 플 릿 엔진(Template Engine)은 페이지 템 플 릿 과 표시 할 데 이 터 를 결합 하여 HTML 페이지 를 만 드 는 도구 입 니 다.위 에서 말 한 express 의 경로 제어 방법 이 MVC 의 컨트롤 러 에 해당 한다 면 템 플 릿 엔진 은 MVC 의 보기 에 해당 합 니 다.
템 플 릿 엔진 의 기능 은 페이지 템 플 릿 과 표시 할 데 이 터 를 결합 하여 HTML 페이지 를 만 드 는 것 입 니 다.서버 에서 실행 할 수도 있 고 클 라 이언 트 에서 실행 할 수도 있 습 니 다.대부분의 경우 서버 에서 HTML 로 직접 해석 되 고 분석 이 끝 난 후에 클 라 이언 트 에 전송 되 기 때문에 클 라 이언 트 는 페이지 가 템 플 릿 엔진 으로 생 성 되 었 는 지 판단 할 수 없습니다.가끔 템 플 릿 엔진 도 클 라 이언 트,즉 브 라 우 저 에서 실 행 될 수 있 습 니 다.전형 적 인 대 표 는 XSLT 입 니 다.XML 을 입력 하여 클 라 이언 트 에서 HTML 페이지 를 생 성 합 니 다.하지만 브 라 우 저 호환성 문제 로 XSLT 가 유행 하 지 는 않 는 다.현재 의 주 류 는 역시 서버 가 템 플 릿 엔진 을 실행 하 는 것 이다.
MVC 구조 에서 템 플 릿 엔진 은 서버 쪽 에 포함 되 어 있 습 니 다.컨트롤 러 가 사용자 의 요청 을 받 은 후 모델 에서 데 이 터 를 가 져 와 템 플 릿 엔진 을 호출 합 니 다.템 플 릿 엔진 은 데이터 와 페이지 템 플 릿 을 입력 하여 HTML 페이지 를 만 든 다음 컨트롤 러 에 게 돌아 가 컨트롤 러 에서 클 라 이언 트 에 게 전달 합 니 다.
전단 에 자주 사용 되 는 템 플 릿 엔진 은 무엇 입 니까?
jade
jade 는 고성능 의 node JavaScript 템 플 릿 엔진 으로 매우 강력 한 API 와 대량의 뛰어난 특성 을 가지 고 있 습 니 다.그것 은 주로 node 서버 를 대상 으로 합 니 다.
2.EJS
EJS 는 템 플 릿 엔진 의 하나 이자 우리 튜 토리 얼 에서 사용 하 는 템 플 릿 엔진 입 니 다.사용 하기에 매우 간단 하고 express 와 잘 통합 되 어 있 기 때 문 입 니 다.
3.핸들 바
Handlebars 는 JavaScript 의 의미 템 플 릿 라 이브 러 리 로 view 와 data 의 분 리 를 통 해 웹 템 플 릿 을 빠르게 구축 합 니 다.이 는'Logic-less template'(논리 적 모드 없 음)의 사 고 를 사용 하여 클 라 이언 트 가 코드 를 실행 할 때 컴 파일 되 는 것 이 아니 라 템 플 릿 로드 와 실행 속 도 를 확보 할 수 있 습 니 다.Handlebars 는 Mustache 를 호 환 합 니 다.Handlebars 에서 Mustache 템 플 릿 을 가 져 올 수 있 습 니 다.
템 플 릿 엔진 사용
app.js 에서 다음 두 줄 코드 를 통 해 템 플 릿 파일 의 저장 위치 와 사용 하 는 템 플 릿 엔진 을 설정 합 니 다.
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
주의:우 리 는 통과 express-e blog 는 ejb 템 플 릿 엔진 을 사용 하 는 프로젝트 를 초기 화 했 을 뿐 입 니 다.예 를 들 어 nodemodules 에 ejs 모듈 을 추 가 했 습 니 다.views 폴 더 에 index.ejs 가 있 습 니 다.이 프로젝트 에 ejb 만 사용 하도록 강요 하 는 것 이 아니 라 다른 템 플 릿 엔진 을 사용 할 수 없습니다.예 를 들 어 jade,어떤 템 플 릿 엔진 을 사용 할 지 진정 으로 지정 한 것 은? app.set('view engine', 'ejs'); 。routes/index.js 에서 res.render()렌 더 링 모델 을 호출 하여 생 성 된 페이지 를 클 라 이언 트 에 게 직접 되 돌려 줍 니 다.두 개의 인 자 를 받 아들 입 니 다.첫 번 째 는 템 플 릿 의 이름 입 니 다.views 디 렉 터 리 에 있 는 템 플 릿 파일 이름 입 니 다.확장자.ejb 를 선택 할 수 있 습 니 다.두 번 째 매개 변 수 는 템 플 릿 에 전 달 된 데이터 대상 으로 템 플 릿 번역 에 사 용 됩 니 다.
views/index.ejs 를 엽 니 다.내용 은 다음 과 같 습 니 다.
index.ejs
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
</body>
</html>
res.render('index',{title:'Express'});템 플 릿 엔진 은<%=title%>를 Express 로 바 꾼 다음 바 뀐 페이지 를 사용자 에 게 표시 합 니 다.렌 더 링 후 생 성 된 페이지 코드 는:
<!DOCTYPE html>
<html>
<head>
<title>Express</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>Express</h1>
<p>Welcome to Express</p>
</body>
</html>
주의:우 리 는 통과 app.use(express.static(path.join(__dirname,'public')))))정적 파일 디 렉 터 리 를 Public 폴 더 로 설정 하여 위 코드 에 있 는 href='/stylesheets/style.css'는 href='public/stylesheets/style.css'에 해당 한다.ejb 의 태그 시스템 은 매우 간단 합 니 다.다음 세 가지 태그 만 있 습 니 다.
<%=code%>와 <%- 코드%>의 차 이 는 변수 코드 가 일반 문자열 일 때 차이 가 없습니다.code
hello이 문자열 은<%=code%>그대로 출력 됩 니 다. hello,그리고 <%- code%>는 H1 대 hello 문자열 을 표시 합 니 다.
간단 한 예
명령 을 통 해 ejb 프로젝트 를 새로 만 듭 니 다:express-e demo
index.js 에 다음 코드 를 추가 합 니 다:
var express = require('express');
var router = express.Router();
var items=[{title:' 1'},{title:' 2'}];
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index',{title:' ',items:items});
});
router.get('/form', function(req, res, next) {
res.render('form',{title:' ',message:'fendo8888'});
});
router.post('/form', function(req, res, next) {
res.redirect('/');
});
module.exports = router;
views 에서 새 form.ejs 에 다음 코드 를 추가 합 니 다.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<form method="post" action="/form">
<label>new article</label><br>
<textarea name="text" cols="100" row="5"></textarea>
<input type="submit" value="pus"></input>
</form>
<div><%=message%></div>
</body>
</html>
index.ejs 에 다음 코드 를 추가 합 니 다:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> </title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p><a href="/form" rel="external nofollow" > </a></p>
<ul>
<%items.forEach(function(item){%>
<li><%=item.title%></li>
<%})%>
</ul>
</body>
</html>
실행 항목:npm start
접근:http://localhost:3000/
클릭 하여 새 글 발표
플러스 를 누 르 면 제출 시 다시 첫 페이지 로 돌아 갑 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
express를 사용하여 AWS S3 이미지에 액세스하기 위해 미리 서명된 URL을 생성하는 방법은 무엇입니까?
이를 달성하는 방법 중 하나는 미리 서명된 URL을 사용하는 것입니다.
However, the object owner can optionally share objects with others by creating a...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
간단 한 예
명령 을 통 해 ejb 프로젝트 를 새로 만 듭 니 다:express-e demo
index.js 에 다음 코드 를 추가 합 니 다:
var express = require('express');
var router = express.Router();
var items=[{title:' 1'},{title:' 2'}];
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index',{title:' ',items:items});
});
router.get('/form', function(req, res, next) {
res.render('form',{title:' ',message:'fendo8888'});
});
router.post('/form', function(req, res, next) {
res.redirect('/');
});
module.exports = router;
views 에서 새 form.ejs 에 다음 코드 를 추가 합 니 다.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<form method="post" action="/form">
<label>new article</label><br>
<textarea name="text" cols="100" row="5"></textarea>
<input type="submit" value="pus"></input>
</form>
<div><%=message%></div>
</body>
</html>
index.ejs 에 다음 코드 를 추가 합 니 다:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> </title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p><a href="/form" rel="external nofollow" > </a></p>
<ul>
<%items.forEach(function(item){%>
<li><%=item.title%></li>
<%})%>
</ul>
</body>
</html>
실행 항목:npm start접근:http://localhost:3000/
클릭 하여 새 글 발표
플러스 를 누 르 면 제출 시 다시 첫 페이지 로 돌아 갑 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
express를 사용하여 AWS S3 이미지에 액세스하기 위해 미리 서명된 URL을 생성하는 방법은 무엇입니까?이를 달성하는 방법 중 하나는 미리 서명된 URL을 사용하는 것입니다. However, the object owner can optionally share objects with others by creating a...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.