まえがき
Ace を統合する過程で、インターネット上にある情報が比較的断片的であり、中国語の資料が比較的少ないことに気づきました。後の参照を容易にするためにそれを記録し、整理します
- Ace コード エディターを Vue プロジェクトに統合する
- Ace 構成アイテムの中国語の比較
- 罠に足を踏み入れる: 解決するAce エディターのカーソルの位置ずれの問題
- 最適化: オンデマンドで ace-builds を使用する
はじめに
Ace は、JavaScript で書かれた埋め込み可能なコード エディターです。 Sublime、Vim、TextMate などのネイティブ エディターの機能とパフォーマンスに匹敵します。あらゆる Web ページや JavaScript アプリケーションに簡単に埋め込むことができます。 Ace は Cloud9 IDE の主要エディタとして維持されており、Mozilla Skywriter (Bespin) プロジェクトの後継です。
機能- 110 を超える言語の構文ハイライト(TextMate/Sublime Text .tm 言語ファイルをインポート可能) 20 を超える言語テーマ (TextMate/Sublime Text
- .tmtheme ファイルをインポート可能) 自動インデントとアップグレード
- オプションのコマンド ライン
- 処理巨大なドキュメント (400 万件)行数が限界のようです!)
- vim および Emacs モードを含む、完全にカスタマイズ可能なキーバインド
- 正規表現を使用した検索と置換
- 一致する括弧を強調表示
- ソフトタブとリアルタブを切り替える
- 隠し文字を表示する
- マウスを使用してテキストをドラッグアンドドロップする
- 行を折り返す
- コードの折りたたみ
- 複数のカーソルと選択機能
- ライブ構文チェッカー (現在は JavaScript/CoffeeScript/CSS/XQuery)
- カット、コピー、ペースト機能
インストール
- vue2-ace-editor を直接使用し、手順に従って統合することもできます
ここでは主に ace-builds の使用を記録し、プロジェクト内の Ace コンポーネント
npm install ace-builds --save-dev复制代码
インストール後の効果は次のとおりです:
##AceEditor ファイルで、新しい Index.vue を作成します。コードは次のとおりです。
<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>webpack-resolver.jsの最適化について
webpack環境ではwebpack-resolver.jsをインポートする必要がありますので、まずnode_modules/ace-builds/webpack-resolverを見てみましょう。 ..js ファイルに含まれるモジュールのほとんどは、私たちには使用されていません。直接インポートすると、プロジェクト パッケージのサイズが大幅に増加するため、ここで最適化を行う必要があります:
オンデマンドで導入AceEditor ファイルで、新しい webpack-resolver.js を作成します。コードは次のとおりです。
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'))

import ACE from '@/components/AceEditor' // 这里是你创建的AceEditor文件夹的路径 export default { install(Vue) { Vue.component('ace', ACE) }, }## を作成します。 #Vue プロジェクトのエントリ ファイル main.js に Ace モジュールを導入し、Vue.use() で ace コンポーネントをグローバルに登録します
import ace from 'ace-builds' import RegistAce from './registAce' Vue.use(ace) Vue.use(RegistAce)ace コンポーネント (グローバル コンポーネント) を使用します
<ace v-model="content" @onChange="onChange"> </ace>上記Ace の簡単な統合は Vue プロジェクトで完了します。その他の機能については、公式 Web サイトを参照してください:
Ace 公式 Web サイト
公式 Web サイト wiki:
github.com/ajaxorg/ace…editor、
session、
renderer,
mouseHandler) 実装 optionProvider インターフェイス
setOption(optionName, optionValue) setOptions({ optionName : optionValue ... }) getOption(optionName) getOptions()
以下は設定オプションのリストです。特に明記されていない限り、オプションの値はブール値です。
editor.setOption
は、session/renderer/$mouseHandlerそれに関連付けられたオプションも変更します
エディター オプション
オプション名 | 値の種類 | デフォルト値 | オプションの値 | 関数 |
---|---|---|---|---|
##String | #text##line | text | #選択されたスタイルhighlightActiveLine | Boolean | |
- | 現在の行を強調表示します | highlightSelectedWord | Boolean | |
- | 選択したテキストをハイライト表示 | #readOnly | Boolean | |
- | 読み取り専用かどうか | cursorStyle | String | |
ace |スリム |スムーズ |ワイド | カーソル スタイル | mergeUndoDeltas | String | Boolean | |
always | マージアンドゥ | behavioursEnabled | Boolean | |
- | 動作を有効にする | wrapBehavioursEnabled | Boolean | |
- | 行の折り返しを有効にする | autoScrollEditorIntoView | Boolean | |
- | スクロールを有効にする | copyWithEmptySelection | Boolean | |
- | スペースをコピー | useSoftTabs | Boolean | |
- | UseSoftTabs | navigateWithinSoftTabs | #ブール値 | |
- | ソフト タブ ジャンプ | enableMultiselect | ブール値 | #false|
複数の場所を選択 | ##レンダラー オプション | #オプション名 | 値の型 |
オプションの値
hScrollBarAlwaysVisible | Boolean | false | - | |
---|---|---|---|---|
vScrollBarAlwaysVisible | Boolean | false | - | 水平スクロール バーは常に表示されます |
highlightGutterLine | Boolean | true | - | 強調表示されたエッジ |
animatedScroll | Boolean | false | - | スクロールアニメーション |
showInvisibles | ブール値 | false | - | #非表示の文字を表示|
Boolean | true | - | 印刷マージンの表示 | |
Number | 80 | - | ページの設定margin | |
Boolean | Number | false | - | ページマージンの表示と設定 | |
Boolean | false | - | FadeFoldWidgets | |
Boolean | true | - | FoldWidgets の表示 | |
Boolean | true | - | 行番号を表示 | |
ブール値 | true | #-#表示行番号領域 | displayIndentGuides | Boolean |
- | 参照行を表示 | fontSize | Number | String | |
- | フォント サイズの設定 | fontFamily | String | |
フォントの設定 | #maxLines | Number | ||
- | 最大行数 |
minLines |
Number | |
- | 少なくとも行数 | #scrollPastEnd | Boolean | Number | 0 |
スクロール位置 | fixedWidthGutter | Boolean | false | |
固定行番号領域の幅 | theme | String | - | |
テーマ参照パス (「ace/theme/textmate」など) | ##mouseHandler オプション | オプション名 | ||
デフォルト値 | オプションの値 | 備考 |
スクロール速度 | dragDelay | Number | - | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
dragEnabled | Boolean | true | - | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
focusTimout | 番号 | - | - | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ツールチップフォローマウス | ブール値 | false | #-マウスチップ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
オプション名 | 値の種類 | デフォルト値 | オプションの値 | 備考 |
---|---|---|---|---|
firstLineNumber | Number | 1 | - | 開始行番号 |
上書き | ブール値 | - | - | やり直し |
newLineMode | String | auto | auto | unix | windows | 改行モード |
useWorker | Boolean | - | - | ヘルパー オブジェクトを使用する |
useSoftTabs | ブール値 | - | - | ソフト タグを使用する |
tabSize | Number | - | - | タグ サイズ |
ラップ | ブール値 | - | - | 改行 |
foldStyle | String | - | markbegin | markbeginend | Manual | スタイルを折りたたむ |
モード | 文字列 | - | - | コード一致パターン、 「ace/mode/text」など |
値のタイプ | デフォルト値 | オプションの値 | 備考 | |
---|---|---|---|---|
Boolean | - | - | 基本的なオートコンプリートを有効にする | |
Boolean | - | - | リアルタイムオートコンプリートを有効にする | |
ブール値 | - | - | スニペットを有効にする | |
ブール値 | - | - | Emmet を有効にする | |
Boolean | - | - | Flexible tab stop を使用する |
エディタでコンテンツを入力する際、カーソルがずれる問題が発生します。入力するほど、カーソルの位置がずれます。
トラブルシューティングの結果、非等幅フォント を使用しているため、計算が不正確であることが判明しました。編集ボックスのフォントを # に設定してください# #等幅フォントで問題を解決できます⚠️注: ここにはまだ小さな穴があります。等幅フォントを設定するときは、Mac と Windows を区別する必要があります
monospace
フォントを使用します- Windows では
Consolas
フォントを使用できます 参考 Web サイト/ソース コード
Ace 公式ウェブサイト
以上がAce コード エディターを Vue プロジェクトに統合する方法の詳細な図による説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Netflixは、Reactをフロントエンドフレームワークとして使用します。 1)Reactのコンポーネント開発モデルと強力なエコシステムが、Netflixがそれを選択した主な理由です。 2)コンポーネント化により、Netflixは複雑なインターフェイスをビデオプレーヤー、推奨リスト、ユーザーコメントなどの管理可能なチャンクに分割します。 3)Reactの仮想DOMおよびコンポーネントライフサイクルは、レンダリング効率とユーザーインタラクション管理を最適化します。

Netflixのフロントエンドテクノロジーでの選択は、主にパフォーマンスの最適化、スケーラビリティ、ユーザーエクスペリエンスの3つの側面に焦点を当てています。 1。パフォーマンスの最適化:Netflixは、Reactをメインフレームワークとして選択し、SpeedCurveやBoomerangなどのツールを開発して、ユーザーエクスペリエンスを監視および最適化しました。 2。スケーラビリティ:マイクロフロントエンドアーキテクチャを採用し、アプリケーションを独立したモジュールに分割し、開発効率とシステムのスケーラビリティを改善します。 3.ユーザーエクスペリエンス:Netflixは、Material-UIコンポーネントライブラリを使用して、A/Bテストとユーザーフィードバックを介してインターフェイスを継続的に最適化して、一貫性と美学を確保します。

netflixusesaCustomframeworkは、「ギボン」ビルトンリアクト、notreactorvuedirectly.1)チームエクスペリエンス:seice basedonfamperivity.2)projectomplerprojects:vueforsplerprojects、racefforcomplexones.3)customeforsneeds:reactofforsmorefloficailie.

Netflixは、主に、パフォーマンス、スケーラビリティ、開発効率、エコシステム、技術的な負債、およびフレームワーク選択におけるメンテナンスコストを考慮しています。 1。パフォーマンスとスケーラビリティ:JavaとSpringbootが選択され、大規模なデータと高い同時リクエストを効率的に処理します。 2。開発効率とエコシステム:Reactを使用して、フロントエンド開発効率を向上させ、その豊富なエコシステムを利用します。 3.技術的な負債とメンテナンスコスト:node.jsを選択してマイクロサービスを構築して、メンテナンスコストと技術的債務を削減します。

Netflixは、主にReactをフロントエンドフレームワークとして使用し、特定の機能のためにVUEによって補足されます。 1)Reactのコンポーネント化と仮想DOMは、Netflixアプリケーションのパフォーマンスと開発効率を向上させます。 2)VueはNetflixの内部ツールと小規模プロジェクトで使用されており、その柔軟性と使いやすさが重要です。

Vue.jsは、複雑なユーザーインターフェイスを構築するのに適した進歩的なJavaScriptフレームワークです。 1)そのコア概念には、レスポンシブデータ、コンポーネント、仮想DOMが含まれます。 2)実際のアプリケーションでは、TODOアプリケーションを構築し、Vuerouterを統合することで実証できます。 3)デバッグするときは、vuedevtools and Console.logを使用することをお勧めします。 4)パフォーマンスの最適化は、V-IF/V-Show、リストレンダリング最適化、コンポーネントの非同期負荷などを通じて達成できます。

Vue.JSは中小企業から中規模のプロジェクトに適していますが、Reactは大規模で複雑なアプリケーションにより適しています。 1。VUE.JSのレスポンシブシステムは、依存関係追跡を介してDOMを自動的に更新し、データの変更を簡単に管理できるようにします。 2.反応は一方向のデータフローを採用し、データは親コンポーネントから子コンポーネントに流れ、明確なデータフローと簡単な抽出構造を提供します。

VUE.JSは、中小規模のプロジェクトや迅速な反復に適していますが、Reactは大規模で複雑なアプリケーションに適しています。 1)Vue.jsは使いやすく、チームが不十分な状況やプロジェクトスケールが小さい状況に適しています。 2)Reactにはより豊富なエコシステムがあり、高性能で複雑な機能的ニーズを持つプロジェクトに適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール
