将res.locals的值传递给客户端的JS文件

我正在尝试使用节点包jsbarcode生成条形码。 我需要能够将res.locals中的variables传入名为main.js的文件,该文件位于我的公共目录中。 原因是我需要在页面加载时使用res.locals传递到模板中的数据生成条形码

HTML:

<img id="barcode"/>

main.js:

 JsBarcode("#barcode", amodel + "-" + aNum, { format: "CODE128C", ean128: true }); 

我不确定amodel + "-" + aNum甚至是正确的格式,但基本上我需要能够传递一个string,然后在生成条码之前input一个数字。 我也想能够改变条形码的格式,但这不是优先事项之一。

TLDR:

如何将可变数据传递到客户端的js文件?

你不会把一个variables传递给一个js文件。 但是,在您的模板中,您可以将结果分配给window 。 例如与ejs模板:

 <script> window.jbarData = '<%-jbarData%>' </script> 

然后在你的main.js你可以引用window.jbarData main.js你的window.jbarData使用它。 你需要更新这个来使用你正在使用的任何模板语言。

我已经解决了这个工作。 我相信有一个更“适当”的方式来做到这一点。 这里是html:

 <style> .hidden {display: none;} 

 <div id="test123" class="hidden">{{test}}</div> <div id="codeType" class="hidden">{{codeType}}</div> <img id="barcode"/> 

然后在一个脚本标记JS在同一页上:

 <script> var test = document.getElementById("test123").innerHTML; var codeType = document.getElementById("codeType").innerHTML; $('#barcode').JsBarcode('14374', {format: 'UPC'},{ width: 2, height: 90 }); </script> 

这几乎等同于我将res.locals传递给隐藏的div,然后使用.innerhtml将值提取到我的variables中。 这工作,我可以加载它10/10次没有错误。 如果有人想知道我正在使用JSBarCode。