Heim Web-Frontend js-Tutorial Welche Probleme treten bei der Verwendung von MathJax in Angular auf?

Welche Probleme treten bei der Verwendung von MathJax in Angular auf?

Jun 20, 2018 pm 04:24 PM
使用

Dieser Artikel führt Sie hauptsächlich in einige Probleme ein, die bei der Verwendung von MathJax in Angular auftreten. Der Artikel stellt es ausführlich anhand von Beispielcode vor. Es hat einen gewissen Referenz-Lernwert für alle, die es brauchen . Studieren und studieren.

Vorwort

Mit anderen Worten, ich tendierte ursprünglich zu KaTeX, weil ich das Gefühl hatte, dass es schnell war und MathJax schwer zu übertreffen schien. Allerdings äußerten alle ihre Unzufriedenheit mit den fehlenden Funktionen von KaTeX, was mich motivierte, mich mit MathJax zu befassen.

Einführung in MathJax

MathJax ist eine Open-Source-Rendering-Engine für mathematische Symbole, die im Browser ausgeführt wird und bequem im Browser verwendet werden kann Mathematische Formeln werden in dargestellt, ohne Bilder zu verwenden. Derzeit kann MathJax die Auszeichnungssprachen Latex, MathML und ASCIIMathML analysieren. Das MathJax-Projekt startete im Jahr 2009. Zu den Initiatoren gehören die American Mathematical Society, Design Science usw. sowie viele Unterstützer. Ich persönlich bin der Meinung, dass MathJax in Zukunft zum Mainstream der mathematischen Symbol-Rendering-Engines werden wird, vielleicht ist es das schon Fall.

Ich persönlich glaube nicht, dass ich mich damit beschäftigt habe, denn MathJax ist eigentlich sehr einfach. Sie können ein Element rendern, indem Sie MathJax.Hub.Queue(['Typeset', MathJax.Hub, this.element.nativeElement]); aufrufen (this.element.nativeElement ist die Syntax zum Aufrufen seines DOM). von Angular) und dies .Queue Tatsächlich ist es das von MathJax selbst implementierte Rückrufformat. Die Syntax ist sehr seltsam und die Anzahl der Parameter ist variabel. Jeder einzelne ist ein Array, das einen Rückruf darstellt und sequentiell ausgeführt wird. Zum Beispiel ist dies ['Typeset', MathJax.Hub, this.element.nativeElement], das erste Element ist der Methodenname, das zweite Element ist this und die folgenden Elemente sind Parameter ...

Wir Wie Sie sehen, ist das Erreichen dieses Punktes gleichbedeutend mit der Ausführung von MathJax.Hub.Typeset(this.element.nativeElement) . Warum also nicht dies ausführen? Da diese Methode synchron ist, bleibt die Seite stark hängen. Also kapselt MathJax eine asynchrone Warteschlange (ihre API hat sich möglicherweise seit Hunderten von Jahren nicht geändert)

Kehren wir zu Angular zurück. Da ich Markdown verwenden muss, besteht meine Idee darin, Markiert zum Kapseln einer Direktive zu verwenden. Dann sollten wir MathJax verwenden, um die Komponente zu setzen, nachdem das markierte Rendern abgeschlossen ist. Aber als ich das tatsächlich tat, erzeugte es einen wunderbaren Effekt – nach dem Seitenwechsel dauerte es fast eine Minute, bis mit dem Rendern begonnen wurde. Ich habe mehrere Protokolle in die Warteschlange gestellt und festgestellt, dass jedes Element viermal in die Warteschlange gestellt wurde, also Dutzende von Elementen. Kein Wunder, dass es eine Minute dauert, mit dem Rendern des Inhalts der nächsten Seite zu beginnen, obwohl die meisten Markdowns überhaupt keine Mathematik enthalten.

Zu diesem Zeitpunkt wurde ich langsam entmutigt. Gibt es keine Lösung für dieses Problem? Als ich verzweifelt war, habe ich darüber nachgedacht, ob ich das Dokument direkt setzen könnte. Das Ergebnis war, dass es möglich und sehr schnell war. Das Rendern ist also nicht langsam, möglicherweise ist der Initialisierungsprozess des Renderns langsam. Dann kommt zu diesem Zeitpunkt die Lösung. Wir können die Anzahl der Renderings minimieren und nur das Dokument rendern. Solange das Rendern noch läuft, werden wir sie, egal wie viele Elemente in die Warteschlange kommen, nur einmal als Warteschlange behandeln.

Also habe ich diesen Service geschrieben:

@Injectable()
export class MathjaxService {
 public isQueued = false;
 public isRunning = false;
 window: any;
 constructor(@Inject(PLATFORM_ID) private platformId: Object) {
 if (isPlatformBrowser(this.platformId)) {
 this.window = window as any;
 }
 }
 finishRunning() {
 this.isRunning = false;
 if (this.isQueued) {
 this.queueChange();
 }
 }
 queueChange() {
 if (this.isRunning) {
 this.isQueued = true;
 } else {
 this.isQueued = false;
 this.isRunning = true;
 if (isPlatformBrowser(this.platformId)) {
 if (this.window.MathJax) {
  this.window.MathJax.Hub.Config({
  messageStyle: 'none',
  tex2jax: {
  // preview: 'none',
  inlineMath: [['$', '$']],
  processEscapes: true
  }
  });
  this.window.MathJax.Hub.Queue(['log', console, 'start'], ['Typeset', this.window.MathJax.Hub, document], ['log', console, 'end'], ['finishRunning', this]);
 }
 } else {
 this.finishRunning();
 }
 }
 }
}
Nach dem Login kopieren

Das Obige habe ich für alle zusammengestellt. Ich hoffe, es wird für alle hilfreich sein Zukunft.

Verwandte Artikel:

So implementieren Sie den Wechsel des linken und rechten Karussells in jquery

So erhalten Sie Daten und weisen sie der Seite zu in jQuery

So implementieren Sie die 3D-Modellanzeige in three.js

Angular CLI-Installationsanleitung

In Vuejs Implementierung einer asynchronen Update-Warteschlange über nextTick()

So implementieren Sie Toast mit ReactNative

So extrahieren Sie allgemeine Module mit CommonsChunkPlugin

Das obige ist der detaillierte Inhalt vonWelche Probleme treten bei der Verwendung von MathJax in Angular auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Magnetlinks So verwenden Sie Magnetlinks Feb 18, 2024 am 10:02 AM

Magnet-Link ist eine Link-Methode zum Herunterladen von Ressourcen, die bequemer und effizienter ist als herkömmliche Download-Methoden. Mit Magnet-Links können Sie Ressourcen im Peer-to-Peer-Verfahren herunterladen, ohne auf einen Zwischenserver angewiesen zu sein. In diesem Artikel erfahren Sie, wie Sie Magnetlinks verwenden und worauf Sie achten sollten. 1. Was ist ein Magnet-Link? Ein Magnet-Link ist eine Download-Methode, die auf dem P2P-Protokoll (Peer-to-Peer) basiert. Über Magnet-Links können Benutzer eine direkte Verbindung zum Herausgeber der Ressource herstellen, um die gemeinsame Nutzung und das Herunterladen von Ressourcen abzuschließen. Im Vergleich zu herkömmlichen Download-Methoden magnetisch

So verwenden Sie MDF- und MDS-Dateien So verwenden Sie MDF- und MDS-Dateien Feb 19, 2024 pm 05:36 PM

Verwendung von MDF- und MDS-Dateien Dank der kontinuierlichen Weiterentwicklung der Computertechnologie können wir Daten auf vielfältige Weise speichern und teilen. Im Bereich digitaler Medien stoßen wir häufig auf spezielle Dateiformate. In diesem Artikel besprechen wir ein gängiges Dateiformat – MDF- und MDS-Dateien – und stellen deren Verwendung vor. Zuerst müssen wir die Bedeutung von MDF-Dateien und MDS-Dateien verstehen. mdf ist die Erweiterung der CD/DVD-Imagedatei und die mds-Datei ist die Metadatendatei der mdf-Datei.

Mar 18, 2024 pm 02:58 PM

CrystalDiskMark ist ein kleines HDD-Benchmark-Tool für Festplatten, das schnell sequentielle und zufällige Lese-/Schreibgeschwindigkeiten misst. Lassen Sie sich als Nächstes vom Redakteur CrystalDiskMark und die Verwendung von CrystalDiskMark vorstellen ). Zufällige I/O-Leistung. Es ist eine kostenlose Windows-Anwendung und bietet eine benutzerfreundliche Oberfläche und verschiedene Testmodi zur Bewertung verschiedener Aspekte der Festplattenleistung. Sie wird häufig in Hardware-Reviews verwendet

Mar 18, 2024 am 10:58 AM

foobar2000 ist eine Software, die Ihnen jederzeit Musik aller Art mit verlustfreier Klangqualität bietet Spielen Sie das erweiterte Audio auf dem Computer ab, um ein bequemeres und effizienteres Musikwiedergabeerlebnis zu ermöglichen. Das Interface-Design ist einfach, klar und benutzerfreundlich. Es nimmt einen minimalistischen Designstil an, ohne übermäßige Dekoration Es unterstützt außerdem eine Vielzahl von Skins und Themes, personalisiert Einstellungen nach Ihren eigenen Vorlieben und erstellt einen exklusiven Musikplayer, der die Wiedergabe mehrerer Audioformate unterstützt. Außerdem unterstützt es die Audio-Gain-Funktion zum Anpassen der Lautstärke Passen Sie die Lautstärke entsprechend Ihrem Hörzustand an, um Hörschäden durch zu hohe Lautstärke zu vermeiden. Als nächstes lass mich dir helfen

So verwenden Sie NetEase Mailbox Master So verwenden Sie NetEase Mailbox Master Mar 27, 2024 pm 05:32 PM

NetEase Mailbox ist eine von chinesischen Internetnutzern weit verbreitete E-Mail-Adresse und hat mit seinen stabilen und effizienten Diensten schon immer das Vertrauen der Benutzer gewonnen. NetEase Mailbox Master ist eine E-Mail-Software, die speziell für Mobiltelefonbenutzer entwickelt wurde. Sie vereinfacht das Senden und Empfangen von E-Mails erheblich und macht unsere E-Mail-Verarbeitung komfortabler. Wie Sie NetEase Mailbox Master verwenden und welche spezifischen Funktionen es bietet, wird Ihnen der Herausgeber dieser Website im Folgenden ausführlich vorstellen und hofft, Ihnen weiterzuhelfen! Zunächst können Sie die NetEase Mailbox Master-App im Mobile App Store suchen und herunterladen. Suchen Sie im App Store oder im Baidu Mobile Assistant nach „NetEase Mailbox Master“ und befolgen Sie dann die Anweisungen zur Installation. Nachdem der Download und die Installation abgeschlossen sind, öffnen wir das NetEase-E-Mail-Konto und melden uns an. Die Anmeldeschnittstelle ist wie unten dargestellt

So verwenden Sie die Baidu Netdisk-App So verwenden Sie die Baidu Netdisk-App Mar 27, 2024 pm 06:46 PM

Cloud-Speicher sind heutzutage aus unserem täglichen Leben und Arbeiten nicht mehr wegzudenken. Als einer der führenden Cloud-Speicherdienste in China hat Baidu Netdisk mit seinen leistungsstarken Speicherfunktionen, der effizienten Übertragungsgeschwindigkeit und dem komfortablen Bedienerlebnis die Gunst einer großen Anzahl von Benutzern gewonnen. Und egal, ob Sie wichtige Dateien sichern, Informationen teilen, Videos online ansehen oder Musik hören möchten, Baidu Cloud Disk kann Ihre Anforderungen erfüllen. Viele Benutzer verstehen jedoch möglicherweise nicht die spezifische Verwendung der Baidu Netdisk-App. Dieses Tutorial führt Sie daher im Detail in die Verwendung der Baidu Netdisk-App ein. Wenn Sie immer noch verwirrt sind, folgen Sie bitte diesem Artikel, um mehr im Detail zu erfahren. So verwenden Sie Baidu Cloud Network Disk: 1. Installation Wählen Sie beim Herunterladen und Installieren der Baidu Cloud-Software zunächst die benutzerdefinierte Installationsoption aus.

BTCC-Tutorial: Wie kann ich die MetaMask-Wallet an der BTCC-Börse binden und verwenden? BTCC-Tutorial: Wie kann ich die MetaMask-Wallet an der BTCC-Börse binden und verwenden? Apr 26, 2024 am 09:40 AM

MetaMask (auf Chinesisch auch Little Fox Wallet genannt) ist eine kostenlose und beliebte Verschlüsselungs-Wallet-Software. Derzeit unterstützt BTCC die Bindung an die MetaMask-Wallet. Nach der Bindung können Sie sich mit der MetaMask-Wallet schnell anmelden, Werte speichern, Münzen kaufen usw. und bei der erstmaligen Bindung einen Testbonus von 20 USDT erhalten. Im BTCCMetaMask-Wallet-Tutorial stellen wir detailliert vor, wie man MetaMask registriert und verwendet und wie man das Little Fox-Wallet in BTCC bindet und verwendet. Was ist die MetaMask-Wallet? Mit über 30 Millionen Nutzern ist MetaMask Little Fox Wallet heute eines der beliebtesten Kryptowährungs-Wallets. Die Nutzung ist kostenlos und kann als Erweiterung im Netzwerk installiert werden

Einfache Anleitung zur Pip Mirror-Quelle: Erlernen Sie ganz einfach die Verwendung Einfache Anleitung zur Pip Mirror-Quelle: Erlernen Sie ganz einfach die Verwendung Jan 16, 2024 am 10:18 AM

Einfacher Einstieg: So verwenden Sie pip Mirror Source Mit der weltweiten Beliebtheit von Python ist pip zu einem Standardtool für die Python-Paketverwaltung geworden. Ein häufiges Problem, mit dem viele Entwickler bei der Installation von Paketen mit pip konfrontiert sind, ist jedoch die Langsamkeit. Dies liegt daran, dass pip standardmäßig Pakete von offiziellen Python-Quellen oder anderen externen Quellen herunterlädt und diese Quellen sich möglicherweise auf Servern im Ausland befinden, was zu langsamen Download-Geschwindigkeiten führt. Um die Download-Geschwindigkeit zu verbessern, können wir die Pip-Spiegelquelle verwenden. Was ist eine Pip-Spiegelquelle? Um es einfach auszudrücken: einfach

See all articles