2014-03-03 53 views
0

我已經使用ejs編寫了一個HTML頁面。 目前,當我運行app.js時,服務器正在運行,我可以使用本地主機訪問站點。我想用app.js在本地保存這個頁面。 我想這是非常簡單的事情,但我沒有在網上找到它。如何將ejs文件渲染到本地文件

我EJS文件中找到的:。... /views/index.ejs

app.js

var express = require('express'); 
var routes = require('./routes'); 
var user = require('./routes/user'); 
var http = require('http'); 
var path = require('path'); 

var app = express(); 


app.set('port', process.env.PORT || 3000); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 

// development only 
if ('development' == app.get('env')) { 
app.use(express.errorHandler()); 
} 
app.get('/', routes.index); 
app.get('/users', user.list); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

index.ejs(它不是​​所有的文件,我不認爲這是有關)

<body> 
<div id="cbp-so-scroller" class="cbp-so-scroller"> 


<%- include partials/home.ejs %> 
<%- include partials/navbar.ejs %> 
<%- include partials/about.ejs %> 
<%- include partials/testimoni.ejs %> 
<%- include partials/experties.ejs %> 
<%- include partials/gallery.ejs %> 
<%- include partials/contact.ejs %> 
<%- include partials/sucscribe.ejs %> 
<%- include partials/footer.ejs %> 

</div> 
</body> 

回答

0

你在哪裏調用EJS渲染方法?,我看到你正試圖從index.ejs獲取其他EJS模板。你必須編寫一個附加到你現有的html index.html文件的函數。

function renderIndex(){ 
    var home = new EJS({ url: 'partials/home.ejs' }).render(); 
    $('cbp-so-scroller').append(home); 

} 

它可以更好地優化它給你和想法來解決你的問題。

+0

我的ejs在服務器上工作。 我只想保存一切到locacl文件,而不是在本地服務器上運行它(即app.js現在正在執行的操作) – Bruse

+0

是否要使用Javascript編寫新文件?恐怕這是不可能的。由於瀏覽器客戶端出於安全原因不允許在用戶本地機器上寫入。爲什麼不在服務器端創建文件? – Brian

+0

我怎麼能在服務器端做到這一點? – Bruse

1

例使用的NodeJS

fs = require('fs'); 
fs.writeFile('helloworld.txt', 'Hello World!', function (err) { 
    if (err) return console.log(err); 
    console.log('Hello World > helloworld.txt'); 
}); 
+0

謝謝:)但我怎麼得到的HTML而不是'你好世界!'? – Bruse

+0

'Hello world!'是要在文件中寫入的字符串。當你渲染一個EJS模板時,它會給你一個很長的html字符串。然後'Hello World!'更改爲您的HTML變種。 – Brian

0

創建一個文件,如果我理解正確的話,你要呈現的頁面保存爲一個文件(即,下載),你可以做到這一點...

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

    res.attachment(); 
    res.render('index'); 

}); 
+0

確實,但在文件中我應該添加這一行? (以及保存的文件的位置) – Bruse