gpt4 book ai didi

javascript - gulp useref 不能处理多个 html 文件

转载 作者:行者123 更新时间:2023-11-30 16:11:31 24 4
gpt4 key购买 nike

我的项目中有 5 个 HTML 文件,每个文件的底部都有一个 userref block ,如下所示:

<!-- build:js static/js/main.js -->
<script src="static/js/plugins.js"></script>
<!-- endbuild -->

5个文件中共同的JS文件都是 plugins.js 。我需要在每个 HTML 文件中都有那个 JS 文件,并在我的所有文件中重复它。我的第二个 HTML 文件有这个 block (同样有 plugins.js):

<!-- build:js static/js/main.js -->
<script src="static/js/jquery.barrating.min.js"></script>
<script src="static/js/plugins.js"></script>
<!-- endbuild -->

我的第五个 HTML 文件有这个 block :

<!-- build:js static/js/main.js -->
<script src="static/js/jquery.matchHeight-min.js"></script>
<script src="static/js/jquery.barrating.min.js"></script>
<script src="static/js/plugins.js"></script>
<!-- endbuild -->

所以我在每个文件中都使用了 plugins.js,在一些文件中我使用了一些其他库。但是当我运行任务时,这三个文件没有连接到 main.js 中。 main.js 中唯一的东西是来自 plugins.js 的内容。其他库不包含在 main.js 中。为什么会这样?我什至可以像这样使用这个插件吗?

我的 gulp 任务:

gulp.task('compress:js:html', ['clear:dist'], function () {
return gulp.src('./*.html')
.pipe(useref())
.pipe(htmlmin({collapseWhitespace: true}))
.pipe(gulp.dest('./dist/'))
});

最佳答案

您的所有 HTML 文件都为串联文件 (static/js/main.js) 指定了相同的位置,但它们都指定了应该串联的不同源文件。根据处理 HTML 文件的顺序,您最终会得到不同的 static/js/main.js。在您的情况下,您的第一个示例中的那个。

你有两个选择:

  1. 对于每个 HTML 文件,为串联文件指定不同的位置:

    HTML 文件 1:

    <!-- build:js static/js/main1.js -->
    <script src="static/js/plugins.js"></script>
    <!-- endbuild -->

    HTML 文件 2:

    <!-- build:js static/js/main2.js -->
    <script src="static/js/jquery.barrating.min.js"></script>
    <script src="static/js/plugins.js"></script>
    <!-- endbuild -->

    HTML 文件 3:

    <!-- build:js static/js/main3.js -->
    <script src="static/js/jquery.matchHeight-min.js"></script>
    <script src="static/js/jquery.barrating.min.js"></script>
    <script src="static/js/plugins.js"></script>
    <!-- endbuild -->

    这将减少浏览器必须为每个页面发出的请求数,但不会利用浏览器缓存。

  2. 在每个 HTML 文件中引用所有 JS 文件,无论您是否需要该特定页面的 JS 文件。这意味着您的所有三个 HTML 文件中都有以下内容:

    <!-- build:js static/js/main.js -->
    <script src="static/js/jquery.matchHeight-min.js"></script>
    <script src="static/js/jquery.barrating.min.js"></script>
    <script src="static/js/plugins.js"></script>
    <!-- endbuild -->

    由于浏览器会缓存生成的 main.js 文件,因此只需下载一次。

关于javascript - gulp useref 不能处理多个 html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com