ejs include 总报错!

发布于 2022-09-02 23:34:05 字数 645 浏览 23 评论 0

我是在客户端尝试 ejs 模板。在使用 include 指令时,用它包含 header.ejs 这个文件到一个html页面里,header.ejs 和 html 在同一目录:

header.ejs 代码如下:

<h1 id="title">页面标题</h1>

我首先使用了:

<%- include('header.ejs') %>

好,给我报了一个错:include requires the filename option.

接着我使用另外一种写法:

<%- include header.ejs %>

但又给我报了一个另外的错:include requires the filename option.

我在使用 include 前,用 for 和 if else 指令,都能正常渲染数据。

但就是这个 include 试了很多次,也看了些网上和github的资料,都没能正常显示!(⊙﹏⊙)b,请问下,有人知道这个东西,到底怎么用的吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笨笨の傻瓜 2022-09-09 23:34:05

最新版的客户端ejs include引入其他ejs文件 需要使用<%- include('filename') -%>才能成功的引入。

玻璃人 2022-09-09 23:34:05

语法不对,别闹,应该是:

<%include ../header.ejs %>

首先include前面没有什么=或者-,其次,后面的路径换成相对路径

补充:

首先你的问题是关于一个前端ejs实现的问题,我一开始理解的是express常用的那个(后端的),理解有偏差 - 这俩不是同一个库。

其次,在知道了你说的前端实现以后,我发现我之前用的库和你说的又不是一个 - 前端能用ejs原来还有好多个版本,我用的那一版的确不支持include,你的这一版是支持的。

最后,这个include在前端的使用方式文档介绍十分不详:

图片描述

这句话我看完就和没看到一样,完全不清楚那个filename 选项到底应该填什么(去他妈的傻逼文档吧)

于是我又去翻作者提供的例子,看到:

var ejs = require('../')
  , read = require('fs').readFileSync
  , join = require('path').join
  , path = join(__dirname, '/functions.ejs')
  , data = {
      users: [
        { name: 'Tobi', age: 2, species: 'ferret' }
      , { name: 'Loki', age: 2, species: 'ferret' }
      , { name: 'Jane', age: 6, species: 'ferret' }
      ]
    };

var ret = ejs.compile(read(path, 'utf8'), {filename: path})(data);

console.log(ret);

他的例子是给后端用的。但我想我们也基本看出来filename的含义,也就是说你必须在调用的时候传入filename参数,而filename的值就是你即将包含header.ejshtml的路径(既然你是客户端加载,那我认为这里的路径应该是一个网络地址,譬如:http://xxxx/test.html)

写在最后,这么搞真的很痛苦,自己多试试吧

烈酒灼喉 2022-09-09 23:34:05

哥们,还是好好看看官方文档吧,上面的答案不对,官方的问题是<%- include('user/show'); %>
这样的代码才能用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文