2012-06-17 3 views
1

나는 옥과 비슷한 템플릿 엔진이없는 일반 HTML 템플릿을 사용하여 ExpressJS를 사용하고 있습니다. MongoDB를 내 App에 추가하려고하기 때문에 데이터를 HTML 파일에 삽입해야한다. Jade 또는 유사한 템플릿 엔진을 사용할 때 아무 문제가 없다는 것을 알고 있습니다. Jade를 사용하지 않고 HTML 파일에 직접 삽입 할 수 있습니까? 그렇지 않다면 Jade를 사용하고 여전히 HTML 파일을 사용할 수 있습니까? 당신이 (등 사용자 이름처럼, 시간이 지남에 따라 변경 및 기타 종속성이 데이터) 동적 데이터를 삽입하는 데 필요한 가정에옥을 사용하지 않는 ExpressJS - HTML 파일에 직접 데이터를 입력하십시오.

var express = require('express'); 
var server = express.createServer(); 

server.configure(function() { 
    server.use('/bootstrap', express.static(__dirname + '/bootstrap')); 
    server.use('/css', express.static(__dirname + '/css')); 
    server.use('/js', express.static(__dirname + '/js')); 
    server.use(express.static(__dirname + '/html')); 
}); 
server.set('views', __dirname + '/html'); 
server.register('.html', require('handlebars')); 
server.set('view options', { layout: false }); 
server.use(express.bodyParser()); 
server.use(express.cookieParser({ secret: "keyboard cat" })); 
var memStore = require('connect').session.MemoryStore; 
server.use(express.session({ secret: "keyboard cat", store: memStore({ 
    reapInterval: 60000 * 10 
})})); 

server.listen(1337); 
console.log('Express server started on port %s', server.address().port); 

/** SESSIONS **/ 
function requiresLogin(req, res, next) { 
    if (req.session.user) { 
    next(); 
    } 
    else { 
    res.redirect('/login'); // TODO: process redirect 
    } 
} 

var pseudoUsers = require('./users'); 

server.get('/login', function(req, res) { 
    res.render('login.html'); 
}); 
server.post('/authenticated', function(req, res) { 
    pseudoUsers.authenticate(req.body['emailInput'], req.body['passwordInput'], function(user) { 
    if (user) { 
     req.session.user = user; 
     res.redirect('/dashboard'); 
    } 
    else { 
     res.redirect('/login?wrongCredentials=true'); 
    } 
    }); 
}); 

/* ROUTERS ****************/ 
/**************************/ 
server.get('/home', function(req, res) { 
    res.render('index.html'); 
}); 
[some more routes..] 

답변

4

, 당신은 템플릿을 사용하는 것입니다 : 여기

내 app.js입니다 방법 또는 다른. 사전 제작 된 템플릿 엔진을 기꺼이 사용하지 않으려는 경우 대부분의 경우 페이지 뷰 수가 10 억에 달하는 대부분의 다른 엔진보다 열등한 템플릿을 만들게됩니다.

당신은 특별히 당신이 비취를 사용하고 싶지 않음을 언급합니다. 그러나 당신의 코드는 다른 템플릿 엔진 인 핸들 바를 가져옵니다 (http://handlebarsjs.com/). {{ somevarref }}을 사용하여 html 템플릿과 변수를 섞을 수 있습니다.

템플릿을 모두 사용하지 않고 모든 HTML을 코드로 동적으로 만들 수도 있지만, 일반적으로 모든 템플릿 엔진을 사용하여 수행됩니다. 그렇다면 수동으로 모든 문제를 해결해야하는 이유는 무엇입니까?

마지막으로 DOM 조작을 사용하여 모든 올바른 부분을 얻을 수있는 HTML 클라이언트 측을 생성 할 수도 있지만 귀하의 질문에 따라 귀하의 유스 케이스에 맞지 않거나 또는 아마도 현재 필요한 것 이상일 것입니다.

+0

아, 네 말이 맞아. 핸들 바를 봐야 겠어. 나는 이것을 핸들 바를 가지고 놀고 난 후에 대답으로 표시 할 것이다. –

+1

lol? 그 사람이 다른 사람이되고, 현재의 사람이 저조한 다른 문제를 해결할 수있는 더 나은 템플릿 엔진이나 적어도 다른 템플릿 엔진을 만들 수는 없다는 것을 알지 못하게하십시오. – jemiloii

+0

는 당신에게 1 마리의 마리우스를 주었고, handlebarsjs를 체크 아웃하려고했습니다. – jemiloii

관련 문제