


Explication graphique détaillée de la fa?on d'intégrer l'éditeur de code Ace dans un projet Vue
Apr 24, 2023 am 10:52 AMAvant-propos
Dans le processus d'intégration d'Ace, j'ai constaté que les informations trouvées sur Internet sont relativement fragmentées et qu'il existe relativement peu de documents chinois. Cet article les enregistre et les organise principalement pour référence ultérieure
- Intégrer le. éditeur de code Ace dans le projet Vue
- Comparaison chinoise des éléments de configuration Ace
- Pièges?: résoudre le problème de désalignement du curseur de l'éditeur Ace
- Optimisation?: utiliser les builds ace à la demande
Introduction
Ace est un éditeur de code intégrable écrit en JavaScript. Il correspond aux fonctionnalités et aux performances des éditeurs natifs comme Sublime, Vim et TextMate. Il peut être facilement intégré à n’importe quelle page Web et application JavaScript. Ace est maintenu en tant qu'éditeur principal du Cloud9 IDE et est le successeur du projet Mozilla Skywriter (Bespin).
- Site officiel d'Ace
- Démo en ligne?: ace.c9.io/build/kitch…
Fonctionnalités
- Plus de 110 langues Surlignage de la syntaxe (peut importer TextMate/Sublime Text . tmlangage)
- Plus de 20 thèmes (peut importer TextMate/Sublime Text .tmtheme file)
- Indentation et mises à niveau automatiques
- Une ligne de commande facultative
- Gestion de documents volumineux (quatre millions de lignes, cela semble être la limite?!)
- Combinaisons de touches entièrement personnalisables, y compris les modes vim et Emacs
- Recherche et remplacement à l'aide d'expressions régulières
- Mettez en surbrillance les parenthèses correspondantes
- Basculez entre les onglets virtuels et réels
- Affichez les caractères cachés
- Faites glisser et déposez le texte avec la souris
- Retour à la ligne
- Pliage de code
- Curseurs et sélections multiples
- Vérificateur de syntaxe en direct (actuellement JavaScript/CoffeeScript/CSS/XQuery)
- Couper, copier et coller Fonction
Démarrage rapide
- Vous pouvez également utiliser vue2-ace-editor directement et suivez les étapes pour l'intégrer
- Ici, nous enregistrons principalement l'utilisation des ace-builds et emballons vous-même les composants Ace dans le projet
Installation
npm?install?ace-builds?--save-dev復(fù)制代碼
L'effet après l'installation est le suivant?:
Intégrer
Nouveau dossier AceEditor
Dans le fichier AceEditor, créer un nouveau index.vue, le code est le suivant :
<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: '', }, // 這里可以接收更多組件傳遞的參數(shù),做一些自定義效果 }, setup(props, vm) { let editor = null const editorform = ref(null) let options = { theme: 'ace/theme/tomorrow', // 主題 mode: 'ace/mode/mysql', // 代碼匹配模式 tabSize: 2, //標(biāo)簽大小 fontSize: 14, //設(shè)置字號(hào) wrap: true, // 用戶輸入的sql語(yǔ)句,自動(dòng)換行 enableSnippets: true, // 啟用代碼段 showLineNumbers: true, // 顯示行號(hào) enableLiveAutocompletion: true, // 啟用實(shí)時(shí)自動(dòng)完成功能 (比如:智能代碼提示) enableBasicAutocompletion: true, // 啟用基本自動(dòng)完成功能 scrollPastEnd: true, // 滾動(dòng)位置 highlightActiveLine: true, // 高亮當(dāng)前行 } const init = () => { if (editor) { //實(shí)例銷毀 editor.destroy() } //初始化 editor = ace.edit(editorform.value, options) editor.setValue(props.value ? props.value : '') // 設(shè)置內(nèi)容 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>
A propos de l'optimisation de webpack-resolver.js
Dans l'environnement webpack , webpack-resolver.js doit être importé. Jetons d'abord un coup d'?il au fichier node_modules/ace-builds/webpack-resolver.js. La plupart des modules qu'il contient ne sont pas utilisés par nous. augmentera considérablement le co?t. La taille du package du projet, nous devons donc optimiser ici : Introduire sur demandeDans le fichier AceEditor, créez un nouveau webpack-resolver.js, le code est le suivant :
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'))
Dans le répertoire src du projet, créez un nouveau registerAce.js
import ACE from '@/components/AceEditor' // 這里是你創(chuàng)建的AceEditor文件夾的路徑 export default { install(Vue) { Vue.component('ace', ACE) }, }
Introduisez le module Ace dans le fichier d'entrée main.js du projet Vue, et Vue.use() pour enregistrer globalement le composant ace
import ace from 'ace-builds' import RegistAce from './registAce' Vue.use(ace) Vue.use(RegistAce)
Utilisez l'as composant (composant global)
<ace v-model="content" @onChange="onChange"> </ace>
Ce qui précède complète l'intégration simple d'Ace dans le projet Vue Pour plus de fonctions, veuillez vous référer au site officiel : Site officiel d'Ace
éléments de configuration
Wiki du site officiel : github. .com/ajaxorg/ace…
Composants principaux d'Ace (éditeur
, session
, rendu
, mouseHandler
) implémentez l'interface optionProvidereditor
, session
, renderer
, mouseHandler
) implement optionProvider interface
setOption(optionName, optionValue) setOptions({ optionName : optionValue ... }) getOption(optionName) getOptions()
以下是配置選項(xiàng)的列表。除非另有說(shuō)明,否則選項(xiàng)值為布爾值。
editor.setOption
也會(huì)修改session/renderer/$mouseHandler
rrreee
editor.setOption
modifiera également les options associées à session/renderer/$mouseHandler
??options de l'éditeur
nom de l'option | type de valeur | valeur par défaut | valeur facultative | fonction |
---|---|---|---|---|
selectionStyle | String | texte | ligne | texte | Sélectionnez le style |
highlightActiveLine | Boolean | true | - | Surligner la ligne actuelle |
highlightSelectedWord | Boolean | true | - | Surligner le texte sélectionné |
readOnly | Boolean | false | - | Qu'il soit en lecture seule |
cursorStyle | String | ace | ace slim | | fauxtoujours |
behaviorsEnabled | Boolean | true | - | |
wrapBehaviorsEnabled | Boolean | true | - | |
autoScrollEditorIntoView | Boolean | false | - | |
copyWithEmptySelection | Boolean | true | - | |
useSoftTabs | Boolean | fal se | - | |
navigateWithinSoftTabs | Boolean | false | - | |
enableMultiselect | Boolean | false | - | |
options de rendu | Nom de l'option |
Valeur par défaut
hScrollBarAlwaysVisible | Boolean | false | ||
---|---|---|---|---|
vScrollBarAlways Visible | Boolean | false | - | |
Animation de défilement | showInvisibles | Boolean | false | |
Afficher les caractères invisibles | showPrintMargin | Boolean | true | |
Afficher les marges d'impression | printMarginColumn | Numéro | 80 | |
Marges de la page Paramètres | printMargin | Boolean | Number | false | |
Afficher et définir les marges | fadeFoldWidgets | Boolean | false | |
Fade FoldWidgets | showFoldWidgets | Boolean | true | |
Afficher les widgets pliés | showLineNumbers | Boolean | true | |
Afficher les numéros de ligne | showGutter | Boolean | true | |
Afficher la zone du numéro de ligne | displayIndentGuides | Boolean | true | |
Guides d'affichage | fontSize | Number | String | inherit | |
Définir la taille de la police | fontFamily | String | hériter | |
Définir la police | maxLines | Number | ||
- | au nombre de lignes | minLines | Number | |
- | Au moins nombre de lignes | scrollPastEnd | Boolean | Number0 | |
Position du défilement | fixedWidthGutter | Boolean | false | |
Zone de numéro de ligne fixe largeur | thème | String | - | |
Chemin de référence du thème, tel que "ace/theme/textmate" | mouseHandler options | |||
Type de valeur | Valeur par défaut | Valeur facultative | Remarques | |
scrollSpeed | Number | - | - | vitesse de défilement |
dragDelay
- | drag delay | dragEnabled | Boolean | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Indique si le glissement est activé | focusTimout | Number | - | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Focus Timeout | tooltipFollowsMouse | Boolean | false | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Conseils pour la souris | Options de session - |
overwrite | Boolean | - | - | |
---|---|---|---|---|
newLineMode | String | auto | auto | unix | Ouvrier | Booléen |
- | utiliser des objets d'assistance | utiliserSoftTabs | Boolean | |
- | utiliser des onglets souples | tabSize | Number | |
- | Taille de l'étiquette | wrap | Booléen | |
- | line wrap | foldStyle | String | |
markbegin | manuel | folding style | mode | Str ing | |
- | Correspondance des codes motif, tel que "ace/mode/text" | options d'édition définies par les extensions | ||
Nom de l'option | Type de valeur | Valeur par défaut | Valeur facultative | Remarques |
activer la complétion automatique de base | Boolean | - | - |
- | - | Activer la saisie semi-automatique en direct | enableSnippets | |
---|---|---|---|---|
- | Activer snippets | enableEmmet | Boolean | |
- | Activer Emmet | useElasticTabstops | Boolean | |
- | Utilisez des taquets de tabulation flexibles | Résolvez le problème de désalignement du curseur | Lors de la saisie de contenu dans l'éditeur, un problème de désalignement du curseur se produira. Cela semble normal au début. Plus vous saisissez de contenu, plus vous constaterez de désalignement du curseur. Après le dépannage, vous avez constaté que cela était d? à l'utilisation de | |
Police monospace | pour résoudre le problème??Remarque?: il y a un petit trou ici. Vous devez faire la distinction entre Mac lors de la définition de la police monospace. , Windows | Vous pouvez utiliser la police monospace sous Windows |
Vous pouvez utiliser la police Consolas sous Windows |
|
Ace site officiel | vue2-ace-editor |
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Vue.js convient aux projets de petite et moyenne taille et aux itérations rapides, tandis que React convient aux applications grandes et complexes. 1) Vue.js est facile à utiliser et convient aux situations où l'équipe est insuffisante ou l'échelle du projet est petite. 2) React a un écosystème plus riche et convient aux projets avec des performances élevées et des besoins fonctionnels complexes.

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

Vue.js n'est pas difficile à apprendre, en particulier pour les développeurs avec une fondation JavaScript. 1) Sa conception progressive et son système réactif simplifient le processus de développement. 2) Le développement basé sur les composants rend la gestion du code plus efficace. 3) Les exemples d'utilisation montrent une utilisation de base et avancée. 4) Les erreurs courantes peuvent être déboguées via Vuedevtools. 5) L'optimisation des performances et les meilleures pratiques, telles que l'utilisation des attributs V-IF / V et clés, peuvent améliorer l'efficacité de l'application.

Vue.js est principalement utilisé pour le développement frontal. 1) Il s'agit d'un cadre JavaScript léger et flexible axé sur la construction d'interfaces utilisateur et d'applications à une seule page. 2) Le c?ur de Vue.js est son système de données réactif, et la vue est automatiquement mise à jour lorsque les données changent. 3) Il prend en charge le développement des composants et l'interface utilisateur peut être divisée en composants indépendants et réutilisables.

Le r?le de Vue.js dans le développement Web est d'agir comme un cadre JavaScript progressif qui simplifie le processus de développement et améliore l'efficacité. 1) Il permet aux développeurs de se concentrer sur la logique métier grace à la liaison réactive des données et au développement des composants. 2) Le principe de travail de Vue.js s'appuie sur des systèmes réactifs et un Dom virtuel pour optimiser les performances. 3) Dans les projets réels, il est courant d'utiliser Vuex pour gérer l'état mondial et optimiser la réactivité des données.

Vue.js est étroitement intégré à la pile de technologies frontales pour améliorer l'efficacité du développement et l'expérience utilisateur. 1) Outils de construction: intégrer avec WebPack et Rollup pour réaliser un développement modulaire. 2) Gestion de l'état: intégrer à Vuex pour gérer l'état de l'application complexe. 3) Routage: intégrer à VUerouter pour réaliser le routage des applications à une seule page. 4) Prérocesseur CSS: prend en charge le SASS et moins pour améliorer l'efficacité de développement du style.

Vue.js et réagir ont chacun leurs propres avantages: Vue.js convient aux petites applications et à un développement rapide, tandis que React convient aux grandes applications et à la gestion complexe de l'état. 1.vue.js réalise la mise à jour automatique via un système réactif, adapté aux petites applications. 2.React utilise des algorithmes Virtual DOM et Diff, qui conviennent aux applications grandes et complexes. Lors de la sélection d'un cadre, vous devez considérer les exigences du projet et la pile de technologie d'équipe.
