ejs include 总报错!
我是在客户端尝试 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 技术交流群。

发布评论
评论(3)
语法不对,别闹,应该是:
<%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.ejs
的html
的路径(既然你是客户端加载,那我认为这里的路径应该是一个网络地址,譬如:http://xxxx/test.html
)
写在最后,这么搞真的很痛苦,自己多试试吧
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
最新版的客户端ejs include引入其他ejs文件 需要使用<%- include('filename') -%>才能成功的引入。