vue-router 履歴モード サーバー側設定プロセス記録

vue-router 履歴モード サーバー側設定プロセス記録

歴史ルート

履歴モードとは、HTML5 の履歴 API を使用してクライアント側ルーティングを実装するモードを指します。その典型的な動作は、ハッシュ モードで URL パスの # を削除することです。 Vue-Router を使用すると、履歴モードを有効にするのは非常に簡単です。ルートをインスタンス化するときに、mode:'history' 構成項目を渡すだけです。ただし、サーバーのサポートがない場合、historyAPI に基づくルートは、URL アドレスバーから指定されたページに直接アクセスできません。これは、URL アドレスバーに入力して Enter キーを押すと GET リクエストを送信するのと同じになり、# のないルートパスは通常の API インターフェイスと同じになるため、理解しやすいです。サーバーはこのようなインターフェイスを定義していないため、直接アクセスすると 404 ページが表示されるのは正常です。

公式の例

公式ウェブサイトでは、このシナリオを処理するためのさまざまな方法が提供されています。例として、node.js バージョンを見てみましょう。

定数 http = require('http')
定数 fs = require('fs')
定数 httpPort = 80

http.createServer((req, res) => {
  fs.readFile('index.htm', 'utf-8', (err, content) => {
    もし(エラー){
      console.log('"index.htm" ファイルを開くことができません。')
    }

    res.writeHead(200, {
      'コンテンツタイプ': 'text/html; 文字セット=utf-8'
    })

    res.end(コンテンツ)
  })
}).listen(httpPort, () => {
  console.log('サーバーはhttp://localhost:%sでリッスンしています', httpPort)
})

その処理の考え方は、すべてのリクエストを強制的にホームページにリダイレクトすることであり、これはアクセス リソースが存在しない状況をサーバーがブロックし、ルーティング作業をクライアントに任せることと同等であることは容易に理解できます。このように、履歴モードが有効になっているフロントエンド ルーティングでは、サブページを直接検索してもエラーは報告されません。

vue-router 履歴モード設定

vue-router の履歴モードでは、ルーティング設定のモードを history に設定する必要があり、サーバー側でも対応する設定が必要です。

ハッシュモードと比較すると、履歴モードでは、ページの URL に含まれる # などの記号が少なくなります。

ハッシュ: www.example.com/#/login

履歴: www.example.com/login

シングルページ アプリケーションの履歴モードでは、ブラウザーはサーバーにこのページを要求しますが、サーバーにはこのページがないため、404 を返します。したがって、この時点でサーバーを構成する必要があります。静的リソースに加えて、シングルページ アプリケーションの index.html を返す必要があります。

サーバー構成 - nodejs

Node.js サーバーでは、履歴モードを処理するために connect-history-api-fallback モジュールを導入し、静的リソースを処理するためにミドルウェアを使用する前にこのモジュールを使用する必要があります。

定数パス = require('path')
// 履歴モードを処理するモジュールをインポートします。const history = require('connect-history-api-fallback')
定数 express = require('express')

const app = express()

// 履歴モードを処理するためのミドルウェアを登録します app.use(history())
// 静的リソースを処理するためのミドルウェア app.use(express.static(path.join(__dirname, './web')))

app.listen(3000, () => {
    console.log('ポート3000でサービスが開始されました')
})

サーバー構成 - nginx

まず、パッケージ化されたファイルを html フォルダーに配置し、次に conf フォルダー内の nginx.conf ファイルを開いて、次の構成を変更します。

http {
    # ...その他の設定
    サーバー{
        # ...その他の設定
        位置 / {
            ルートhtml;
            インデックス index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
    }
}

要約する

これで、vue-router 履歴モードのサーバー側設定に関するこの記事は終了です。vue-router 履歴モード設定に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue-router のハッシュモードと履歴モードの違い
  • vue-router のハッシュモードと履歴モードの違い
  • vue-Router のデフォルトのハッシュモードを履歴に変更するために必要な変更の詳細な説明
  • vue-router は、履歴モードでの開発と非ルートディレクトリのデプロイメントを可能にします。
  • Vue-router 履歴モードでの WeChat 共有の概要
  • vue-router の HTML5 履歴モード設定
  • vue プロジェクト 4rs vue-router の起動後に履歴モードで遭遇した落とし穴についての簡単な説明
  • vue-routerのハッシュモードと履歴モードを理解するための記事
  • Vue-routerのハッシュモードと履歴モードの違いの詳細な説明
  • vue-router のハッシュモードと履歴モードを区別する

<<:  MySQL 時間統計方法の概要

>>:  Mysql の主キーと一意キーの違いのまとめ

推薦する

js を使ってシンプルな虫眼鏡効果を実現

この記事の例では、参考までに簡単な虫眼鏡効果を実現するためのjsの具体的なコードを共有しています。具...

クエリプロファイラを使用して MySQL ステートメントの実行時間を表示する方法

前回の記事では、MySQL ステートメントの実行時間をチェックする 2 つの方法を紹介しました。今日...

MySQL マスタースレーブ同期の原理と応用

目次1. マスタースレーブ同期原理マスタースレーブ同期アーキテクチャ図(非同期同期)マスタースレーブ...

js配列forEachインスタンスの詳細な使用方法

1. forEach() は map() に似ています。これも渡された関数に各要素を順番に適用します...

arcgis.js は、マップ本体の表示範囲を制御し、領域を超えた場合に自動的にバウンスするようにします (実装のアイデア)

目次背景効果アイデア背景少し前に、会社のプロジェクトで問題が発生しました。地図のベースマップ領域の範...

DockerでRedisを使用するための詳細な手順

1. はじめにこの記事では、Docker を使用して Redis を探索する方法を説明します。 Do...

Alibaba Cloud Ubuntu 16.04でpptpdサービスを構築する方法

1. PPTP VPNを構築するには、ポート1723とGREプロトコルを開く必要があります。 1. ...

CSS と Bootstrap アイコンを使用して、上下にジャンプするインジケーター矢印のアニメーション効果を作成します。

ページが非常に長い場合は、下にさらにコンテンツがあることをユーザーに知らせるために矢印が必要になるこ...

Linux DMAインターフェースの知識ポイントの詳細な説明

1. 2種類のDMAマッピング1.1. 一貫性のあるDMAマッピング主に長期間使用されるエリアをマッ...

MySQL統計データテーブルの設計方法

目次リアルタイム更新は必要ですか?マテリアライズド ビュー ツール (Flexviews)カウントテ...

OpenSSL は双方向認証のチュートリアルを実装します (サーバーとクライアントのコード付き)

1. 背景1.1 問題点最近の製品テスト レポートでは、PKI ベースの認証方法の使用が推奨されて...

JavaScriptはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機を実装するためのJavaScriptの具体的なコードを紹介しま...

Linux (Centos7) での redis5 クラスターの構築と使用方法の詳細な説明

目次1. 簡単な説明2. クラスターを作成する手順2.1. ディレクトリを作成する2.2. ソースコ...

TomcatはNginxリバースプロキシのクライアントドメイン名を取得します

質問Nginx リバース プロキシの後、Tomcat アプリケーションは、クライアント ブラウザーの...