【问题标题】:HTML file as a variable in Node.jsHTML 文件作为 Node.js 中的变量
【发布时间】:2017-05-05 11:48:15
【问题描述】:

我需要使用简单的 Node.js 服务器通过电子邮件(我正在使用 Sendgrid)以 html 格式发送内容。我只是发送一些带有变量和换行符的文本。

var postData = 'lat: ' + formatted.latitude + '<br>lng: ' + formatted.longitude + '<br>time: ' + formattedDate;
sendEmail(postData);

然后我将使用 Sendgrid 作为 HTML 发送电子邮件。

var content = new helper.Content('text/html', messageContent);

无需粘贴剩余的代码块。

我需要的是更复杂的 .html 文件,其中包含 css 和 javascript。此外,我需要更改其中的一些值。将此文件分配给变量并像这样发送它的最简单方法是什么?

【问题讨论】:

  • 因此,您需要一个带有可变占位符的模板,以便从该模板和数据构造 HTML 标记(技术上是字符串或流)。我认为PUG 会有所帮助。
  • @RishatMuhametshin 好的,我试试看

标签: html node.js sendgrid


【解决方案1】:

如果我理解了这个问题,我不确定,但是您可以非常简单地阅读该文件。只是

var fs = require('fs'); //Filesystem    

var content = fs.readFileSync("path/to/File/file.html","utf-8");
//this is the content of your file.html

如果你保持简单,你可以使用一种正则表达式并用值替换一些东西。如果它必须更复杂,我建议你使用模板引擎。我个人的偏好是mustache。 还有一个用于 mustache 的 nodejs 的库,称为 Mustache。 在这种情况下,您可以这样使用它:

const mustache   = require('mustache');
const fs = require('fs'); //Filesystem    
//...
var content = fs.readFileSync("path/to/File/file.html","utf-8");
var view = {formatted:{latitude: 0,longitude:0}, formattedDate:"01/01/1990"}
var output = mustache.render(content, view);

要做到这一点,你必须先了解 mustache,但这真的很简单。看教程here

您的 file.html 应如下所示:

<div> lat: {{formatted.latitude}} <br> lng: {{formatted.longitude}} </div>
<script>
     var formattedDate = "{{formattedDate}}";
</script>

请注意,您必须使用 npm install mustache first

安装 mustache

【讨论】:

  • 如何操作 .html 中的 javascript?我需要在数组中附加值。
  • 认为你可以像
  • 有一个错误,应该是:var content = fs.readFileSync("./mustache.html").toString();,因为我们必须将模板作为字符串传递。谢谢!
  • 为了更正确,你应该使用 fs.readFileSync("path/file","utf-8/ or other encoding");然后你得到一个字符串,而不是一个流。我的错
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 2015-04-30
  • 2016-09-12
  • 2011-04-24
  • 1970-01-01
相关资源
最近更新 更多