【问题标题】:Pug include unbuffered javascriptPug 包括无缓冲的 javascript
【发布时间】:2017-05-22 23:52:16
【问题描述】:

有没有办法包含无缓冲的 javascript,以便多个文件可以重用相同的函数、变量等?

示例

- const viewbox = { x: 5000, y: 5000 };

现在我想在多个文件中重用这段代码。有什么办法吗?

【问题讨论】:

    标签: pug


    【解决方案1】:

    解决方法:

    这可能以一种相当不干净的方式:创建一个 pug 文件empty.pug(什么都不保存,或者解释为什么该目录周围有一个空文件的注释;如果空策略不起作用,您可以添加一个empty.pug 中的存根 mixin 只是为了取悦编译器)。将 empty 模板包含在要保存 JS 代码源的 pug 模板中,如下所示:

    include empty
    
    - function foo() { return "bar"; }
    

    现在您可以在其他需要 JS 代码的模板中 include 该模板。

    旧帖:

    您可以简单地将带有无缓冲 JavaScript 的模板文件包含在您想要使用它的任何其他 Pug 模板文件中。这可以通过 include 关键字来完成。

    编辑:

    似乎只有当您在保存 JavaScript 的文件中还包含一个 mixin 时,这才有可能。正在研究包含纯 JS 代码的可能性(根据 Pug repo 上的 these two GitHub 问题)。

    【讨论】:

    • 即使没有任何内容,也只有无缓冲的javascript?
    • 是的,只要你在使用它之前包含它,include 也会将任何无缓冲的 JS 转移到父模板中,这样你就可以像在包含的模板中一样在那里使用它
    • 我包含一个只有无缓冲 javascript 的文件,但是当我尝试记录变量时,它显示为未定义。有任何想法吗?它只有一个const 声明。
    • 是的,我明白你的意思了包含在已经有 mixins 的文件中)。根据this issue report 上后来的 cmets 的说法,似乎 pug 开发人员正在开发这样的功能。
    • 我现在解决这个问题的方法是在我的文件夹中放置一个名为“_empty.pug”的 pug 文件,其中包含一个名为“generate-empty-comment”的 mixin。然后我从包含 JS 代码的文件中调用 mixin,然后它就可以工作了。包括它还不够,但我将您的答案标记为已接受。
    【解决方案2】:

    如果您使用Template Inheritance 并有一个主模板文件(比如说body.pug),其中调用说block content 和一个单独的pug 文件,每个页面在其中extends ./body 和定义block content 然后您在 body.pug 中输入的无缓冲代码将在每个子 pug 文件中可用。

    例如,如果您将以下内容放入body.pug

    - let goat = true
    

    您将能够在任何子 pug 文件中使用它:

    nav
      a( href='/') Home
      a( href='/blog) Blog
      if goat
         a( href='/goat') Goat
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多