CNode

express中使用ejs怎么实现前后台共用同一套模板啊?

Ffancyboynet发布于12 年前最后回复12 年前9 回复7899 浏览0 收藏

我有一个单独的模板文件test.ejs 后台直接<% include test.ejs %>没问题 前台我想把test.ejs的内容放在script标签中让js调用渲染,咋整? 类似

<div>
<% include test %>
</div>
<script type="text/template" id="tpl">
    <% include test %> <!-- 这边不想被解析,由客户端渲染 -->
</script>
查看回复

回复 (9)

L
leapon#1·12 年前

用 swig 可以。ejs 不清楚。

L
l3ve#2·12 年前

直接css display掉不知道能不能达到你想要的结果

N
nihgwu#3·12 年前

前后端使用不同的分隔符<% %> {{ }}

ejs.open = '{{';
ejs.close = '}}';
N
nihgwu#4·12 年前
F
fancyboynet#5·12 年前
引用 nihgwu前后端使用不同的分隔符<% % {{ }}

@nihgwu 那不搞两套了,我现换了种思路,把ejs的目录暴露出来,前台ajax获取文件后用ejs.render()渲染

A
alsotang#6·12 年前
引用 nihgwu前后端使用不同的分隔符<% % {{ }}

@fancyboynet 这样效率突然就低了好多吧?

F
fancyboynet#7·12 年前
引用 nihgwu前后端使用不同的分隔符<% % {{ }}

@alsotang 效率不好说,应该没啥差别,文件不大的。模板没办法存在页面中,也只能另外获取了

A
alsotang#8·12 年前
引用 nihgwu前后端使用不同的分隔符<% % {{ }}

@fancyboynet 我指的效率是网络传输效率,多了个 ajax 好蛋疼啊。 你可以写个 express 的 helper,比如叫 template,然后把

<script type="text/template" id="tpl">
    <% include test %> <!-- 这边不想被解析,由客户端渲染 -->
</script>

换成

<script type="text/template" id="tpl">
    <%- template('./test') %> <!-- 这边不想被解析,由客户端渲染 -->
</script>

在 template 中, 实现读取本地文件 ./test.ejs,就好了啊。

F
fancyboynet#9·12 年前
引用 nihgwu前后端使用不同的分隔符<% % {{ }}

@alsotang 嗯,确实可行,我用fs.readFileSync把文件读过来填进去就好了,谢谢提供思路

参与回复
登录后即可参与回复。登录