suchen
HeimWeb-FrontendView.jsDetaillierte grafische Erklärung zur Integration des Ace-Code-Editors in ein Vue-Projekt


Vorwort

Bei der Integration von Ace habe ich festgestellt, dass die im Internet gefundenen Informationen relativ fragmentiert sind und es relativ wenige chinesische Materialien gibt, die hauptsächlich zum späteren Nachschlagen aufgezeichnet und organisiert werden

  • Integrieren Sie die Ace-Code-Editor im Vue-Projekt
  • Chinesischer Vergleich von Ace-Konfigurationselementen
  • Fallstricke: Lösen des Problems der Cursor-Fehlausrichtung des Ace-Editors
  • Optimierung: Ace-Builds bei Bedarf verwenden

Einführung

Ace ist ein geschriebener einbettbarer Code-Editor in JavaScript. Es entspricht der Funktionalität und Leistung nativer Editoren wie Sublime, Vim und TextMate. Es kann problemlos in jede Webseite und JavaScript-Anwendung eingebettet werden. Ace wird als Haupteditor für die Cloud9 IDE gepflegt und ist der Nachfolger des Mozilla Skywriter (Bespin)-Projekts. Offizielle Website von Ace tmSprachdatei)

  • Über 20 Themen (kann TextMate/Sublime Text .tmtheme-Datei importieren)
  • Automatische Einrückung und Aktualisierungen Eine optionale Befehlszeile
Verwaltung großer Dokumente (vier Millionen Zeilen scheinen die Grenze zu sein!)

Vollständig anpassbare Tastenkombinationen, einschließlich VIM- und Emacs-Modi.
  • Suchen und Ersetzen mit regulären Ausdrücken. Übereinstimmende Klammern hervorheben Codefaltung
  • Mehrere Cursor und Auswahlmöglichkeiten
  • Live-Syntaxprüfung (derzeit JavaScript/CoffeeScript/CSS/XQuery)
  • Funktion zum Ausschneiden, Kopieren und Einfügen
  • Schnellstart
  • Sie können auch
  • vue2-ace- verwenden Editor
  • direkt und befolgen Sie die Schritte zur Integration
  • Hier erfassen wir hauptsächlich die Verwendung von Ace-Builds und verpacken die Ace-Komponenten selbst im Projekt
  • Installation
npm install ace-builds --save-dev复制代码
  • Der Effekt nach der Installation ist wie folgt:
  • Integrieren
  • Neuer Ordner AceEditor
  • Erstellen Sie in der AceEditor-Datei eine neue index.vue. Der Code lautet wie folgt:

    <template>
      <div
        ref="editorform"
       
        style="height: 250px"
      >
      </div>
    </template>
    
    <script>
    import ace from &#39;ace-builds&#39;
    import &#39;./webpack-resolver&#39; // 自定义webpack-resolver,按需引入
    import &#39;ace-builds/src-noconflict/mode-json&#39;
    import &#39;ace-builds/src-noconflict/mode-mysql&#39;
    import &#39;ace-builds/src-noconflict/mode-text&#39;
    import &#39;ace-builds/src-noconflict/theme-tomorrow&#39;
    import &#39;ace-builds/src-min-noconflict/ext-language_tools&#39;
    import { onMounted, onBeforeUnmount, ref, watch } from &#39;@vue/composition-api&#39;
    
    export default {
      name: &#39;AceEditor&#39;,
      emits: [&#39;onChange&#39;],
      props: {
        value: {
          type: String,
          default: &#39;&#39;,
        },
        // 这里可以接收更多组件传递的参数,做一些自定义效果
      },
      setup(props, vm) {
        let editor = null
        const editorform = ref(null)
        let options = {
          theme: &#39;ace/theme/tomorrow&#39;, // 主题
          mode: &#39;ace/mode/mysql&#39;, // 代码匹配模式
          tabSize: 2, //标签大小
          fontSize: 14, //设置字号
          wrap: true, // 用户输入的sql语句,自动换行
          enableSnippets: true, // 启用代码段
          showLineNumbers: true, // 显示行号
          enableLiveAutocompletion: true, // 启用实时自动完成功能 (比如:智能代码提示)
          enableBasicAutocompletion: true, // 启用基本自动完成功能
          scrollPastEnd: true, // 滚动位置
          highlightActiveLine: true, // 高亮当前行
        }
    
        const init = () => {
          if (editor) {
            //实例销毁
            editor.destroy()
          }
          //初始化
          editor = ace.edit(editorform.value, options)
          editor.setValue(props.value ? props.value : &#39;&#39;) // 设置内容
          editor.on(&#39;change&#39;, () => {
            vm.emit(&#39;onChange&#39;, editor.getValue())
          })
        }
        
        onMounted(() => {
          init()
        })
        
        onBeforeUnmount(() => {
          editor.destroy()
          editor.container.remove()
        })
        return {
          editorform
        }
      },
    }
    </script>
    
    <style>
    @import &#39;~ace-builds/css/ace.css&#39;;
    </style>

    Über die Optimierung von webpack-resolver.js Erstellen Sie im src-Verzeichnis des Projekts ein neues registerAce.js
    import ACE from &#39;@/components/AceEditor&#39; // 这里是你创建的AceEditor文件夹的路径
     
    export default {
      install(Vue) {
        Vue.component(&#39;ace&#39;, ACE)
      },
    }

    Fügen Sie das Ace-Modul in die Eintragsdatei main.js des Vue-Projekts ein und Vue.use(), um die Ace-Komponente global zu registrieren

    import ace from &#39;ace-builds&#39;
    import RegistAce from &#39;./registAce&#39;
    
    Vue.use(ace)
    Vue.use(RegistAce)

    Verwenden Sie Ace-Komponente (globale Komponente)

    <ace v-model="content" @onChange="onChange"> </ace>

    Das Obige vervollständigt die einfache Integration von Ace in das Vue-Projekt. Weitere Funktionen finden Sie auf der offiziellen Website: Detaillierte grafische Erklärung zur Integration des Ace-Code-Editors in ein Vue-ProjektOffizielle Ace-Website

    Konfigurationselemente

    Offizielles Website-Wiki: Detaillierte grafische Erklärung zur Integration des Ace-Code-Editors in ein Vue-Projekt github.com/ajaxorg/ace…

    Ass-Kernkomponenten (editor, session, renderer, mouseHandler) OptionProvider-Schnittstelle implementieren

    setOption(optionName, optionValue)
    setOptions({
        optionName : optionValue
        ...
    })
    getOption(optionName)
    getOptions()
    Das Folgende ist eine Liste der Konfigurationsoptionen. Sofern nicht anders angegeben, sind Optionswerte boolesche Werte.

    editor.setOption ändert auch die mit session/renderer/$mouseHandler verknüpften Optionen

    Editoroptionen
    highlightActiveLinehighlightSelectedWordreadOnlycursorStyleStringaceace | falschimmerverschmelzen Rückgängig machen behaviorsEnabledBooleantrue-Enable behaviourswrapBehavioursEnabledBooleantrue-Zeilenumbruch aktivierenautoScrollEditorIntoViewBooleanfalse -Scrollen aktivierencopyWithEmptySelectionBooleantrue -Kopieren. LeerzeichenuseSoftTabsBoolean false-Soft Tabs verwendennavigateWithinSoftTabs Boolean false-Soft Tag JumpenableMultiselectBooleanfalse-Mehrere Orte auswählenOptionsnameWerttypStandardwert
    Optionsname Werttyp Standardwert optionaler Wert Funktion
    selectionStyle String Text Zeile |. Stil auswählen
    Boolean true - Aktuelle Zeile hervorheben
    Boolean true - Ausgewählten Text hervorheben
    Boolean false - Ob es schreibgeschützt ist
    Renderer-Optionen
    Optionaler Wert
    FunctionhScrollBarAlwaysVisibleBooleanfalse-Vertikale Bildlaufleiste ist immer sichtbarv ScrollBarAlways VisibleBooleanfalse- Die horizontale Bildlaufleiste ist immer sichtbar. highlightGutterLine.Boolean Unsichtbare anzeigenshowPrintMarginprintMarginColumn printMarginfadeFoldWidgetsFoldWidgets anzeigen showLineNumbersshowGutter displayIndentGuidesfontSizefontFamilySchriftart einstellenmaxLinesNumber-- auf die Anzahl der ZeilenminLinesNumber. - -scrollPastEndfixedWidthGutterThemamouseHandler-OptionenOptionaler Wert-
    - Scroll-Animation
    Boolean false - Unsichtbare Zeichen anzeigen
    Boolean true - Druckränder anzeigen
    Nummer 80 - Seitenränder der Einstellungen
    Boolean |. Number false - Ränder anzeigen und festlegen
    Boolean false - FoldWidgets ausblenden
    Boolean true - Gefaltete Widgets anzeigen
    Boolean true - Zeilennummern anzeigen
    Boolean true - Zeile Zeilennummernbereich anzeigen
    Boolean true - Hilfslinien anzeigen
    Number |. String inherit - Schriftgröße festlegen
    String inherit

    Mindestens Zeilenanzahl
    Boolean |. Number 0 - Scrollposition
    Boolean false - Feste Zeilennummernbereichsbreite
    String - - Theme-Referenzpfad, z. B. „ace/theme/textmate“
    Optionsname Werttyp Standardwert
    Bemerkungen ScrollSpeed Number
    -
    Scrollgeschwindigkeit dragEnabled
    DragDelay Number - - Drag Delay
    Boolean true - Ob das Ziehen aktiviert ist. Maus-Tipps
    Sitzungsoptionen
    WrapString--Code-Übereinstimmung Muster, wie zum Beispiel „ace/mode/text“OptionsnameWerttypStandardwertOptionaler WertBemerkungenBasicAutocompletion aktivieren Boolean-
    Optionsname Werttyp Standardwert Optionaler Wert Bemerkungen
    firstLineNumber Number 1 - Startzeilennummer
    overwrite Boolean - - overwrite
    newLineMode String auto auto |. Windows Neuer Zeilenmodus
    useWorker Boolean - - Hilfsobjekte verwenden
    SoftTabs verwenden Boolean - - Soft-Tabs verwenden
    tabSize Number - Etikettengröße
    Boolescher Wert ??
    Durch Erweiterungen definierte Editoroptionen
    -
    Grundlegende Autovervollständigung aktivierenLiveAutocompletion aktivierenBoolean--Live-Autovervollständigung aktivieren. enableSnippetsBoolean--Enable SnippetsEmmet aktivierenBoolean--Emmet aktivierenElasticTabstops verwendenBoolean-- Verwenden Sie flexible TabstoppsNon zurückzuführen ist -Monobreite-SchriftartSie können die Schriftart monospace unter Windows verwendenSie können die Schriftart Consolas unter Windows verwenden
    Lösen Sie das Problem der Cursor-Fehlausrichtung Beim Eingeben von Inhalten im Editor tritt zunächst das Problem der Cursorfehlausrichtung auf. Je mehr Inhalte Sie eingeben, desto mehr werden Sie feststellen, dass die Cursorfehlausrichtung auf die Verwendung von , was zu ungenauen Berechnungen führt. Stellen Sie die Schriftart im Bearbeitungsfeld auf „Monospace-Schriftart“ ein, um das Problem zu lösen. Hinweis: Beim Festlegen der Monospace-Schriftart müssen Sie zwischen Mac unterscheiden. , Windows
    Referenzwebsite/Quellcode Ace offizielle Website vue2-ace-editor

  • Das obige ist der detaillierte Inhalt vonDetaillierte grafische Erklärung zur Integration des Ace-Code-Editors in ein Vue-Projekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme
    Dieser Artikel ist reproduziert unter:juejin. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
    VUE.JS -Funktion: Verbesserung der Benutzererfahrung am FrontendVUE.JS -Funktion: Verbesserung der Benutzererfahrung am FrontendApr 19, 2025 am 12:13 AM

    Vue.js verbessert die Benutzererfahrung durch mehrere Funktionen: 1. Responsives System realisiert Echtzeitdaten-Feedback; 2. Die Komponentenentwicklung verbessert die Wiederverwendbarkeit des Codes; 3.. Vuerouter bietet eine reibungslose Navigation; 4. Dynamische Datenbindung und Übergangsanimation verbessern den Interaktionseffekt; 5. Fehlerverarbeitungsmechanismus sorgt für das Feedback der Benutzer. 6. Leistungsoptimierung und Best Practices verbessern die Anwendungsleistung.

    VUE.JS: Definieren seiner Rolle in der WebentwicklungVUE.JS: Definieren seiner Rolle in der WebentwicklungApr 18, 2025 am 12:07 AM

    Vue.js 'Rolle in der Webentwicklung besteht darin, als progressives JavaScript -Framework zu fungieren, das den Entwicklungsprozess vereinfacht und die Effizienz verbessert. 1) Es ermöglicht Entwicklern, sich auf Geschäftslogik durch reaktionsschnelle Datenbindung und Komponentenentwicklung zu konzentrieren. 2) Das Arbeitsprinzip von Vue.js beruht auf reaktionsschnellen Systemen und virtuellem DOM, um die Leistung zu optimieren. 3) In den tatsächlichen Projekten ist es üblich, Vuex zu verwenden, um den globalen Zustand zu verwalten und die Datenreaktionsfähigkeit zu optimieren.

    Vue.js verstehen: vor allem ein Frontend -FrameworkVue.js verstehen: vor allem ein Frontend -FrameworkApr 17, 2025 am 12:20 AM

    Vue.js ist ein progressives JavaScript -Framework, das von Ihnen Yuxi im Jahr 2014 veröffentlicht wurde, um eine Benutzeroberfläche zu erstellen. Zu den Kernvorteilen gehören: 1. Responsive Datenbindung, automatische Aktualisierungsansicht von Datenänderungen; 2. Komponentenentwicklung kann die Benutzeroberfläche in unabhängige und wiederverwendbare Komponenten aufgeteilt werden.

    Netflix -Frontend: Beispiele und Anwendungen von React (oder Vue)Netflix -Frontend: Beispiele und Anwendungen von React (oder Vue)Apr 16, 2025 am 12:08 AM

    Netflix verwendet React als Front-End-Framework. 1) Reacts komponentiertes Entwicklungsmodell und ein starkes Ökosystem sind die Hauptgründe, warum Netflix es ausgewählt hat. 2) Durch die Komponentierung spaltet Netflix komplexe Schnittstellen in überschaubare Teile wie Videotiere, Empfehlungslisten und Benutzerkommentare auf. 3) Die virtuelle DOM- und Komponentenlebenszyklus von React optimiert die Rendering -Effizienz und die Verwaltung des Benutzerinteraktion.

    Die Frontend -Landschaft: Wie Netflix ihre Auswahl annähteDie Frontend -Landschaft: Wie Netflix ihre Auswahl annähteApr 15, 2025 am 12:13 AM

    Die Auswahl von Netflix in der Front-End-Technologie konzentriert sich hauptsächlich auf drei Aspekte: Leistungsoptimierung, Skalierbarkeit und Benutzererfahrung. 1. Leistungsoptimierung: Netflix wählte React als Hauptgerüst und entwickelte Tools wie SpeedCurve und Boomerang, um die Benutzererfahrung zu überwachen und zu optimieren. 2. Skalierbarkeit: Sie übernehmen eine Mikro-Front-End-Architektur, die Anwendungen in unabhängige Module aufteilt und die Entwicklungseffizienz und die Systemskalierbarkeit verbessern. 3. Benutzererfahrung: Netflix verwendet die Material-UI-Komponentenbibliothek, um die Schnittstelle kontinuierlich durch A/B-Tests und Benutzer-Feedback zu optimieren, um Konsistenz und Ästhetik sicherzustellen.

    React vs. Vue: Welches Framework verwendet Netflix?React vs. Vue: Welches Framework verwendet Netflix?Apr 14, 2025 am 12:19 AM

    NetflixuSesacustomframeworkcalted "Gibbon" Builtonreact, NotreactorVuedirect.1) TeamExperience: Wählen Sie beobädtes Vertrauen

    Die Wahl der Frameworks: Was treibt die Entscheidungen von Netflix vor?Die Wahl der Frameworks: Was treibt die Entscheidungen von Netflix vor?Apr 13, 2025 am 12:05 AM

    Netflix berücksichtigt hauptsächlich Leistung, Skalierbarkeit, Entwicklungseffizienz, Ökosystem, technische Schulden und Wartungskosten bei der Rahmenauswahl. 1. Leistung und Skalierbarkeit: Java und Springboot werden ausgewählt, um massive Daten und hohe gleichzeitige Anforderungen effizient zu verarbeiten. 2. Entwicklungseffizienz und Ökosystem: Verwenden Sie React, um die Effizienz der Front-End-Entwicklung zu verbessern und sein reiches Ökosystem zu nutzen. 3. Technische Schulden- und Wartungskosten: Wählen Sie Node.js, um Microservices zu erstellen, um Wartungskosten und technische Schulden zu senken.

    Reagieren, Vue und die Zukunft von Netflix 'FrontendReagieren, Vue und die Zukunft von Netflix 'FrontendApr 12, 2025 am 12:12 AM

    Netflix verwendet React hauptsächlich als Front-End-Framework, das durch VUE für bestimmte Funktionen ergänzt wird. 1) Die Komponentierung von React und das virtuelle DOM verbessern die Leistung und Entwicklungseffizienz von Netflix -Anwendungen. 2) VUE wird in den internen Tools und kleinen Projekten von Netflix verwendet, und seine Flexibilität und Benutzerfreundlichkeit sind entscheidend.

    See all articles

    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

    SecLists

    SecLists

    SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

    PHPStorm Mac-Version

    PHPStorm Mac-Version

    Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

    Herunterladen der Mac-Version des Atom-Editors

    Herunterladen der Mac-Version des Atom-Editors

    Der beliebteste Open-Source-Editor

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    Leistungsstarke integrierte PHP-Entwicklungsumgebung