【问题标题】:How to generate a pure JavaScript file with Jade如何使用 Jade 生成纯 JavaScript 文件
【发布时间】:2013-10-01 06:09:18
【问题描述】:

我知道 Jade 用于生成 HTML 而不是 JavaScript,但是对于我正在工作的项目,如果我可以在每行中不添加管道的情况下做到这一点,那就太好了,而且可以节省大量时间:

|   (function(){
|       //Some JavaScript Code
|       var foo="#{bar}";
|       console.log("This a JavaScript file generated with Jade");
|   })()

这个想法是使用这个模板的输出作为常规 JavaScript 的源代码,如下所示:

<script type="application/javascript" src="foo.generated.js"></script>

所以做这样的事情:

script(type="application/javascript").
    (function(){
        //Some JavaScript Code
        var foo="#{bar}";
        console.log("This a JavaScript file generated with Jade");
    })()

不会解决我的问题,因为我需要输出没有 DOM 容器元素的纯 JavaScript。

是否有另一种方法可以做到这一点,而无需在每一行都添加管道?或者我不得不假设 Jade 被设计为只生成 HTML,放弃,并在没有 Jade 的情况下寻找其他解决方案?

提前致谢!

【问题讨论】:

  • 您正在使用 Jade 生成 JavaScript 文件?为什么?
  • @minitech 我知道 Jade 不是这样做的理想工具,但我问是因为我正在处理的项目具有允许我从内部模型生成 HTML 模块的功能,对于我必须开发的特定功能,如果我可以使用相同的已开发功能来生成纯 JavaScript 文件,我将节省大量时间和代码行。谢谢!
  • 所以你的 JavaScript 包含嵌入的 HTML?
  • @minitech 不一定,但它让我可以访问其他内部服务提供的信息,这些信息在渲染时注入到传递给模板的模型中。通常这用于生成 HTML,但在这种特殊情况下,我需要为每个用户动态生成一个 JavaScript 文件,并且需要很长时间。
  • 什么样的数据进入模板?它只是字符串替换,还是更复杂? (顺便说一句,你的问题的答案是“是”。例如,Jade 会逃避很多你可能不想逃避的事情,它会不会也逃避一些事情。)

标签: javascript pug


【解决方案1】:

我认为你应该使用:

res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Content-Type', 'text/javascript; charset=utf-8');
res.end(`(function(){
    //Some JavaScript Code
    var foo="${bar}";
    console.log("This a JavaScript file generated with Jade");
})()`);

【讨论】:

    【解决方案2】:

    生成所有 XML,包括 HTML。并且翡翠并不是为了投射大块的javascript而设计的。您可以做的最好的事情是创建一种方法来获取这些大块并修改变量。正如在示例中所做的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多