使用Express动态注入HTML的元标记

5

概要:

我正在将一个基于Apache + PHP堆栈的网站迁移到Node + Express上,并想知道在新堆栈下动态注入元标记的最佳方式/最佳实践(如果有的话)。

细节:

在现有的堆栈下,通过直接添加PHP代码到HTML文件中来动态注入元标记。由于渲染是在服务器端完成的,因此这些标记会被Facebook/Google+或其他网络爬虫正确地解释。

在新的堆栈下,经过一些研究,我发现了两个选项:

  1. 使用像Pug(Jade)这样的模板引擎用本地语言渲染HTML。(似乎重新编写具有Pug语法的现有HTML有些过度?Pug能够处理HTML吗?还是我需要考虑其他模板引擎,如EJS?你建议我探索哪种模板引擎?)
  2. 在渲染开始之前,使用类似Cheerio的DOM操作插件先注入元标记。

在这两个选项之间,哪一个会有更好的性能,还是没有实质性的差异?您是否推荐其他方法?谢谢!

1个回答

5

EJS可能是最简单的选择,与PHP非常相似。

您还可以查看Mustache和Handlebars,这些选项对现有HTML的更改最小。

  • 使用EJS:<html><head><%= yourMetaTags %> ...
  • 使用Mustache:<html><head>{{ yourMetaTags }} ...
  • 使用Handlebars:<html><head>{{ yourMetaTags }} ...

此外,doT.js非常快。

请参见:

解析HTML并使用DOM API进行操作仅仅为了插入元标签,在我看来有些过度。另一方面,如果你只需要插入元标签,那么你可以进行简单的正则表达式替换,例如使用yourHTML.replace('<head>', '<head>'+yourMetaTags);,但是随着时间的推移,当你需要更多功能时,它可能会变得更加复杂。毕竟,每个人都曾经制作过模板引擎。

1
谢谢,伙计!最终我使用了 EJS,它像魔法一样好用。我只是将所有的标签从 <?php print $foo; ?> 替换为 <%= foo %>,几分钟就完成了。 - CLDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接