2013-01-02 136 views
0

我正在關注Steven Senderson關於NodeJS的文章。由於question中建議的Express版本更改,我已經克服了破壞代碼。現在,當我使用localhost:13253訪問我的index.html頁面時,它正在呈現index.html的內容。它不是使用layout.html來呈現它。我已經從ejs.jsejs-middleware中追蹤到它,也調用了這些函數,但是佈局沒有被應用。該服務器代碼如下:NodeJS ejs模板不使用模板呈現

var express = require('express'), 
app = express(), 
api = require("./api/server.js"), 
ejsm = require('ejs'), 
ejsMiddleware = require('ejs-middleware'); 

app.use('/api', api); 

app.use(ejsMiddleware(__dirname + '/Static', 'html', app)); 

app.use(express.static(__dirname + '/Static')); 

app.listen(process.env.port || 12345); 

編輯: -

//INDEX.HTML 

this is homepage 

//layout.html 

<!DOCTYPE html> 

<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Inventify (alpha)</title> 
     <script type="text/jscript" src="/scripts/jquery-1.8.3.min.js"></script> 
     <script type="text/javascript" src="/scripts/knockout-2.2.0.js"></script> 
     <link rel="stylesheet" href="/Styles/app.css"/> 
    </head> 
    <body> 
     <h1 class="site-title"> 
      <a href="/">Iventify<span class="version">(alpha)</span></a> 
     </h1> 
     <div class="main-container"> 
      <%- body %> 
     </div> 
    </body> 
    <script type="text/javascript"> 
     alert('from template'); 
</script> 
</html> 
+0

你應該發佈你的index.html和layout.html的樣本。佈局處理從Express 2.x顯着變化到3.x.現在視圖引擎支持它,而不是烘焙到Express.js –

+0

@HectorCorrea我已經添加了佈局和索引頁的代碼 – TheVillageIdiot

+0

我懷疑你使用的是Express 3.x,對不對?如果是這樣,問題是對佈局的支持改變了很多。我在這裏寫了關於這個問題http://hectorcorrea.com/blog/using-layouts-with-ejs-in-express-3-x –

回答

0

運行快遞二進制生成裸快遞項目(它這樣做!),

./node_modules/express/bin/express 

和說的部分

app.set('view_engine', 'jade'); 

將其改爲ejs。它現在將讀取.ejs作爲ejs模板的所有文件。

+0

那麼我會運行二進制。但是如果你在github上看到Steve的示例,它也可以使用layout.html模板文件。他正在使用'ejs-middleware'軟件包。 – TheVillageIdiot