NodeJS EJS可以处理现有的html页面并使用令牌吗?

gfttwv5a  于 2023-05-06  发布在  Node.js
关注(0)|答案(1)|浏览(131)

我一直在我的node js应用程序中使用EJS,它工作得很好,但我也有一个HTML页面在使用EJS之前构建。
我喜欢传递和对象到EJS页面并使其成为页面的一部分的能力。AN示例:

response.render("index", { name: "bob" );

但这使用了渲染命令,IIRC在HTML页面上的完整性(路径等)方面有一些问题,所以我用途:

response.redirect("mypage.html");

是否可以将变量传递到像EJS页面这样的HTML页面?
使用内联变量的EJS页面:

<div>
   <h1>Home</h1>
   <h3><%= locals?.name %></h3>
</div>

更新:

我让它工作了。如果有更好的方法,请提出来。见答案

xxhby3vn

xxhby3vn1#

我让它工作了。它似乎工作无论如何。

app.set("view-engine", "ejs");
app.use(express.static('public'));

// before 
response.redirect("/mypage.html");
// after
response.redirect("mypage.ejs", { name: "john" });

我尝试的第一件事是在公共目录中呈现HTML文件,它说在views目录中找不到mypage.html

response.render("/mypage.html"); // error

因此,我将mypage.html复制到views目录中,并再次尝试,它说它没有HTML文件的模块。

response.render("/mypage.html"); // error

所以我将文件扩展名从/mypage.html重命名为/mypage.ejs,但仍然找不到该页面。

response.render("/mypage.ejs"); // error

所以我删除了前面的斜杠mypage.ejs,它找到了它,并加载到了css和js中。

response.render("mypage.html"); // no error

到目前为止,它似乎工作正常。
路径问题是存在的,但是如果我把HTML页面放在views目录中,使用render而不是redirect,并把所有外部资源放在公共目录中,它们似乎可以工作。
我现在可以将变量传递到html页面。

相关问题