为什么把svg标签渲染到一个ejs文件不能识别

我尝试使用d3-node在服务器端创build图表,并尝试使用以下代码将新图表呈现为ejs:<%= svgChart%>当我使用浏览器查看它时,它只显示如下的svg标记内容:

<svg xmlns="http://www.w3.org/2000/svg" width="960" height="400"><defs> <style type="text/css"><![CDATA[ .axis{font: 10px sans-serif;} .axis path,.axis line{fill: none;stroke: #000;shape-rendering: crispEdges;} .x.axis path{display: none;} ]]></style></defs><g transform="translate(40,20)"><path d="M20,32.4L20.430000000000003,32.4L20.86,32.4L21.290000000000003,32.4L21.720000000000002,32.4L22.150000000000002,32.4L22.580000000000002,32.4L23.01,32.4L23.44,32.4L23.87,32.4L24.299999999999997,32.4L24.73,32.4L25.16,32.4L25.590000000000003,32.4L26.02,32.4L26.450000000000003,32.4L26.88,32.4L27.310000000000002,32.4L27.740000000000002,32.4L28.17,32.4L28.6,32.4L29.03,32.4L29.46,32.4L29.89,32.4L30.32,32.4L30.75,32.4L31.18,32.4L31.61,32.4L32.04,32.4L32.47,32.4L32.9,32.4L33.33,32.4L33.76,32.4L34.190000000000005,32.4L34.620000000000005,32.4L35.050000000000004,32.4L35.480000000000004,32.4L35.910000000000004,32.4L36.34,32.4L36.77,32.4L37.2,32.4L37.63,32.4L38.06,32.4L38.489999999999995,32.4L38.92,32.4L39.35,32.4L39.78,32.4L40.21,32.4L40.64,32.4L41............................... 

没有显示图表本身。 svgChart包含svg标签的string。 如果我将svgChart内容(string)直接复制到ejs,它将完美地显示图表。

看起来ejs在加载页面时不能显示标签的内容。它认为svgChart是一个普通的string。

我的问题是:如何使ejs将svgChart识别为svg标签,使其能够显示标签文本的svg图表insead?

尝试使用<%- svgChart %>代替<%= svgChart %> 。 通过EJS文档:

  • <%=将值输出到模板(HTML转义)
  • <% – 将未转义的值输出到模板中