序文少し前に何人かの友人を訪ねたのですが、彼らは皆、フロントエンドに長い間取り組んできたので、フロントエンドの開発に多くの時間を費やす必要があると言っていました。柔軟性を犠牲にすることなく開発効率を最大限に高めるという原則に基づいて、著者は、ドラッグアンドドロップによる Vue ユーザーインターフェイスの生成機能をフレームワークに補足的に統合し、追加、削除、変更、クエリインターフェイスの迅速な生成を容易にし、大画面表示や簡単な Web ページ制作にも使用できるようにしました。 1. 技術原理1.1 レイアウト現在は、vue-grid-layout に基づくグリッドレイアウトのみが実装されています。デザインキャンバス上の各コンポーネントは対応する GridItem に動的にロードされ、対応するプロパティとイベントはコンポーネント構成に従ってバインドされます。 <!--src/components/Designers/View/VueVisualDesigner.vue--> <grid-layout ref="gridLayout" class="editorCanvas" :layout.sync="レイアウト" :col-num="レイアウトオプションのcolNum" :row-height="レイアウトオプションのrowHeight" :is-draggable="!preview" :is-resizable="!preview" @dragover.native="onDragOverGrid"> <grid-item class="widgetPanel" v-for="レイアウト内のアイテム" :x="item.x" :y="item.y" :w="item.w" :h="item.h" :i="item.i" :key="item.i" @resize="onItemResize(item)" @container-resized="onItemResize(item)"> <div v-if="!preview" class="widgetOverlay" @click="onSelectWidget(item)"></div> <!-- 動的ウィジェット --> <コンポーネント:ref="item.i":is="item.c":style="makeWidgetStyle(item)" v-model="runState[item.m]" v-bind="item.p" v-on="item.a"> {{item.t}} </コンポーネント> </グリッドアイテム> </グリッドレイアウト> 1.2 コンポーネント各コンポーネントの構成は、次の例に示すインターフェイスに抽象化されており、コンポーネントのプロパティと関連するレイアウト位置情報を記述するために使用されます。これは、デザイン時プロパティと実行時プロパティに分かれていることに注意してください。実行時プロパティは、プレビューと実行時にのみ動的に生成されます。 //src/runtime/IVueVisual.ts エクスポートインターフェースIVueLayoutItem{ /** コンポーネント名 例: Input */ n: 文字列; /** v-テキスト */ t?: 文字列; /** v モデル */ m?: 文字列; /** コンポーネントプロパティ 例: {size: 'mini'} */ p: オブジェクト; /** コンポーネントにバインドされたプロパティ、例: {data:':data'} */ b?: オブジェクト; /** デザインタイムイベント定義、例: {click: {IVueEventAction}} */ e?: オブジェクト; /** 実行時に生成されるイベント ハンドラー。v-on バインディングに使用されます (例: {click: function(){...}}) */ a?: オブジェクト; /** Vue コンポーネントは実行時に動的にロードされます*/ c?: 任意; } /** グリッドベースのレイアウト項目*/ エクスポートインターフェースIVueGridLayoutItemはIVueLayoutItemを拡張します{ i: 文字列; x: 数値; y: 数値; w: 数値; h: 数値; } 1.3 ステータスコンポーネントとレイアウトだけではインターフェース上にしか表示できず、ビジネスデータもバインドする必要があります。そのため、各ビューモデルには対応する状態設定(つまり、Vue のデータ)があり、状態名、タイプ、および対応する設定値の操作を記述します。ビューの状態は、実行時の設定に応じて、バックエンドからデータをロードするか、デフォルト値に設定します。 /** デザイン時のビューステート項目 */ エクスポートインターフェースIVueState{ 名前: 文字列; タイプ: 文字列; /**ステータス値を設定する操作。例: サービスを呼び出した後にステータス値を設定する*/ 値: IVueEventAction; } 1.4 イベントButton などの一部のコンポーネントは、対応するイベント処理にバインドできます。現在、イベント処理は主にデータの読み込み (LoadData) とデータの送信 (PostData) の 2 つのカテゴリに分かれており、バックエンドから現在の状態にデータを読み取り、現在の状態データをバックエンドに送信して処理することに対応しています。 エクスポート タイプ EventAction = 'LoadData' | 'PostData' | 'RunScript'; エクスポートインターフェースIVueEventAction { /** 操作タイプ、例: LoadData */ 読み取り専用タイプ: EventAction; } エクスポートインターフェースIVueLoadDataActionはIVueEventActionを拡張します{ /** 状態ターゲット 例: State = LoadService() */ 状態: 文字列; サービス: 文字列; //バックエンドサービス: 例: sys.OrderService.listAll ServiceArgs: any[]; //例: [{Name:'arg1', Type:'string', Value:'"rick"'}], Value は式です} 1.5 ツールボックスキャンバスにドラッグ アンド ドロップできるコンポーネントは、グローバル構成「VueWidgets」によって定義され、グローバルに登録されたコンポーネントとカスタム コンポーネントに分かれています。カスタム コンポーネントは、コード内または視覚的な形式でのビュー モデルにすることができます。 //カスタムウィジェット構成定義 { "Name": "Table", //コンポーネント名 "Component": "sys.ExTable", //カスタム ビュー モデルまたはグローバル コンポーネント名を指します (例: ElInput) "Icon": "fa fa-table", //ツールボックスアイコン "Width": 12, //デフォルトのグリッド幅 "Height": 6, //デフォルトのグリッド高さ "Props": [ //コンポーネントのプロパティ { "名前": "列", 「タイプ」:「配列」、 "デフォルト": []、 "Editor": "sys.ExTableColumnEditor" //カスタム属性エディターを指します}, { "名前": "行", 「タイプ」:「配列」、 "デフォルト": [] } ] } 2. 効果の実証新しいビュー モデルを作成する場合、タイプ選択は Vue Visual であり、元のコード メソッドは Vue Code であることに注意してください。 設計インターフェースの機能領域を下図に示します。 具体的な操作方法については短いビデオをご覧ください。 要約するドラッグ アンド ドロップで Vue ユーザー インターフェイスを生成する方法については、これで終わりです。ドラッグ アンド ドロップで Vue ユーザー インターフェイスを生成する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Docker+Jenkins+Gitlab+Djangoアプリケーションデプロイ実践の詳細な説明
>>: mysql binlog ログを正しくクリーンアップする 2 つの方法
ここ数年、ウェブサイト開発では DIV+CSS が非常に人気があり、当時は大きな騒動を引き起こしまし...
導入MySQL は、私たちが日常業務で使用する非常に一般的なデータベースです。MySQL は現在 O...
3. MySQLデータ管理最初の方法:お勧めできません。複雑そうです -- 学生テーブルの grad...
Count(*) または Count(1) または Count([column]) は、おそらく S...
Ubuntu をインストールしたばかりですが、開いたときにネットワーク接続がありませんでした。右上隅...
MySQL によって作成される最適化はインデックスを追加することですが、インデックスを追加しても目的...
目次1. ソースパッケージサービスの起動管理2. ソースパッケージサービスのセルフスタート管理3. ...
1. ドロップダウンリストの例コードは次のとおりです。 <!doctypehtml> ...
必要な環境をインストールする1. gccのインストールnginx をインストールするには、公式サイト...
間違った mysql コマンドを入力したのでキャンセルしたいです。どうすればいいですか? ctrl ...
目次1. 材料を準備する2. Linuxカーネルファイルをダウンロードする3. コンパイル4. TF...
目次1. タスクキュー2. 混乱を招く問題を説明する1. setTimeout(f1,0)とは何です...
1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...
仮想マシンを初めて使用する方や、仮想マシンに Linux をインストールしたばかりの方は、システムが...
エディターは、Vue3のデータの関連する問題も共有します。次のような例を見てみましょう。 Vue.c...