Meteor js:使用#each 来迭代和渲染博客的多个 html 文件中的模板
Posted
技术标签:
【中文标题】Meteor js:使用#each 来迭代和渲染博客的多个 html 文件中的模板【英文标题】:Meteor js: use #each to iterate over and render templates in multiple html files for a blog 【发布时间】:2013-12-26 00:16:12 【问题描述】:我知道流星并不完全是为了这个,但我已经实施了这个网站,所以现在没有回头路了。
我拥有的是一系列博客文章。现在它们都在一个大模板中。我想将它们拆分成一个 html 文件,然后在呈现博客布局模板时遍历这些 html 文件。
如何做到这一点?我也愿意接受其他实现相同最终目标的解决方案/方法(允许我更好地组织这些独立的静态 html 片段)
【问题讨论】:
为什么不将您的博客文章以 HTML 格式保存在数据库中,然后检索它们并用三括号blogContent
显示它。我错过了什么吗?
对于一些页面,比如博文,我真的只需要添加静态html即可。要将 html 放入数据库,我仍然需要某种方法来遍历所有静态 html 文件。那么我将如何遍历 blogpost1.html 和 blogpost2.html 以将它们保存到数据库中。
【参考方案1】:
你可以这样做
#each post
#if isBlogPost
> blogPostTemplate
else
> someOtherTemplate
/if
/each
然后您可以将模板放在不同的文件中,例如
file1.html
<template name="blogPostTemplate">
title
</template>
file2.html
<template name="someOtherTemplate">
Other Template, Maybe for ads?
</template>
如果每个帖子都需要一个 html 文件
Template.blog.getPost = function(templateName)
return Meteor.render(Template[templateName]);
然后你可以使用类似这样的东西,它允许你使用从 js 对象或集合传递的自定义模板名称
getPost 'blogPostTemplate'
【讨论】:
谢谢阿克沙特!这正在接近,但仍然有点偏离目标。如果我以你为例,我想要完成的是拥有一个 blogPostTemplate,但是在那个 blogPostTemplate 中有 #each > blogPost /each 并且 blogPost 对象是一个集合我所有的博客文章。不过这里的问题是我想用保存在单独的 HTML 文件中的其他模板填充该集合。也许有一个通配符运算符来获取所有类似命名的模板,或者我需要 Npm.require('fs') 并扫描文件系统中的 html 文件并解析它们。 带着第一个想法奔跑。您可以执行类似 return Template[*] 的操作来获取所有模板或仅返回与给定字符串的一部分匹配的模板。然后我可以在它们中搜索特定的命名约定,例如如果模板被命名为“BlogPostX”和“BlogPostY”,我会这样做 if indexOf("BlogPost") == 0 然后添加到 blogPosts 对象。以上是关于Meteor js:使用#each 来迭代和渲染博客的多个 html 文件中的模板的主要内容,如果未能解决你的问题,请参考以下文章
使用 Meteor 时如何正确设置嵌套 #each 空格键迭代器的范围?