Vue ページ スタック マネージャーの詳細

Vue ページ スタック マネージャーの詳細

A vue page stack manager Vue vue-page-stack

この例では、一般的な前方、後方(アクティブ)および置換のシナリオを示しており、同じルートに複数のレイヤーが存在する可能性があることも示しています(必要な情報を入力してください)

現在のバージョンはビジネス全体を対象にテストされていませんが、同様のニーズをお持ちの方はぜひお試しください。

プレビュー

1. 需要分析

Vue はweb App 、公式アカウント、ネイティブHybrid開発で頻繁に使用されるため、ページジャンプやロールバックの問題が発生するのは当然です。

シナリオ例:

  • リストページから詳細ページに入り、戻る
  • ある操作ページAを次のページBで選択し、選択後にページAに戻る必要がある(ページAも何が選択されたかを知る必要がある)
  • 任意のページからログインページに入り、ログインまたは登録が成功したら元のページに戻り、戻り続けるとログインページに戻らないことを確認してください。
  • ブラウザのbackforwardサポート(WeChatやミニプログラムに非常に便利)
  • iosのデフォルトのアニメーションを模倣するなど、特定の特別なページに入るとき、出るときにアニメーションを追加します (入るとページが右から左にパンし、出るとページが左から右にパンします)

2. 試した方法

以下の方法を試しましたが、どれも期待通りには機能しませんでした。

2.1 キープアライブ

通常、 route情報とkeep-aliveを通じてページがキャッシュされるかどうかを制御するには、2 つのrouter-viewが使用されます。これには 2 つの問題があります。

  • keep-alive同じページを一度だけ保存するため、同じページの2つのバージョンが存在することはありません。
  • 2つのrouter-view間でtransitionやその他のアニメーションを使用する方法はありません

2.2 ネストされたルートを持つ CSS

私は、 cube-uiの例を見ていて、その例がページキャッシュの問題を解決しているように見えました。私は、その処理方法を借用( copy )してアップグレードし、 CSSとネストされたrouteを使用して基本的な要件を実現しました。

しかし、欠点もあります:

  • routeページ階層に従って厳密に記述する必要があります
  • 多くのページは複数の場所で使用する必要があり、それらのルートを設定する必要があります(たとえば、商品詳細ページには複数の場所の入り口があります)

3. 機能説明

  • vue-routerを拡張すると、元のナビゲーションロジックを変更する必要はありません。
  • pushまたはforwardと、ページが再レンダリングされ、新しくレンダリングされたページがStackに追加されます。
  • 「戻る」または「進む」(負の数)が押された場合、ページは再レンダリングされません。前のページはスタックから読み込まれ、フォームの内容、スクロール バーの位置など、前のコンテンツの状態が保持されます。
  • backまたは進む(負の数)場合、未使用のページはスタックから削除されます。
  • replace Stack内のページ情報が更新されます
  • 前のページに戻ると、 activitedフック関数がトリガーされます
  • ブラウザの戻るおよび進むイベントをサポート
  • /user/fooから/user/barへのナビゲーションなど、ルーティングパラメータの変更への対応をサポートし、コンポーネントインスタンスが再利用されます。
  • 前進と後退時に異なるアニメーションを追加したり、特別なページに特別なアニメーションを追加したりできます。

4. インストールと使用方法

インストール:

npm インストール vue-page-stack
# または
糸を追加 vue-page-stack

使用:

'vue' から Vue をインポートします
'vue-page-stack' から VuePageStack をインポートします。

// vue-router は必須です Vue.use(VuePageStack, { router }); 
// アプリ.vue
<テンプレート>
  <div id="アプリ">
    <vue-ページスタック>
      <ルータービュー></ルータービュー>
    </vue-ページスタック>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: 'アプリ'、
  データ() {
    戻る {
    };
  },
  コンポーネント: {},
  作成された() {},
  メソッド: {}
};
</スクリプト>

5. API

5.1 登録

登録時に、 VuePageStackの name とkeyNameを指定できますが、通常は必要ありません。

Vue.use(VuePageStack, { router, name: 'VuePageStack', keyName: 'stack-key' });

5.2 前進と後退

前進、後退、または特別なルートを進むときにアニメーションを追加したい場合は、 router-viewページでwatch $routeを使用し、 stack-key-dir (カスタムkeyNameもここで変更されます)パラメータを使用して、この時点での方向を決定します。例を参照してください。

6. 関連する指示

6.1 キー名

ルートにkeyNameパラメータが追加されるのはなぜですか? これは、ブラウザの戻るイベントと進むイベントをサポートするためです。この機能は、WeChat パブリック アカウントとミニ プログラムで非常に重要です。

6.2 原則

現在のページを取得するStackセクションはkeep-aliveセクションを参照します。

このプラグインは長い間私の頭の中にありました。長い間断続的に作業してきましたが、ついに完成しました。本当に嬉しいです。

現在のバージョンは、ビジネス全体でテストされていません。同じニーズをお持ちの場合は、ぜひお試しください。コメントや提案がある場合は、 Githubissueと PR を上げてください。サポートと貢献に感謝します。

このプラグインは vue-navigation と vue-nav の両方を参考にしています。私はそのインスピレーションにとても感謝しています。

Vue Page Stack Manager の詳細に関するこの記事はこれで終わりです。Vue Page Stack Manager に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • VueルーティングマネージャであるVue-routerの使い方の詳細な説明
  • Vue.jsルーティングマネージャVue Routerについての簡単な説明
  • Vue の Flux フレームワークの Vuex 状態マネージャー

<<:  Mysql 中国語ソートルールの説明

>>:  nginx ウェブサイト サービスのアンチホットリンクを設定する方法 (推奨)

推薦する

Postman 自動インターフェーステストの実践

目次背景説明GETリクエストの作成事前リクエストスクリプトで署名を作成するスクリプトは環境変数に書き...

純粋なCSSでデジタルプラスとマイナスボタンを実装するための最適なソリューション

序文:デジタル加算ボタンと減算ボタンの実装には、次のような多くのソリューションがこれまでに使用されて...

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール1. イメージリポジトリからイメージをダウン...

mysql の存在する例と存在しない例の詳細な説明

mysql の存在する例と存在しない例の詳細な説明テーブルA |列1 | 列1 | 列3 |テーブル...

Linux の vsftpd サービス構成の簡単な分析 (匿名、ユーザー、仮想ユーザー)

vsftpd の概要vsftpd は「very secure FTP daemon」の略称で、セキ...

opensslを使用して無料の証明書を生成する方法

1: openssl とは何ですか? その機能は何ですか?適用シナリオは何ですか? Baidu 百科...

pdf.js を使用して Vue で PDF ファイルをプレビューする方法

ページ上で PDF をプレビューすると、一部のファイルは印刷またはダウンロードできません。現時点では...

フロントエンドページのスライド検証を実装するための JavaScript + HTML (2)

この記事の例では、クールなフロントエンドページのスライド検証の具体的なコードを参考までに共有していま...

DockerはElasticsearch7.6クラスタをインストールし、パスワードを設定します

Elasticsearch 6.8 以降、無料ユーザーは X-Pack のセキュリティ機能を使用でき...

Centos7 で MySQL マスター スレーブ サーバーを構築する方法 (グラフィック チュートリアル)

この記事では主に CentOS 上で MySQL マスタースレーブサーバーを構築する方法を紹介します...

Linux で圧縮ファイルの内容を表示する 10 の方法 (要約)

一般的に、アーカイブされたファイルや圧縮されたファイルの内容を表示するには、まず解凍してから表示する...

CentOS 7.2 は uniapp プロジェクトを展開するための nginx Web サーバーを構築します

Pantherは新人としてスタートし、今もまだ新人ですが、人々から学び、学んだことを時々皆さんと共有...

IDEA が docker を統合して springboot プロジェクトを展開するプロセス全体

目次1. IDEAはdockerプラグインをダウンロードします2. クラウドサーバーDocker 2...

Vue の基本 MVVM、テンプレート構文、データバインディング

目次1. Vueの概要Vue公式サイトMVVM アーキテクチャ パターンVue の紹介2. Vueを...

MySql データベースのサブクエリと高度なアプリケーションの簡単な分析

MySql データベースのサブクエリ:サブクエリ: 選択クエリ ステートメント内に別の選択ステートメ...