簡體   English   中英

節點 Ejs 模塊,包括不工作

[英]Node Ejs module, include not working

我在將 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():

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.ejs:

<h1>This is test!</h1>

這就是我想要 html 片段到 go 的地方:

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

我究竟做錯了什么? 我還有辦法做到這一點並使用 .html 而不是 .ejs(我使用 eclipse 並且它不支持 .ejs 文件)

使用 include 你應該這樣做:

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

Express 3 打破了 ejs partials,改用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>

和 index.ejs ...

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

如果您需要對工作示例的參考,這里是

您需要使用新的包含語法:

之前:<%- include test.html %> 之后:<%- include ('test') %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM