[RUBY] Turbolinks: Ich möchte das Problem lösen, dass JS nicht richtig angezeigt wird, es sei denn, es wird beim Übergang mit link_to neu geladen

Inhaltsverzeichnis

  1. Einführung
  2. [Was stört die Anzeige von JS ...](Was stört die Anzeige von #js)
  3. [Wer sind Turbolinks? ](Wer ist #turbolinks)
  4. Lösung
  5. Endlich

Einführung

Derzeit wird ein Portfolio erstellt Dabei habe ich eine Kalenderfunktion mit JavaScript implementiert.

** Beim Übergang von link_to zur Kalenderseite Es gab ein Problem, dass JavaScript nur angewendet wurde, wenn es einmal neu geladen wurde **

Ich schreibe diesen Artikel mit der Absicht, die Ursache dieses Bereichs zu klären und Aufzeichnungen zu führen. Bitte beachten Sie, dass dieser Artikel von einem Programmieranfänger stammt.

Was die JS-Anzeige stört, ist ...

Alles in allem ** Turbolinks **. Aufgrund dieses Typen wird der JS, den ich hart geschrieben habe, nicht am Übergangsziel angezeigt.

Wenn man so denkt, scheint es ein hasserfüllter Typ zu sein. Als ich verschiedene Dinge recherchierte, schien er tatsächlich ein guter Kerl zu sein.

Es ist ein guter Kerl, aber manchmal mit zusätzlicher Hilfe, Es scheint, dass wir versehentlich unsere wichtige und wichtige JS verstecken.

Turbolinks, vielleicht kannst du es nicht hassen. Das brachte mich dazu, mehr zu wissen (gewaltsam).

Deshalb werde ich genauer hinsehen.

Wer sind Turbolinks?

Turbolinks ist eine Bibliothek, die automatisch Ajax-Seitenübergänge als Reaktion auf Linkklicks durchführt.

① Klicken Sie auf das Tag a, um die Übergangszielseite mit Ajax aufzurufen

(2) Wenn das für die erfasste Seite erforderliche CSS oder JS mit dem der aktuellen Seite übereinstimmt, ersetzen Sie nur den Titel oder den Text (nur einen Teil des Bildschirms).

Das ist der Hauptmechanismus von Turbolinks.

Vorteile der Einführung von Turbolinks

Der größte Vorteil der Einführung von Turbolinks besteht darin, dass die Bildschirmanzeige beschleunigt wird.

Wenn Sie auf einen Link klicken, gelangen Sie normalerweise zur angegebenen Seite. Dies dauert also so lange. Wenn Sie jedoch Turbolinks installiert haben, wird kein ** Seitenübergang durchgeführt und Ajax wird Teil des Bildschirms. Da es sich um einen Mechanismus handelt, mit dem nur ** aktualisiert werden kann, dauert das Laden nicht lange und die Seitenanzeige wird schneller.

Aus Sicht der Website möchte ich die Wartezeit so weit wie möglich reduzieren. Turbolinks fühlen sich wie ein Retter an, um UX zu verbessern.

Was für ein guter Kerl: Lachen: Die Tatsache, dass es von Anfang an eingeführt wurde, liegt daran, dass es so bequem und benutzerfreundlich ist, wie es ist.

Das heißt, egal wie gut ein Kerl ist, es kann manchmal und in einigen Fällen ärgerlich sein.

Nachteile der Einführung von Turbolinks

Der Nachteil der Einführung von Turbolinks besteht darin, dass die ordnungsgemäße Anzeige von JS und CSS ** beeinträchtigt werden kann.

In Bezug auf die Vorteile erklärte ich, dass Turbolinks nur einen Teil des Bildschirms aktualisiert. Es kann gesagt werden, dass dieser Mechanismus das Problem verursacht, dass JavaScript nicht gut widerspiegelt. Oben habe ich erwähnt, dass bei Verwendung von Turbolinks ** keine Seitenübergänge ausgeführt werden und nur ein Teil des Bildschirms von Ajax ** aktualisiert wird.

** Da der Seitenübergang des Browsers nicht durchgeführt wurde, wird das JavaScript-Ereignis nicht ausgelöst ** und daher wird das JavaScript nicht gut wiedergegeben.

Dies ist der gemunkelte zusätzliche Abschnitt von Turbolinks. Das war's.

Lösung

Turbolinks einführen, bei Bedarf deaktivieren, Ich möchte irgendwie das Verhalten von JavaScript widerspiegeln.

Anscheinend gibt es zwei Lösungen für diese Leute.

① Fügen Sie von Turbolinks bereitgestellte Ereignisse hinzu

Stellen Sie sicher, dass JS ordnungsgemäß funktioniert, indem Sie der JS-Datei das Turbolinks-spezifische Ereignis turbolinks: load hinzufügen.

test.js


document.addEventListner('turbolinks:load', function() {
  console.log('Loaded');
});

② Deaktivieren Sie Turbolinks für einen bestimmten Link

Durch Hinzufügen von data: {"turbolinks" => false} zum a-Tag (link_to) JS funktioniert normal, indem Turbolinks deaktiviert und zum Übergangsziel gesprungen werden.

test.html.slim


=link_to "Prüfung", tests_path, data: {"turbolinks" => false}

Schließlich

Ich habe mich zufällig mit Turbolinks befasst, als ich das Portfolio erstellt habe. Je mehr ich aufsah, desto tiefer fühlte ich mich. Dieses Mal werde ich die Grundlagen behalten, aber wenn ich noch eine Chance habe, würde ich gerne nachforschen.

Wenn Sie im Inhalt dieses Artikels Fehler oder Auslassungen finden, würden wir uns freuen, wenn Sie uns dies mitteilen könnten.

Referenz: Funktionsprinzip von Rails Guide Turbolinks [Ruby on Rails-Kurzanleitung S.340-S.344](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD % BF% E3% 81% 88% E3% 82% 8B-Ruby-Rails-5% E9% 80% 9F% E7% BF% 92% E5% AE% 9F% E8% B7% B5% E3% 82% AC % E3% 82% A4% E3% 83% 89-% E5% A4% A7% E5% A0% B4% E5% AF% A7% E5% AD% 90 / dp / 4839962227 / ref = sr_1_1? __Mk_ja_JP =% E3 % 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & crid = 2RTWZ5N8BXF8J & dchild = 1 & keywords = Rails +% E5% AE% 9F% E8% B7% B5% E3% 82% AC% E3% 82 % A4% E3% 83% 89 & qid = 1600782175 & sprefix = Schienen +% E5% AE% 9F% E8% B7% B5% 2Caps% 2C249 & sr = 8-1)

Recommended Posts

Turbolinks: Ich möchte das Problem lösen, dass JS nicht richtig angezeigt wird, es sei denn, es wird beim Übergang mit link_to neu geladen
[Rails] Ich möchte beim Übergang mit link_to Daten zu Params hinzufügen
So lösen Sie das Problem, dass das Website-Image nach der Bereitstellung auf Heroku in Rails 5 nicht angezeigt wird
So lösen Sie das Problem, dass die Bean beim Verschachteln in Spring Batch nicht ordnungsgemäß verarbeitet wird
Ich hatte das Problem, dass JS nach dem Seitenübergang nicht gelesen wird und JS beim Laden gelesen wird.
So lösen Sie das Problem, wenn der Wert nicht gesendet wird, wenn das Formular in Schienen deaktiviert und gesendet wird
Ich habe versucht, das Problem der "mehrstufigen Auswahl" mit Ruby zu lösen
Ich möchte das N + 1-Problem lösen, bei dem die Daten mehr gesammelt werden und der Vorgang langsam wird.
Informationen zum Problem, dass das Image nach der AWS-Bereitstellung nicht angezeigt wird
So beheben Sie das Problem, dass beim Stoppen der Webanwendung kein Protokollierungsprotokoll ausgegeben wird
[WSL] Lösung für das Phänomen, dass 404 angezeigt wird, wenn versucht wird, Java mit apt einzufügen (persönliches Memo)
[Rails] So lösen Sie das Problem, dass das Standardbild beim Bearbeiten überschrieben wird, ohne das Bild hochzuladen [Active Storage]
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby mit Wiederholung zu lösen.
Die Gerätefehlermeldung wird nicht richtig angezeigt.
Wenn das Projekt nicht in Eclipse angezeigt wird
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (graue Magie, die weniger schwarze Magie ist)
[Android Studio] Über die Tatsache, dass die Entwurfsansicht bei Verwendung von TextClock nicht angezeigt wird
Eine Warnung wird angezeigt, wenn versucht wird, eine große Ganzzahl mit den speziellen Variablen $ 1, $ 2, $ 3 ... zu verwenden.
Ich möchte den Dunkelmodus mit der SWT-App verwenden
Ich habe versucht, das Problem mit dem Ruby-Bonusgetränk zu lösen (es gibt ein Beispiel für die Antwort).
[Schienen] Was tun, wenn die Ansicht zusammenbricht, wenn eine Nachricht mit der Fehlermethode angezeigt wird?
Ich möchte den Startbefehl mit Docker-Compose an Postgres übergeben.
Als ich versuchte, das AWS SDK mit Ruby + Lambda zu verwenden, war "sam local" durcheinander.
Ich habe versucht, das Problem bei der Erstellung von Ruby-Bingokarten zu lösen (es gibt ein Beispiel für die Antwort).
Ich möchte den Rahmen des Textfelds rot machen, wenn ein Eingabefehler auftritt
Was tun, wenn die App nicht mit der neuesten Rails-Version erstellt wurde, die bei neuen Rails installiert wurde?
Was tun, wenn javax.el.ELException: Kein gültiger Methodenausdruck: wird angezeigt, wenn der JSF-Bildschirm angezeigt wird