节点 ejs 动态 javascript 加载

node ejs dynamic javascript load

所以我试图让路由文件传递需要包含在页面中的 javascript 文件列表,并让 ejs 构建 header 以包含这些脚本

我的路线文件

router.get('/:name', function(req,res, next) {
  res.render('templates/experiment', {
    name:req.params.name,
    extraScripts:experiments[req.params.name].extraScripts
  })
});

我的experiment.ejs

<head>
  <title><%= name %></title>
  <script src="../javascripts/p5/p5.js"></script>
  <script src="../javascripts/p5/addons/p5.dom.js"></script>
  <script src="../javascripts/p5/addons/p5.sound.js"></script>
  <% for(var i = 0; i < extraScripts.length; i++) { %>
    <script scr=<%= "../javascripts/" + extraScripts[i]%> ></script>
  <% }%>
  <script src=<%= "../javascripts/experiments/"+name + "/sketch.js"%>></script>
  <style> body {padding: 0; margin: 0;} </style>
</head>

现在,当我加载页面时,我可以看到脚本标签很好,但它并没有真正加载额外的脚本。

<head>
  <title>snake</title>
  <script src="../javascripts/p5/p5.js"></script>
  <script src="../javascripts/p5/addons/p5.dom.js"></script>
  <script src="../javascripts/p5/addons/p5.sound.js"></script>

  <script scr=../javascripts/library/colors.js ></script>

  <script src=../javascripts/experiments/snake/sketch.js></script>
  <style> body {padding: 0; margin: 0;} </style>
</head>

colors.js 文件没有加载我是不是遗漏了什么,sketch.js 是动态的,它加载得很好。

您的代码中有错字 使用 src 代替 scr.

也尝试将 src 路径括在双引号内,如下所示

<head>
  <title><%= name %></title>
  <script src="../javascripts/p5/p5.js"></script>
  <script src="../javascripts/p5/addons/p5.dom.js"></script>
  <script src="../javascripts/p5/addons/p5.sound.js"></script>
  <% for(var i = 0; i < extraScripts.length; i++) { %>
    <script src="<%= "../javascripts/" + extraScripts[i]%>" ></script>
  <% }%>
  <script src="<%= "../javascripts/experiments/"+name + "/sketch.js"%>"></script>
  <style> body {padding: 0; margin: 0;} </style>
</head>