节点Ejs模块,包括不工作

Node Ejs module, include not working

本文关键字:包括不 工作 模块 Ejs 节点      更新时间:2023-09-26

我有一些麻烦,包括一个html片段到我的index.html。我试着遵循,ejs文档,但我只是不能使它工作。

目录结构:

project
-public
--assets
---css
---images
---js
--Index
---index.html + index.css and index.js
--someOtherPageFolder
-views
--partials
---partials1.ejs
--index.ejs
--layout.ejs
-server.js

这是我的server.js (NEW)

var express  = require("express");
var partials = require("express-partials");
var http     = require('http');
var path     = require('path');
var app      = express();
app.get("/", function(req, res) {
  res.redirect("index");
});
app.configure(function(){
  app.set('port', process.env.PORT || 8888);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.use(partials());
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.json());
  app.use(express.urlencoded());
  app.use(express.methodOverride());
  app.use(express.bodyParser());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});
http.createServer(app).listen(app.get('port'), function(){
      console.log('App listening on port ' + app.get('port'));
    });

这是我的test. js:

<h1>This is test!</h1>

这就是我想要的html片段的位置:

<div id="sb-site">
    <div class="">
        <p>Not test</p>
        <%- include test.html %> 
    </div>
</div>

我做错了什么?还有一种方法让我这样做,并使用。html而不是。ejs(我使用eclipse,它不支持。ejs文件)

使用include,你应该这样做:

<%- include ("./partials/footer") %>

表示3 break ejs partial,用express-partials代替

// Include it like so with your other modules
var express       = require("express");
var partials      = require('express-partials');
var server        = express();
// Finally add it into your server conviguration
server.configure(function(){
   server.set('view engine', 'ejs');
   // Include partials middleware into the server
   server.use(partials());
});

在您的.ejs视图中,享受像这样的奢华…

<%- include ../partials/header %>
<section id="welcome">
  Welcome
</section>
<%- include ../partials/footer %>

另外,不要将ejs模块设置为读取.html,只需按照此答案让eclipse将.ejs呈现为.html。如何让eclipse将.ejs文件解释为.html?

作为一个例子,这是一个基本的表达式结构是如何设置的…

project
--public
--views
----layout.ejs
----index.ejs
----partials
------partial1.ejs
--server.js

server.js看起来像…

var express  = require('express'),
    partials = require('express-partials'),
    http     = require('http'),
    path     = require('path');
var app = express();
// all environments
app.configure(function() {
  app.set('port', process.env.PORT || 3838);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  // Middleware
  app.use(partials());
  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')));
});
http.createServer(app).listen(app.get('port'), function(){
  console.log('App listening on port ' + app.get('port'));
});

你的路线看起来像…

server.get("/", function(req, res) {
  res.render("index");
});

最后,你的layout.ejs…

<html>
  <head>
    <title></title>
  </head>
  <body>
    <%- body %>
  </body>
</html>

和索引。ejs…

<div id="index">
  <%- include partial1.ejs %>
</div>

如果您需要一个工作示例的引用,这里是

您需要使用新的include语法:

before: <%- include test.html %>%- include ('test') %>