【问题标题】:how to render ejs file to local file如何将ejs文件渲染到本地文件
【发布时间】:2014-03-03 14:01:48
【问题描述】:

我使用 ejs 编写了一个 HTML 页面。 目前,当我运行 app.js 时,服务器正在运行,我可以使用 localhost 访问站点。我想使用 app.js 在本地保存此页面。 我想这是很简单的事情,但我没有在网上找到它。

我的 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>

【问题讨论】:

    标签: javascript html node.js express


    【解决方案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');
    });
    

    【讨论】:

    • 谢谢 :) 但我如何获得 html 而不是“Hello World!”?
    • '你好,世界!'是要写入文件的字符串。当您呈现 EJS 模板时,它会为您提供一长串 html。然后是“你好世界!”更改您的 HTML 变量。
    【解决方案2】:

    你在哪里调用 EJS 渲染方法?,我看到你正在尝试从 index.ejs 获取其他 EJS 模板。您必须编写一个附加到现有 html index.html 文件的函数。

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

    它可能会更优化一点,它给你和想法来解决你的问题。

    【讨论】:

    • 我的 ejs 在服务器上工作。我只想将所有内容保存到 locacl 文件,而不是在本地服务器上运行它(app.js 现在正在做的事情)
    • 你想用Javascript写一个新文件吗?恐怕这是不可能的。由于浏览器客户端出于安全原因,不允许在用户本地计算机中写入。为什么不在服务器端创建文件?
    • 如何在服务器端做到这一点?
    • 这取决于您使用的服务器语言。PHP、Ruby on rails、python、nodejs?
    • Node js 文件系统 api 拥有您所需要的一切:nodejs.org/docs/latest/api/fs.html,而 fs 对象正是您所需要的。我已经在上面添加了一些示例的答案。
    【解决方案3】:

    如果我理解正确,您希望将呈现的页面保存为文件(即下载),您可以这样做...

    app.get('/index', function(req, res){
    
        res.attachment();
        res.render('index');
    
    });
    

    【讨论】:

    • 确实如此,但是我应该在文件中的哪个位置添加这一行? (以及保存文件的位置)
    猜你喜欢
    • 2014-05-02
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2014-03-01
    相关资源
    最近更新 更多