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

时间:2017-11-07 15:52:33

标签: javascript node.js barcode

我正在尝试使用节点包jsbarcode来生成条形码。我需要能够将res.locals中的变量传递到我公共目录中名为main.js的文件中。原因是我需要使用res.locals

传递到模板中的数据在页面加载时生成条形码

HTML:

<img id="barcode"/>

main.js:

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

我不确定amodel + "-" + aNum是否是正确的格式,但基本上我需要能够在生成条形码之前传入一个字符串然后传递-然后传递一个数字。我也希望能够改变条形码的格式,但这不是优先级。

TLDR:

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

2 个答案:

答案 0 :(得分:0)

您不会将变量传递给js文件。但是,在您的模板中,您可以将结果分配给window。例如,使用ejs模板:

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

然后在您的main.js中,您可以引用window.jbarData并根据需要使用它。您需要更新它以使用您正在使用的任何模板语言。

答案 1 :(得分:0)

我用解决方法解决了这个问题。我相信还有更多适当的&#34;这样做的方式。这是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将值提取到我的变量中。这工作,我可以加载它10/10次没有错误。如果有人想知道我正在使用JSBarCode。