在没有 JavaScript 框架的 HTML 中安装 turbolinks

Install turbolinks in HTML without JavaScript framework

刚开始使用 turbolinks,他们声称它可以在没有客户端 javascript 框架的情况下使用,我制作了一个 bootstrap 4 模板并尝试安装它。

从 repo 文件下载 .js 并包含在头部:

<script type="text/javascript" src="js/turbolinks.js"></script>

就在结束正文标签之前:

<script>
 Turbolinks.start()
</script>

控制台调试没有报错,js加载了但是每次访问新的页面都会加载整个页面link.

试图在网络服务器中添加 var Turbolinks = require("turbolinks") 但出现错误。

Server.js

//jshint esversion:6
const express = require("express")
const app = express();
var Turbolinks = require("turbolinks")

app.get("/", function(req, res){
  res.sendFile( __dirname + "/public/" + "index.html" );
});

app.use(express.static(__dirname + '/public'));

app.listen(3000, function(){
  console.log("Server started on port 3000")
});

index.html

<!doctype html>
<html lang="en">

<head>
  <link rel='icon' href='favicon.ico' type='image/x-icon' />

  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="css/bootstrap.min.css">
  <link rel="stylesheet" href="css/style.css" type="text/css">

  <link href="https://fonts.googleapis.com/css?family=IM+Fell+English|Lato:400,700&display=swap" rel="stylesheet">

  <script src="https://kit.fontawesome.com/e5f3028323.js" crossorigin="anonymous"></script>
  <script type="text/javascript" src="js/turbolinks.js"></script>

  <title>App</title>
</head>

<body>

  <section class="navbar sticky-top justify-content-between">
    <span></span>
    <div class="p-2 bd-highlight">CW App</div>
    <button type="button" class="btn btn-nav">
      <i class="fas fa-ellipsis-h"></i>
    </button>
  </section>

  <div class="nav-bg"></div>

  <section class="container">
    <div class="row">
      <div class="col d-flex justify-content-center cerca">
        <form class="form-inline">
          <input class="form-control form-control-search" type="search" placeholder="Search" aria-label="Search">
          <button class="btn-cerca my-2 my-sm-0" type="submit"><i class="fa fa-search"></i></button>
        </form>
      </div>
    </div>
  </section>

  <section class="container" data-turbolinks-permanent>
    <div class="row">
      <div class="col">
        <div class="list-group list-button  mx-auto">
          <button class="list-group-item d-flex justify-content-between align-items-center">
            <span><img class="menu-icon" src="img/icons-menu/rulebook.png">Rulebook</span>
            <span class="list-arrow">&rsaquo;</span>
          </button>
          <button class="list-group-item d-flex justify-content-between align-items-center">
            <span><img class="menu-icon" src="img/icons-menu/factions.png">Factions</span>
            <span class="list-arrow">&rsaquo;</span>
          </button>
          <button class="list-group-item d-flex justify-content-between align-items-center">
            <span><img class="menu-icon" src="img/icons-menu/neutrals.png">Neutrals</span>
            <span class="list-arrow">&rsaquo;</span>
          </button>
          <button class="list-group-item d-flex justify-content-between align-items-center">
            <span><img class="menu-icon" src="img/icons-menu/maps.png">Maps</span>
            <span class="list-arrow">&rsaquo;</span>
          </button>
          <button class="list-group-item d-flex justify-content-between align-items-center">
            <span><img class="menu-icon" src="img/icons-menu/dice.png">Dice Roll</span>
            <span class="list-arrow">&rsaquo;</span>
          </button>
          <button class="list-group-item d-flex justify-content-between align-items-center">
            <span><img class="menu-icon" src="img/icons-menu/randomizer.png">Game Randomizer</span>
            <span class="list-arrow">&rsaquo;</span>
          </button>
          <button class="list-group-item d-flex justify-content-between align-items-center">
            <span><img class="menu-icon" src="img/icons-menu/doom.png">Doom & Ritual Track</span>
            <span class="list-arrow">&rsaquo;</span>
          </button>
          <button class="list-group-item d-flex justify-content-between align-items-center" onclick="window.location.href = './timer.html';">
            <span><img class="menu-icon" src="img/icons-menu/timer.png">Timer</span>
            <span class="list-arrow">&rsaquo;</span>
          </button>
          <button class="list-group-item d-flex justify-content-between align-items-center">
            <span><img class="menu-icon" src="img/icons-menu/music.png">Background Music</span>
            <span class="list-arrow">&rsaquo;</span>
          </button>
        </div>
      </div>
    </div>
  </section>


  <!-- JavaScript -->
  <script type="text/javascript" src="js/bootstrap-native-v4.min.js"></script>
  <script type="text/javascript" src="js/script.js"></script>

  <script>
    Turbolinks.start()
  </script>

</body>

</html>

documentation for TurboLinks 说:

Turbolinks intercepts all clicks on <a href> links to the same domain.

…但是你的HTML没有.

您有一些 <button> 元素,我猜您可能有一些 JavaScript 使它们像链接一样工作,但 TurboLinks 不会接收它们。

它确实有 mechanism for manually triggering TurboLinks,但您最好使用真实链接而不是按钮和 JavaScript。