序文Web 上でオンライン コード コンパイルの効果を実現したい場合は、
環境の準備npm インストール jshint npm インストール jsonlint npm スクリプトローダーをインストールします npm で vue-codemirror をインストールします パッケージコンポーネントプロジェクトの <テンプレート> <コードミラー ref="myCm" v-model="エディター値" :options="cmオプション" @changes="onCmCodeChanges" @blur="onCmBlur" @keydown.native="onKeyDown" @mousedown.native="onMouseDown" @paste.native="貼り付け時" > </codemirror> </テンプレート> <スクリプト> 「vue-codemirror」から { codemirror } をインポートします。 'codemirror/keymap/sublime' をインポートします 「codemirror/mode/javascript/javascript.js」をインポートします。 「codemirror/mode/xml/xml.js」をインポートします。 「codemirror/mode/htmlmixed/htmlmixed.js」をインポートします。 「codemirror/mode/css/css.js」をインポートします。 「codemirror/mode/yaml/yaml.js」をインポートします。 「codemirror/mode/sql/sql.js」をインポートします。 「codemirror/mode/python/python.js」をインポートします。 「codemirror/mode/markdown/markdown.js」をインポートします。 「codemirror/addon/hint/show-hint.css」をインポートします。 「codemirror/addon/hint/show-hint.js」をインポートします。 「codemirror/addon/hint/javascript-hint.js」をインポートします。 「codemirror/addon/hint/xml-hint.js」をインポートします。 「codemirror/addon/hint/css-hint.js」をインポートします。 「codemirror/addon/hint/html-hint.js」をインポートします。 「codemirror/addon/hint/sql-hint.js」をインポートします。 「codemirror/addon/hint/anyword-hint.js」をインポートします。 「codemirror/addon/lint/lint.css」をインポートします。 「codemirror/addon/lint/lint.js」をインポートします。 「codemirror/addon/lint/json-lint」をインポートします。 'codemirror/addon/selection/active-line' をインポートします。 「codemirror/addon/hint/show-hint.js」をインポートします。 「codemirror/addon/hint/anyword-hint.js」をインポートします。 スクリプトローダーのjsonlintが必要です。 「codemirror/addon/lint/javascript-lint.js」をインポートします。 「codemirror/addon/fold/foldcode.js」をインポートします。 「codemirror/addon/fold/foldgutter.js」をインポートします。 「codemirror/addon/fold/foldgutter.css」をインポートします。 「codemirror/addon/fold/brace-fold.js」をインポートします。 「codemirror/addon/fold/xml-fold.js」をインポートします。 「codemirror/addon/fold/comment-fold.js」をインポートします。 「codemirror/addon/fold/markdown-fold.js」をインポートします。 「codemirror/addon/fold/indent-fold.js」をインポートします。 「codemirror/addon/edit/closebrackets.js」をインポートします。 「codemirror/addon/edit/closetag.js」をインポートします。 「codemirror/addon/edit/matchtags.js」をインポートします。 「codemirror/addon/edit/matchbrackets.js」をインポートします。 「codemirror/addon/selection/active-line.js」をインポートします。 「codemirror/addon/search/jump-to-line.js」をインポートします。 「codemirror/addon/dialog/dialog.js」をインポートします。 「codemirror/addon/dialog/dialog.css」をインポートします。 「codemirror/addon/search/searchcursor.js」をインポートします。 「codemirror/addon/search/search.js」をインポートします。 「codemirror/addon/display/autorefresh.js」をインポートします。 「codemirror/addon/selection/mark-selection.js」をインポートします。 「codemirror/addon/search/match-highlighter.js」をインポートします。 エクスポートデフォルト{ 名前: "インデックス", コンポーネント: {codemirror}, プロパティ: ["cmTheme", "cmMode", "cmIndentUnit", "autoFormatJson"], データ() { 戻る { エディター値: '{}', オプション: { : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 「CodeMirror-lint-markers」、 「CodeMirror-行番号」、 「CodeMirror-foldgutter」 ]、 ハイライト選択一致: { 最小文字数: 2, スタイル: "matchhighlight", 表示トークン: true }, }, enableAutoFormatJson: this.autoFormatJson == null ? true : this.autoFormatJson, // json 編集モードで、入力ボックスがフォーカスを失ったときに自動的にフォーマットするかどうか。有効にする場合は true、無効にする場合は false です} }, 作成された() { 試す { if (!this.editorValue) { this.cmOptions.lint = false; 戻る; } this.cmOptions.mode が "application/json" の場合 { AutoFormatJsonを有効にする場合 戻る; } this.editorValue = this.formatStrInJson(this.editorValue); } } キャッチ (e) { console.log("codemirror の初期化中にエラーが発生しました: " + e); } }, メソッド: { リセットリント() { (!this.$refs.myCm.codemirror.getValue())の場合{ this.$nextTick(() => { this.$refs.myCm.codemirror.setOption("lint", false); }); 戻る; } this.$refs.myCm.codemirror.setOption("lint", false); this.$nextTick(() => { this.$refs.myCm.codemirror.setOption("lint", true); }); }, //文字列をJSON形式の文字列としてフォーマットする formatStrInJson(strValue) { JSON.stringify() を返す JSON.parse(strValue)、 ヌル、 this.cmインデント単位 ); }, onCmCodeChanges(cm, 変更) { this.editorValue = cm.getValue(); この関数は、Lint をリセットします。 }, // フォーカスを失ったときの処理関数 onCmBlur(cm, event) { 試す { editorValue を cm.getValue() にします。 if (this.cmOptions.mode === "application/json" && editorValue) { AutoFormatJsonを有効にする場合 戻る; } エディター値 = this.formatStrInJson(エディター値); } } キャッチ (e) { // 何もしない} }, //キーボードイベント処理関数 onKeyDown(event) { const keyCode = event.keyCode || event.which || event.charCode; 定数キーの組み合わせ = イベント.ctrlキー || イベント.altキー || イベント.metaキー; if (!キーの組み合わせ && キーコード > 64 && キーコード < 123) { this.$refs.myCm.codemirror.showHint({ completeSingle: false }); } }, //マウスが押されたときのイベント処理関数 onMouseDown(event) { this.$refs.myCm.codemirror.closeHint(); }, // 貼り付けイベント処理関数 OnPaste(event) { this.cmOptions.mode が "application/json" の場合 { 試す { this.editorValue = this.formatStrInJson(this.editorValue); } キャッチ (e) { // 何もしない} } }, } } </スクリプト> <スタイルスコープ> </スタイル> このコンポーネントは、デフォルトでjsonコンパイラで構成されています。cmOptions 文字列を json 形式で入力したことがわかります。形式が正しくない場合でも、エラー メッセージが表示され、自動的にフォーマットされます。 Python コンパイラカプセル化するコンポーネントは、デフォルトでは JSON コンパイラです。他の言語を使用する場合も非常に簡単です。他の言語のモードをインポートするだけです。 <テンプレート> <div> <el-button type="primary" icon="el-icon-circle-check-outline" @click="handleConfirm" round> 保存をクリックします</el-button> <el-button icon="el-icon-caret-right" type="info" @click="handleRunCode" round> オンラインで実行</el-button> <コードエディタ :cmTheme="cmテーマ" :cmMode="cmMode" > </コードエディター> </div> </テンプレート> <スクリプト> '@/components/CodeEditor/index' から codeEditor をインポートします。 import 'codemirror/theme/monokai.css' // monokaiテーマをインポート import 'codemirror/mode/python/python.js' // pythonをインポート エクスポートデフォルト{ 名前: "インデックス", コンポーネント: コードエディター }, データ() { 戻る { cmテーマ:「モノカイ」 cmモード: "python", } }, メソッド: { ハンドル確認() {}, ハンドル実行コード() {} } } </スクリプト> <スタイル> .コードミラー { 位置: 相対的; 高さ:100vh; オーバーフロー: 非表示; 上マージン: 10px; } </スタイル> <style lang="scss" スコープ> </スタイル> 効果は以下のとおりです これで、vue codemirror のオンライン コード コンパイラの実装に関するこの記事は終了です。vue codemirror オンライン コード コンパイラに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Docker-compose インストール yml ファイルの設定方法
>>: MySQLは外部SQLスクリプトファイルのコマンドを実行します
1. yumソースを更新するCentOS7 のデフォルトの yum リポジトリの PostgreSQ...
効果: まず5つのVueインターフェースを作成する1.home.vueページ <テンプレート&...
目次1. 父から息子へ2. 息子から父へ3. ブラザーコンポーネント通信(バス) 4. ref/re...
今日は、ローカルの Docker プロジェクト イメージを dockerhub に公開する方法を紹介...
Linuxで環境変数を削除するには?unsetコマンドを使用してすぐに削除します1. Linuxクラ...
より使いやすい Web アプリケーションを設計するための 10 のヒントをご紹介します。ヒント1: ...
目次LAMPアーキテクチャ1.ランプの紹介2. WebサービスワークフローWebサーバーのリソースは...
ネットワークポートの公開実際、Docker にはネットワーク ポートの公開に関わる 2 つのパラメー...
目次背景1) yumのkeepchche機能を有効にする: 方法1 2) yum-utils ソフト...
1 背景最近、ZC706-ARM 開発ボードの Linux システムでコンパイル システム (apt...
CSS を使用する場合は、DOCTYPE (ドキュメント タイプ定義) を記述することを忘れないでく...
1. floatの基本的な使用例1. まず 2 つの div ボックスを作成し、高さ、幅、背景色を設...
ページ置換アルゴリズム: 本質は、限られたメモリをワイヤレス プロセスに対応できるようにすることです...
% ワイルドカードを使用すると、インデックス失敗の問題が発生することがよくあります。ここでは、lik...
問題の説明1. 収集ステーションのデータベース2. データが無い状態での移動は問題ありませんが、デー...