Javascript 来自外部文件的模板文本

Javascript 来自外部文件的模板文本,javascript,Javascript,我想将一些变量传递到我拥有的html文件中,然后通过电子邮件发送它们。其中的大部分与这个问题不太相关,所以我将使用一个基本示例 基本模板文本的工作原理如下: myLink = "google.com" myID = "testID" template = `Please visit ${myLink}/${myID} and let them know that ${myID} sent you.` 这将使模板返回: 请访问google.com/test

我想将一些变量传递到我拥有的html文件中,然后通过电子邮件发送它们。其中的大部分与这个问题不太相关,所以我将使用一个基本示例

基本模板文本的工作原理如下:

myLink = "google.com"
myID = "testID"
template = `Please visit ${myLink}/${myID} and let them know that ${myID} sent you.`
这将使模板返回:

请访问google.com/testID,让他们知道testID发送了您


现在,我已经将模板代码复制到一个外部文件中,并使用
fs.readFileSync
将该文件读入一个变量。问题是,在读取文件后,它实际上没有计算
${myLink}
${myID}
值。有没有办法做到这一点?如果模板文本无法实现这一点,您可以为我指出正确的方向吗?

您不想读取该文件,首先它会将其读取为字符串,其次还有更好的处理JS模块的方法

您需要的是将temple字符串作为函数从一个文件导出,然后将其导入到另一个文件中

文件1:

module.exports = (myLink, myID) => `Please visit ${myLink}/${myID} and let them know that ${myID} sent you.`
文件2:

const createString = require('./file1');
console.log(createString('google.com', 'testID'));

我知道eval不太受欢迎,但这似乎是解决你问题的唯一办法

eval("`"+str+"`");

模板文本是JS代码。如果您只是读取一个文件,那么这将是作为文本而不是作为要运行的代码来读取它。您可以对字符串执行基于正则表达式的
.replace()
。这是我的投票。不管喜欢与否。这是执行OP要求的唯一方法。是的,在一些罕见的情况下评估是完全可以的。这就是它的目的。不过,我可能建议您在str中转义backticks;我不想使用下划线或类似的引擎。该文件不包含一个大的JavaScript文本,而是一个常见的HTML标记。编辑器将很好地突出显示语法。如果能看到这一点,我会很高兴。一、 首先,我不知道如何传递变量,我不确定这是否真的回答了OP的问题。@benomatis
eval
将尝试使用调用时定义的变量对模板字符串求值。因此,如果字符串看起来像
“test${blah}test”
,您只需调用
eval
,就会得到一个错误“ReferenceError:blah未定义”。如果随后将
blah
定义为
let blah=“asd”
,则调用
eval
将起作用,并返回字符串
“test asd test”
有用,但不是对question@ThomasW它怎么不回答这个问题呢?我的答案解决了OP的问题,即以唯一可行的方式从外部文件导入字符串文本