代码之家  ›  专栏  ›  技术社区  ›  Kirbytech

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

  •  1
  • Kirbytech  · 技术社区  · 7 年前

    我正在尝试使用node包 jsbarcode 生成条形码。我需要能够从 res.locals 放入一个名为 main.js 它在我的公共目录中。原因是我需要在页面加载时使用数据生成条形码,这些数据通过 res.locals公司

    html:

    <img id="barcode"/>

    主要的js:

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

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

    TLDR:

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

    2 回复  |  直到 7 年前
        1
  •  0
  •   dzm    7 年前

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

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

    然后在你的 main.js window.jbarData 你想怎么用就怎么用。你需要更新它以使用你正在使用的任何模板语言。

        2
  •  0
  •   Kirbytech    7 年前

    我用变通方法解决了这个问题。我确信有一种更“恰当”的方式来做这件事。以下是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>
    

    .innerhtml 将值提取到我的变量中。这是可行的,我可以加载10/10次,没有错误。如果有人想知道,我正在使用JSBarCode。