springboot vue をベースにしたテストプラットフォームの開発
1. フロントエンド Tree ツリー コントロールの append メソッド
elementUI ツリーの下に append
メソッドがありますコントロール。ツリー内のノードに子ノードを追加するために使用できます。
現時点でツリーリストのインターフェースは完成しており、入ってきたデータの内容をappendメソッドで出力できるようになります。
console.log('传入的node:' + JSON.stringify(data))
最上位のデフォルト ノード F12 をクリックしてコンソールを表示します。
次の内容が表示されます。
これをフォーマットすると、実際にはノード全体のツリー構造になります。どのノードをクリックしても、データ内容はそのノード配下のすべてのノードデータになります。
しかし、実際には、現在クリックされているノードのデータだけが必要なので、このノードの下の子については気にする必要はありませんが、データ量が大きくないことを考慮して、そのまま渡します。それ全体をバックエンドに転送します。
2. ノード新規インターフェースのバックエンド実装
実装したい機能は、どのノードの追加ボタンをクリックするか、つまりこのノードの子ノードを追加するというものです。例:
フロントエンドは現在のノードのデータを取得できるため、新しいインターフェイスを追加するというアイデアもあります:
フロントエンドから渡されたデータセット作成時刻と現在のノードの作成時刻を取得します。更新時刻セットは、新しく追加された子ノードの兄弟ノード内での位置順序である pos です。子ノードのレベルはset (現在のノードのレベル) 1set 子ノードの親ノード (現在の受信インターフェイスのノード) idset はノードの名前を追加します (= last insert
1)。 layer
対応するコントローラー メソッドを追加します:
@PostMapping("/add") public Result addNode(@RequestBody ApiModule node) { try { System.out.println(node); Long nodeId = apiModuleService.addNode(node); return Result.success(nodeId); } catch (Exception e) { return Result.fail(e.toString()); } }
2.servicelayer
addNode メソッドを実装します:
public Long addNode(ApiModule node) { node.setCreateTime(new Date()); node.setUpdateTime(new Date()); double pos = getNextLevelPos(node.getProjectId(), node.getLevel(), node.getId()); node.setPos(pos); node.setLevel(node.getLevel() + 1); node.setParentId(node.getId()); node.setName("ceshi111"); apiModuleDAO.insert(node); return node.getId(); }
これは、上記の考え方に従って実装されます。 SetName を一時的に固定値に置き換えますので、まず新しいインターフェースが正常に実装できるか確認してください。
ここでのPosの処理が少し面倒で、これは新しく追加したノードの位置の順番を表しているので、それを抽出して新たに実装するメソッドを追加しました getNextLevelPos
:
private double getNextLevelPos(Long projectId, int level, Long nodeId) { // 查询项目下,同parentId下,所有节点 QueryWrapper<ApiModule> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("projectId", projectId) .eq("level", level + 1) .eq("parentId", nodeId) .orderByDesc("pos"); List<ApiModule> apiModules = apiModuleDAO.selectList(queryWrapper); if (!CollectionUtil.isEmpty(apiModules)) { // 不为空,获取最新的同级结点 pos 再加 1,作为下一个 return apiModules.get(0).getPos() + 1; } else { // 否则就是当前父节点里的第一个子结点,pos 直接为 1 return 1; } }
クエリ項目の下には、parentId と同じ、すべてのノード データが含まれます。ここでのクエリ条件に注意してください。
.eq("level", level 1)、現在のレベル 1 は子ノードのレベルとして使用されます。eq("parentId"、nodeId)、現在のノードは親ノードとして使用されます
その結果、リストが空でなければ、最新の子ノードの位置に 1 を加えた値が次の子ノードの位置として返されます。
それ以外の場合、新しく追加されたノードは現在の親ノードの最初の子ノードとなり、pos 値として 1 が直接返されます。
3. フロントエンドとバックエンドの共同デバッグ
フロントエンドはインターフェイスを作成し、ページ上のインターフェイスを呼び出します。
インターフェイスを呼び出し、成功プロンプトを追加して、ツリー リストを更新します。
機能は正常で、該当ノード配下に固定名「ceshi111」の子ノードが追加され、ツリーが更新され最新のデータが表示されます。
4. ノード名の編集
以上で関数に大きな問題がないことが分かりましたので、あとは解決するだけです。ノード名の編集の問題。この問題を解決するためにダイアログ ボックスを使用することにしました。
[追加]ボタンをクリックしてダイアログ ボックスを開き、ノード名を入力して保存できます。このダイアログ ボックスはシーンの編集にも使用できます。
プロジェクト管理機能では、ダイアログボックスを一度使用したことがありますので、該当するコードを直接コピーして修正しました。
は return に相当します:
ダイアログ ボックスには、[キャンセル] と [保存] の 2 つのボタンがあります。保存ボタンをクリックすると、新規か変更かに応じて異なるメソッドが呼び出されます。
1. ダイアログ ボックスを開く
追加メソッドを変更し、新しいボタンをクリックしたときにダイアログ ボックスを開く必要があります。
新しいノードをデータで渡す必要があり、実際の新しい操作は handleNodeAdd
メソッドであるため、もう 1 つ重要な点があります。したがって、ダイアログボックスを開くときにデータを保存する必要があります。
したがって、新しいフィールド currentNode を作成して返します: {}:
append メソッドでデータを currentNode に割り当てます:
handleNodeAdd メソッドを呼び出してバックエンド インターフェイスを要求します。
以上がspringboot vueフロントエンドおよびバックエンドインターフェイステストツリーノード追加関数メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

新しいテクノロジーは、両方の脅威をもたらし、Javaのプラットフォームの独立性を高めます。 1)Dockerなどのクラウドコンピューティングとコンテナ化テクノロジーは、Javaのプラットフォームの独立性を強化しますが、さまざまなクラウド環境に適応するために最適化する必要があります。 2)WebAssemblyは、Graalvmを介してJavaコードをコンパイルし、プラットフォームの独立性を拡張しますが、パフォーマンスのために他の言語と競合する必要があります。

JVMの実装が異なると、プラットフォームの独立性が得られますが、パフォーマンスはわずかに異なります。 1。OracleHotspotとOpenJDKJVMは、プラットフォームの独立性で同様に機能しますが、OpenJDKは追加の構成が必要になる場合があります。 2。IBMJ9JVMは、特定のオペレーティングシステムで最適化を実行します。 3. Graalvmは複数の言語をサポートし、追加の構成が必要です。 4。AzulzingJVMには、特定のプラットフォーム調整が必要です。

プラットフォームの独立性により、開発コストが削減され、複数のオペレーティングシステムで同じコードセットを実行することで開発時間を短縮します。具体的には、次のように表示されます。1。開発時間を短縮すると、1セットのコードのみが必要です。 2。メンテナンスコストを削減し、テストプロセスを統合します。 3.展開プロセスを簡素化するための迅速な反復とチームコラボレーション。

java'splatformentedencefacilitatesecodereusebyAllowingbyTeCodeCodeCodeCodeTorunonAnyPlatformm.1)DevelopersConcodeCodeOnceOnceOnconconsentEntentEntEntEntEntEntentPlatforms.2)維持化されたアスカデドは、NoeedReadedoesではありません

Javaアプリケーションのプラットフォーム固有の問題を解決するには、次の手順を実行できます。1。Javaのシステムクラスを使用して、システムプロパティを表示して実行中の環境を理解します。 2。ファイルクラスまたはjava.nio.fileパッケージを使用して、ファイルパスを処理します。 3。オペレーティングシステムの条件に応じてローカルライブラリをロードします。 4. VisualVMまたはJProfilerを使用して、クロスプラットフォームのパフォーマンスを最適化します。 5.テスト環境が、Dockerコンテナ化を通じて生産環境と一致していることを確認してください。 6. githubactionsを使用して、複数のプラットフォームで自動テストを実行します。これらの方法は、Javaアプリケーションでプラットフォーム固有の問題を効果的に解決するのに役立ちます。

クラスローダーは、統一されたクラスファイル形式、動的読み込み、親代表団モデル、プラットフォーム非依存バイトコードを通じて、さまざまなプラットフォーム上のJavaプログラムの一貫性と互換性を保証し、プラットフォームの独立性を実現します。

Javaコンパイラによって生成されたコードはプラットフォームに依存しませんが、最終的に実行されるコードはプラットフォーム固有です。 1。Javaソースコードは、プラットフォームに依存しないバイトコードにコンパイルされます。 2。JVMは、特定のプラットフォームのバイトコードをマシンコードに変換し、クロスプラットフォーム操作を保証しますが、パフォーマンスは異なる場合があります。

マルチスレッドは、プログラムの応答性とリソースの利用を改善し、複雑な同時タスクを処理できるため、最新のプログラミングで重要です。 JVMは、スレッドマッピング、スケジューリングメカニズム、同期ロックメカニズムを介して、異なるオペレーティングシステム上のマルチスレッドの一貫性と効率を保証します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 中国語版
中国語版、とても使いやすい
