【问题标题】:How to include simple JavaScript within Hugo如何在 Hugo 中包含简单的 JavaScript
【发布时间】:2016-01-14 18:38:58
【问题描述】:

给定以下代码:

$('img').mouseenter(function(){
//...
}).mouseleave(function(){
//...
});

我希望它包含在我的文章中。如果可能,我想避免编辑主题以避免分叉等。

【问题讨论】:

    标签: javascript static-site hugo


    【解决方案1】:

    这在一定程度上取决于您使用的主题。这可能是我们可以做得更好的领域,但请这样做:

    在主题中,查看

    layouts/partials 文件夹。

    如果您找到header.html 或类似名称,请将其复制到您当地的layouts/partials。然后,您只能覆盖此文件的内容。或者,您可以通过复制用于单个页面的模板进行自定义,通常是:layouts/_default/single.html

    【讨论】:

    • 关闭。我使用了主题/shiori/layouts/partials/scripts.html。理想情况下,它可以独立于主题,并且在主题文件本身之外完成,以防它发生变化。足够接近了。
    • 请注意,您可以将themes/shiori/layouts/partials/scripts.html复制到您自己项目的layouts/partials/scripts.html中。这样,它将在某种程度上独立于主题。但我同意,有一些“钩子功能”会很好。见:github.com/spf13/hugo/issues/1510
    【解决方案2】:

    bepanswer 非常好,但这里有一些额外的细节,供像我这样的 Hugo/前端新人使用

    1。在 HTML 中找到包含 JS 的位置

    首先,应该将 Hugo 主题的 header.htmlfooter.html(或类似名称)复制到您的 layouts/partials 文件夹中。它不一定是页眉或页脚,而是包含在您的 html 上的每个页面中的文件(这就是您通常使用 header.htmlfooter.html 的原因)。

    我有一个页脚位于<theme_folder>\layouts\partials\_shared\footer.html 的主题,然后我将其从主题文件夹复制到项目布局文件夹<project_root>\layouts\partials\_shared\footer.html

    2。在 HTML 中包含 script.js

    然后,我添加到footer.html的底部

    <script defer language="javascript" type="text/javascript"  src="{{ "/js/myscripts.js" | urlize | relURL }}"></script>
    

    defer 属性可以稍微提高页面加载时间,"/js/myscripts.js" 是我的 javascripts 的位置。该位置是相对于&lt;project_root&gt;\static\ 的路径。这是关于relURLurlize 的文档。

    示例脚本文件只包含

    // myscripts.js
    function myFunction(x) {
        let d = new Date();
        alert("Current datetime: " + d + "\nYou passed in: " + x);
    }
    

    3。使用JS函数

    这是在 Hugo 模板(属于模板的任何 .html)中使用 JS 函数的示例:

            {{ $somevar := "spam"}}
            <button onclick="myFunction( {{ $somevar}} )">Click me</button>
    

    内联 JS

    看起来内联 JS 也运行得很好;例如,添加

    <script>
        alert("Script loaded!");
    </script>
    

    到模板 html 文件运行得很好。不过,我只会将其用于快速测试,因为在多个 html 文件中可能需要一些脚本,并且将相同的脚本添加到多个文件只会增加您的整体网站文件大小。

    【讨论】:

    • 这对前端菜鸟很有帮助,谢谢!
    【解决方案3】:

    我将主题/whatever/layouts/_default/baseof.html 复制到 layout/_default/baseof.html 并在 html 标记末尾添加以下块:

    {{ 块“页面脚本”。 }}{{ 结束 }}

    那我可以加了

    {{- define "page-script" -}}
    <script>console.log("Hello!")</script>
    {{- end -}}

    在我的布局文件中放入脚本。

    【讨论】:

    • 我是 Hugo 的新手,这对我不起作用。 {{ - ... sn-p 只是为我显示为呈现的 html。如果我将{{- ... 更改为{{&lt; ... }},则会出现关于未能提取短代码的错误。我错过了什么?
    • 你想在页面上显示什么?
    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 2011-08-06
    • 2011-02-11
    • 2023-03-19
    • 2017-01-25
    • 2021-10-28
    • 2017-05-07
    • 1970-01-01
    相关资源
    最近更新 更多