


Detaillierte 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
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复制代码
<template>
<div
ref="editorform"
style="height: 250px"
>
</div>
</template>
<script>
import ace from 'ace-builds'
import './webpack-resolver' // 自定义webpack-resolver,按需引入
import 'ace-builds/src-noconflict/mode-json'
import 'ace-builds/src-noconflict/mode-mysql'
import 'ace-builds/src-noconflict/mode-text'
import 'ace-builds/src-noconflict/theme-tomorrow'
import 'ace-builds/src-min-noconflict/ext-language_tools'
import { onMounted, onBeforeUnmount, ref, watch } from '@vue/composition-api'
export default {
name: 'AceEditor',
emits: ['onChange'],
props: {
value: {
type: String,
default: '',
},
// 这里可以接收更多组件传递的参数,做一些自定义效果
},
setup(props, vm) {
let editor = null
const editorform = ref(null)
let options = {
theme: 'ace/theme/tomorrow', // 主题
mode: 'ace/mode/mysql', // 代码匹配模式
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 : '') // 设置内容
editor.on('change', () => {
vm.emit('onChange', editor.getValue())
})
}
onMounted(() => {
init()
})
onBeforeUnmount(() => {
editor.destroy()
editor.container.remove()
})
return {
editorform
}
},
}
</script>
<style>
@import '~ace-builds/css/ace.css';
</style>
Über die Optimierung von webpack-resolver.js
- Im Webpack Schauen wir uns zunächst die Datei „node_modules/ace-builds/webpack-resolver.js“ an, die von uns nicht direkt verwendet wird. Dies erhöht die Kosten erheblich, daher müssen wir hier eine Optimierung vornehmen: Bei Bedarf einführen
- Erstellen Sie in der AceEditor-Datei eine neue webpack-resolver.js. Der Code lautet wie folgt:
ace.config.setModuleUrl('ace/mode/mysql', require('file-loader?esModule=false!ace-builds/src-noconflict/mode-mysql.js')) ace.config.setModuleUrl('ace/mode/text', require('file-loader?esModule=false!ace-builds/src-noconflict/mode-text.js')) ace.config.setModuleUrl('ace/mode/json', require('file-loader?esModule=false!ace-builds/src-noconflict/mode-json.js')) ace.config.setModuleUrl('ace/theme/tomorrow', require('file-loader?esModule=false!ace-builds/src-noconflict/theme-tomorrow.js')) ace.config.setModuleUrl('ace/ext/language_tools', require('file-loader?esModule=false!ace-builds/src-noconflict/ext-language_tools.js'))Erstellen Sie im src-Verzeichnis des Projekts ein neues registerAce.js
import ACE from '@/components/AceEditor' // 这里是你创建的AceEditor文件夹的路径 export default { install(Vue) { Vue.component('ace', 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 'ace-builds' import RegistAce from './registAce' 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: Offizielle Ace-Website
Offizielles Website-Wiki: github.com/ajaxorg/ace…
Ass-Kernkomponenten (editor
, session
, renderer
, mouseHandler
) OptionProvider-Schnittstelle implementierensetOption(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 OptionenEditoroptionen
Optionsname
Werttyp
Standardwert
optionaler Wert
Funktion
highlightActiveLineselectionStyle
String
Text Zeile |. Stil auswählen
highlightSelectedWordBoolean
true
-
Aktuelle Zeile hervorheben
readOnlyBoolean
true
-
Ausgewählten Text hervorheben
Boolean
false - Ob es schreibgeschützt ist
cursorStyle String
ace ace | falsch immer verschmelzen Rückgängig machen
behaviorsEnabled Boolean true - Enable behaviours
wrapBehavioursEnabled Boolean true - Zeilenumbruch aktivieren
autoScrollEditorIntoView Boolean false -Scrollen aktivieren
copyWithEmptySelection Boolean true - Kopieren. Leerzeichen
useSoftTabs Boolean false -Soft Tabs verwenden
navigateWithinSoftTabs Boolean false - Soft Tag Jump
enableMultiselect Boolean false - Mehrere Orte auswählen
Standardwert
Renderer-Optionen
Optionsname Werttyp Optionaler Wert
Function
-Scrollgeschwindigkeit
Vertikale Bildlaufleiste ist immer sichtbar
hScrollBarAlwaysVisible Boolean false -
v ScrollBarAlways Visible Boolean false - Die horizontale Bildlaufleiste ist immer sichtbar.
Unsichtbare anzeigenhighlightGutterLine. Boolean - Scroll-Animation
showPrintMargin Boolean
false
-
Unsichtbare Zeichen anzeigen
printMarginColumn Boolean
true
-
Druckränder anzeigen
printMarginNummer
80
-
Seitenränder der Einstellungen
fadeFoldWidgetsBoolean |. Number
false
-
Ränder anzeigen und festlegen
FoldWidgets anzeigen Boolean
false
-
FoldWidgets ausblenden
showLineNumbersBoolean
true
-
Gefaltete Widgets anzeigen
showGutter Boolean
true
-
Zeilennummern anzeigen
displayIndentGuidesBoolean true
-
Zeile Zeilennummernbereich anzeigen
fontSizeBoolean
true
-
Hilfslinien anzeigen
fontFamilyNumber |. String
inherit
- Schriftgröße festlegen
String
inherit
Schriftart einstellen
maxLines
Number - - auf die Anzahl der Zeilen
minLines scrollPastEndNumber. - -
Mindestens Zeilenanzahl
fixedWidthGutterBoolean |. Number
0
-
Scrollposition
ThemaBoolean
false
-
Feste Zeilennummernbereichsbreite
String
- -
Theme-Referenzpfad, z. B. „ace/theme/textmate“
mouseHandler-Optionen Optionaler Wert
Optionsname
Werttyp
Standardwert
-
Bemerkungen
ScrollSpeed
Number
dragEnabledDragDelay
Number
-
-
Drag Delay
Boolean
true
-
Ob das Ziehen aktiviert ist.
Maus-Tipps
Sitzungsoptionen
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
WraptabSize
Number
-
Etikettengröße
Boolescher Wert ?? String- - Code-Übereinstimmung Muster, wie zum Beispiel „ace/mode/text“
Durch Erweiterungen definierte Editoroptionen
Optionsname Werttyp Standardwert Optionaler Wert
-Bemerkungen
BasicAutocompletion aktivieren Boolean -
Grundlegende Autovervollständigung aktivieren
LiveAutocompletion aktivieren Boolean - - Live-Autovervollständigung aktivieren. enableSnippets
Boolean - -Enable Snippets
Emmet aktivieren
Boolean - - Emmet aktivieren
ElasticTabstops verwenden
Boolean - - Verwenden Sie flexible Tabstopps
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 Non zurückzuführen ist -Monobreite-Schriftart, 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
Sie können die Schriftart monospace
unter Windows verwendenSie können die Schriftart Consolas
unter Windows verwenden
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!

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 '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 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 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 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.

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

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.

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.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

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
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung