Table des matières
Analyse des idées
Implémentation du code
Résumé
Maison outils de développement VSCode Compréhension approfondie du principe de mise en œuvre de l'aperçu markdown dans vscode

Compréhension approfondie du principe de mise en œuvre de l'aperçu markdown dans vscode

Sep 01, 2021 pm 06:13 PM
vscode

L'aperçu markdown de

Compréhension approfondie du principe de mise en œuvre de l'aperçu markdown dans vscode

vscode est une fonctionnalité que nous utilisons toute la journée. Vous êtes-vous déjà demandé comment elle est implémentée ? Peut-être qu'un jour vous recevrez une demande d'aperçu de démarque personnalisé. Que devez-vous faire ? [Apprentissage recommandé : "Tutoriel vscode"]

En fait, l'idée générale est relativement simple, qui consiste à créer un panneau de vue Web, à définir le contenu sur le html généré par markdown, puis à modifier le html de la vue Web de manière synchrone lorsque la démarque est mise à jour.

Analyse des idées

Créez une vue Web via vscode.window.createWebviewPanel, spécifiez qu'elle doit être ouverte sur le côté, puis définissez le code HTML via l'attribut webview.html de l'objet panneau.

html est généré via le contenu markdown de l'éditeur. Le contenu de l'éditeur est obtenu via editor.document.getText(), puis une bibliothèque de conversion tierce en markdown vers html est appelée pour le générer.

Cela termine l'aperçu du démarque.

Après la prévisualisation, vous devez le mettre à jour. Écoutez les événements de vscode.workspace.onDidSaveTextDocument et vscode.workspace.onDidChangeTextDocument. Lorsque le document est mis à jour et enregistré, récupérez le contenu de l'éditeur, régénérez le code HTML, puis définissez. à la vue Web.

webviewPanel prend en charge webview.postMessage(message); pour transmettre des messages et prend en charge une série de commandes telles que updateHTML, qui peuvent être déclenchées par la transmission de messages.

Mais comment savoir quel document met à jour quelle vue Web ?

Vous pouvez conserver une carte et l'enregistrer dans la carte lors de la création du webviewPanel. La clé est le chemin du fichier, de sorte que lors de la mise à jour, la vue Web correspondante puisse être trouvée et mise à jour.

De cette façon, la mise à jour du contenu markdown est terminée.

En fait, l'idée générale est relativement simple. Écrivons le code ci-dessous

Implémentation du code

Jetons un œil au code du plug-in amélioré vscode-markdown-preview. pour prévisualiser le démarque. Le code est assez simple. Peut être utilisé pour l'apprentissage.

(Le code suivant est un code simplifié)

Tout d'abord, le plug-in doit spécifier les conditions de déclenchement, c'est-à-dire spécifier activationEvents dans package.json :

"activationEvents": [
    "onLanguage:markdown",
    "onCommand:markdown-preview-enhanced.openPreviewToTheSide"
],
Copier après la connexion

L'un est activé lors de la modification du contenu markdown, et l'autre est d'exécuter la commande le temps d'activer.

La logique d'activation spécifique est dans la méthode active :

export function activate(context: vscode.ExtensionContext) {

  const contentProvider = new MarkdownPreviewEnhancedView(context);

  context.subscriptions.push(
    vscode.commands.registerCommand(
      "markdown-preview-enhanced.openPreviewToTheSide",
      openPreviewToTheSide,
    ),
  );
  
  function openPreviewToTheSide(uri?: vscode.Uri) {
    let resource = uri;
    if (!(resource instanceof vscode.Uri)) {
      if (vscode.window.activeTextEditor) {
        resource = vscode.window.activeTextEditor.document.uri;
      }
    }
    contentProvider.initPreview(resource, vscode.window.activeTextEditor, {
      viewColumn: vscode.ViewColumn.Two,
      preserveFocus: true,
    });
  }
}
Copier après la connexion

Nous avons enregistré la commande, et l'exécution de la commande obtiendra l'URL de l'éditeur actuel, puis prévisualisera la démarque.

Toute la logique d'aperçu est définie de manière centralisée dans l'objet d'instance de MarkdownPreviewEnhancedView, et initPreivew est exécuté lorsque la commande est déclenchée.

public async initPreview(
    sourceUri: vscode.Uri,
    editor: vscode.TextEditor,
    viewOptions: { viewColumn: vscode.ViewColumn; preserveFocus?: boolean },
) {
    // 创建 webview
    let previewPanel: vscode.WebviewPanel = vscode.window.createWebviewPanel(
        "markdown-preview-enhanced",
        `Preview ${path.basename(sourceUri.fsPath)}`,
        viewOptions
    );

    // 监听 webview 的消息
    previewPanel.webview.onDidReceiveMessage((message) => {});

    // 记录 webview 到 map 中
    this.previewMaps[sourceUri.fsPath] = previewPanel;
    
    // 拿到编辑器的文本,生成 html
    const text = editor.document.getText();
    engine
      .generateHTMLTemplateForPreview({inputString: text})
      .then((html) => {
        // 设置 html 到 previewPanel
        previewPanel.webview.html = html;
      });
}
Copier après la connexion

Créez le webviewPanel dans initWebivew et enregistrez le webviewPanel sur la carte. La clé est le chemin du fichier du document. Obtenez le texte de l'éditeur pour générer du HTML et définissez-le sur webview.html, complétant ainsi l'aperçu markdown.

Une fois ce chemin terminé, nous avons implémenté l'aperçu des démarques.

Mais un simple aperçu ne suffit pas. Après la mise à jour du document, il doit être mis à jour automatiquement. Nous continuons à ajouter la surveillance des événements dans la méthode active :

  context.subscriptions.push(
    vscode.workspace.onDidSaveTextDocument((document) => {
      if (isMarkdownFile(document)) {
        contentProvider.updateMarkdown(document.uri, true);
      }
    }),
  );

  context.subscriptions.push(
    vscode.workspace.onDidChangeTextDocument((event) => {
      if (isMarkdownFile(event.document)) {
        contentProvider.update(event.document.uri);
      }
    }),
  );
Copier après la connexion

Lors de la surveillance de la modification et de l'enregistrement du texte, appelez la méthode de mise à jour pour mettre à jour. .

public updateMarkdown(sourceUri: Uri) {

    // 从 map 中根据文件路径取出对应的 webviewPanel
    const previewPanel = this.previewMaps[sourceUri.fsPath];
    
    // 生成最新的 html 传递给 webview
    const text = document.getText();
    engine
        .parseMD(text)
        .then(({ markdown, html }) => {
            previewPanel.webview.postMessage({
              command: "updateHTML",
              html
            });
        }

}
Copier après la connexion

Ici, nous transmettons le message de commande updateHTML au contenu html via webview.postMessage pour déclencher la mise à jour du contenu html.

De cette façon, nous avons obtenu un rafraîchissement synchrone des démarques.

Résumé

L'aperçu du markdown dans vscode est une fonction couramment utilisée mais pas difficile à mettre en œuvre. Nous avons examiné le code source du plug-in amélioré vscode-markdown-preview et clarifié le processus global :

    .
  • Grâce à vscode. window.createWebviewPanel crée un webviewPanel pour afficher le html
  • html. Obtenez le contenu du texte via editor.document.getText() et générez-le via un package tiers. Définissez-le sur webviewPanel
  • pour écouter l'espace de travail. .onDidSaveTextDocument et workspace.onDidChangeTextDocument pour obtenir le dernier contenu, puis générez du code HTML et mettez-le à jour vers webview en transmettant le message udpateHTML via webview.postMessage.
  • Il convient de noter qu'une carte doit être enregistrée pour enregistrer la relation correspondante entre uri.fsPath et webviewPanel, afin que le contenu du texte change et mette à jour l'aperçu Markdown correspondant est une exigence courante mais pas difficile, et c'est le cas. également plus adapté pour débuter. Concernant le développement de plug-ins vscode, j'espère que cet article pourra vous aider à clarifier vos idées.
Pour plus de connaissances sur la programmation, veuillez visiter :

Introduction à la programmation

 ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment afficher des documents Word dans vscode Comment afficher des documents Word dans vscode Comment afficher des documents Word dans vscode Comment afficher des documents Word dans vscode May 09, 2024 am 09:37 AM

Tout d'abord, ouvrez le logiciel vscode sur l'ordinateur, cliquez sur l'icône [Extension] à gauche, comme indiqué en ① sur la figure. Ensuite, entrez [officeviewer] dans la zone de recherche de l'interface d'extension, comme indiqué en ② sur la figure. . Ensuite, dans la recherche, sélectionnez [officeviewer] à installer dans les résultats, comme indiqué dans ③ sur la figure. Enfin, ouvrez le fichier, tel que docx, pdf, etc., comme indiqué ci-dessous.

Comment dessiner un organigramme avec vscode_Comment dessiner un organigramme avec le code visual_studio Comment dessiner un organigramme avec vscode_Comment dessiner un organigramme avec le code visual_studio Apr 23, 2024 pm 02:13 PM

Tout d'abord, ouvrez le code Visual Studio sur l'ordinateur, cliquez sur les quatre boutons carrés à gauche, puis saisissez draw.io dans la zone de recherche pour interroger le plug-in, cliquez sur Installer. Après l'installation, créez un nouveau fichier test.drawio, puis. sélectionnez le fichier test.drawio, entrez dans le mode d'édition sur la gauche. Il y a différents graphiques sur le côté. Vous pouvez dessiner l'organigramme en sélectionnant à volonté, cliquez sur Fichier → Intégrer → svg puis sélectionnez Copier le svg. Collez le code svg copié dans le code html. Ouvrez la page Web html et vous pourrez le voir. Cliquez sur l'image sur la page Web pour accéder à l'organigramme. Sur cette page, vous pouvez zoomer et dézoomer. organigramme. Ici, nous choisissons de cliquer sur le motif de crayon dans le coin inférieur droit pour accéder à la page Web.

Les Chinois de Caltech utilisent l'IA pour renverser les preuves mathématiques ! Accélérer 5 fois a choqué Tao Zhexuan, 80% des étapes mathématiques sont entièrement automatisées Les Chinois de Caltech utilisent l'IA pour renverser les preuves mathématiques ! Accélérer 5 fois a choqué Tao Zhexuan, 80% des étapes mathématiques sont entièrement automatisées Apr 23, 2024 pm 03:01 PM

LeanCopilot, cet outil mathématique formel vanté par de nombreux mathématiciens comme Terence Tao, a encore évolué ? Tout à l'heure, Anima Anandkumar, professeur à Caltech, a annoncé que l'équipe avait publié une version étendue de l'article LeanCopilot et mis à jour la base de code. Adresse de l'article image : https://arxiv.org/pdf/2404.12534.pdf Les dernières expériences montrent que cet outil Copilot peut automatiser plus de 80 % des étapes de preuve mathématique ! Ce record est 2,3 fois meilleur que le précédent record d’Esope. Et, comme auparavant, il est open source sous licence MIT. Sur la photo, il s'agit de Song Peiyang, un garçon chinois.

Comment ajouter des fichiers à l'espace de travail vscode Comment ajouter des fichiers à l'espace de travail vscode Comment ajouter des fichiers à l'espace de travail vscode Comment ajouter des fichiers à l'espace de travail vscode May 09, 2024 am 09:43 AM

1. Tout d'abord, ouvrez le logiciel vscode, cliquez sur l'icône de l'explorateur et recherchez la fenêtre de l'espace de travail 2. Ensuite, cliquez sur le menu Fichier dans le coin supérieur gauche et recherchez l'option Ajouter un dossier à l'espace de travail 3. Enfin, recherchez l'emplacement du dossier dans le disque local, cliquez sur le bouton Ajouter

Comment activer les mises à jour en arrière-plan dans vscode Comment activer les mises à jour en arrière-plan dans vscode Comment activer les mises à jour en arrière-plan dans vscode Comment activer les mises à jour en arrière-plan dans vscode May 09, 2024 am 09:52 AM

1. Tout d'abord, après avoir ouvert l'interface, cliquez sur le menu Fichier dans le coin supérieur gauche. 2. Ensuite, cliquez sur le bouton Paramètres dans la colonne des préférences. 3. Ensuite, dans la page des paramètres qui apparaît, recherchez la section de mise à jour. Enfin, cliquez sur la souris pour le vérifier et l'activer. Téléchargez et installez le nouveau bouton de version de VSCode en arrière-plan sous Windows et redémarrez le programme.

Comment désactiver le fichier de configuration wsl dans vscode Comment désactiver le fichier de configuration wsl dans vscode Comment désactiver le fichier de configuration wsl dans vscode Comment désactiver le fichier de configuration wsl dans vscode May 09, 2024 am 10:30 AM

1. Tout d'abord, ouvrez l'option des paramètres dans le menu des paramètres. 2. Ensuite, recherchez la colonne du terminal dans la page couramment utilisée. 3. Enfin, décochez le bouton usewslprofiles sur le côté droit de la colonne.

Comment définir l'insertion fluide de l'animation dans VScode Tutoriel VScode pour définir l'insertion fluide de l'animation Comment définir l'insertion fluide de l'animation dans VScode Tutoriel VScode pour définir l'insertion fluide de l'animation May 09, 2024 am 09:49 AM

1. Tout d'abord, après avoir ouvert l'interface, cliquez sur l'interface de l'espace de travail 2. Ensuite, dans le panneau d'édition ouvert, cliquez sur le menu Fichier 3. Ensuite, cliquez sur le bouton Paramètres sous la colonne Préférences 4. Enfin, cliquez sur la souris pour vérifier le CursorSmoothCaretAnimation bouton et enregistrez. Il suffit de le définir

Comment ouvrir les autorisations de confiance de l'espace de travail dans Vscode Méthode Vscode pour ouvrir les autorisations de confiance de l'espace de travail Comment ouvrir les autorisations de confiance de l'espace de travail dans Vscode Méthode Vscode pour ouvrir les autorisations de confiance de l'espace de travail May 09, 2024 am 10:34 AM

1. Tout d'abord, après avoir ouvert la fenêtre d'édition, cliquez sur l'icône de configuration dans le coin inférieur gauche 2. Ensuite, cliquez sur le bouton Gérer l'approbation de l'espace de travail dans le sous-menu qui s'ouvre 3. Ensuite, recherchez la page dans la fenêtre d'édition 4. Enfin, selon à votre bureau Vérifiez simplement les instructions pertinentes si nécessaire

See all articles