ホームページ ウェブフロントエンド jsチュートリアル クロスドメインルーティングの競合を解決する Vue について

クロスドメインルーティングの競合を解決する Vue について

Dec 28, 2017 am 10:35 AM
対立 ルーティング 質問

Vue.js (/vjuː/ と発音、ビューに似ています) は、ユーザー インターフェイスを構築するための進歩的なフレームワークです。この記事では、クロスドメインルーティングの競合を解決するための Vue のアイデアの分析について詳しく説明します。必要な方はぜひ参考にしてください。

Vue の概要

Vue.js (/vjuː/ と発音、ビューに似ています) は、ユーザー インターフェイスを構築するための進歩的なフレームワークです。

Vue はビュー層のみに焦点を当てており、ボトムアップのインクリメンタル開発設計を採用しています。

Vue の目標は、可能な限りシンプルな API を通じてレスポンシブなデータ バインディングと合成ビュー コンポーネントを有効にすることです。

Vue は非常に簡単に学習できます。このチュートリアルは Vue 2.1.8 バージョンのテストに基づいています。

ルーティングに次のプロキシを設定すると、クロスドメインの問題を解決できます

proxyTable: {
   '/goods/*': {
    target: 'http://localhost:3000'
   },
   '/users/*': {
    target: 'http://localhost:3000'
   }
  },
ログイン後にコピー

この設定方法は、クロスドメインの問題をある程度解決しますが、いくつかの問題が発生します

たとえば、私たちの vue ルートは、この時点で競合が発生します

プロジェクト内に多数のインターフェイスがある場合、ここでそれらを設定するのは非常に面倒であり、ルーティングの競合も発生しやすくなります。

正しい姿勢

全てのインターフェースを一つの入り口として統一して統一すれば競合はある程度解決します

上記の設定を/api/で統一

proxyTable: {
   '/api/**': {
    target: 'http://localhost:3000'
   },
  },
ログイン後にコピー

このように設定すると, http リクエストを使用すると API が追加され、インターフェースの前にも API が追加されます。これも非常に面倒です。この問題を解決するには、次のメソッドを使用します。

proxyTable: {
   '/api/**': {
    target: 'http://localhost:3000',
    pathRewrite:{
     '^/api':'/'
    }
   },
  },
ログイン後にコピー
ログイン後にコピー

上記のコードは、実際にバックエンドにリクエストを送信するときに、API プレフィックスが追加されないように、フロントエンド http を作成するときに、仮想 API インターフェイスを削除します。コードは次のとおりです:

logout(){
  axios.post('/api/users/logout').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 },
 getGoods(){
  axios.post('/api/goods/list').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 }
ログイン後にコピー

axios の BaseUrl を使用して値を直接 API に設定できるため、アクセスするたびに API プレフィックスが追加されます。は自動的に追加され、訪問するたびに API プレフィックスを手動で追加する必要はありません。このプレフィックスはインターフェイスに書き込まれます

エントリ ファイルで次のように設定します:

import Axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, Axios)
Axios.defaults.baseURL = 'api'
ログイン後にコピー

'と指定すると、デフォルトでローカルドメインが読み取られます

このように設定すると、本番環境と開発環境が区別されなくなります

configで、フォルダー

const isPro = Object.is(process.env.NODE_ENV, 'production')
module.exports = {
 baseUrl: isPro ? 'http://www.vnshop.cn/api/' : 'api/'
}
ログイン後にコピー
ログイン後にコピー

に新しいapi.config.js設定ファイルを作成して導入しますこれにより、本番環境と開発環境の定義プレフィックスが動的に一致するようになります

import apiConfig from '../config/api.config'
import Axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, Axios)
Axios.defaults.baseURL = apiConfig.baseUrl
ログイン後にコピー
ログイン後にコピー

上記の設定後は、dom で簡単に行うことができます アクセスのために、コンポーネントに axios モジュールを導入する必要はありません。

logout(){
  this.$http.post('/users/logout').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 },
 getGoods(){
  this.$http.post('/goods/list').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 }
ログイン後にコピー
ログイン後にコピー

最終コード

エージェントで構成します

proxyTable: {
   '/api/**': {
    target: 'http://localhost:3000',
    pathRewrite:{
     '^/api':'/'
    }
   },
  },
ログイン後にコピー
ログイン後にコピー

configでapi.config.jsを構成します

configフォルダーに新しいapi.config.js構成ファイルを作成します

const isPro = Object.is(process.env.NODE_ENV, 'production')
module.exports = {
 baseUrl: isPro ? 'http://www.vnshop.cn/api/' : 'api/'
}
ログイン後にコピー
ログイン後にコピー

本番環境と開発構成についてはわかりません理解するには

dev-server.jsに移動して設定コードを確認できます

const webpackConfig = (process.env.NODE_ENV === 'testing' || process.env.NODE_ENV === 'production') ?
 require('./webpack.prod.conf') :
 require('./webpack.dev.conf')
ログイン後にコピー

main.jsエントリファイルで設定してください

import apiConfig from '../config/api.config'
import Axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, Axios)
Axios.defaults.baseURL = apiConfig.baseUrl
ログイン後にコピー
ログイン後にコピー

domでAPIをリクエストする姿勢

logout(){
  this.$http.post('/users/logout').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 },
 getGoods(){
  this.$http.post('/goods/list').then(result=>{
   let res = result.data;
   this.nickName = '';
   console.log(res);
  })
 }
ログイン後にコピー
ログイン後にコピー

PS:クロスを学びましょうコードの一部を使用した Vue のドメイン

1. vue で開発する場合、クロスドメインの問題がよく発生します。実際、vue cli にはクロスドメイン リクエストを設定するためのファイルがあります。

2. クロスドメイン リクエストを実行できない場合は、プロジェクトの config フォルダーにあるindex.js の dev:{} 部分を変更できます。

dev: {
  env: require('./dev.env'),
  port: 8080,
  autoOpenBrowser: false,
  assetsSubDirectory: 'static',
  assetsPublicPath: '/',
  proxyTable: {
    '/api': {
      target: 'http://api.douban.com/v2',
      changeOrigin: true,
      pathRewrite: {
        '^/api': ''
      }
    }
  },
  // CSS Sourcemaps off by default because relative paths are "buggy"
  // with this option, according to the CSS-Loader README
  // (https://github.com/webpack/css-loader#sourcemaps)
  // In our experience, they generally work as expected,
  // just be aware of this issue when enabling this option.
  cssSourceMap: false
}
ログイン後にコピー

アクセスする必要があるドメイン名にターゲットを設定します。

3. 次に main.js で global 属性を設定します:

Vue.prototype.HOST = '/api'
ログイン後にコピー

4. この時点で、次のようにこのドメイン名をグローバルに使用できます:

var url = this.HOST + '/movie/in_theaters'
  this.$http.get(url).then(res => {
   this.movieList = res.data.subjects;
  },res => {
   console.info('调用失败');
  });
ログイン後にコピー

関連する推奨事項:

Ajax クロスの例の詳細な説明-ドメインリクエストの原則

jqueryでのAjaxクロスドメイン送信時の2つのリクエストの問題の解決策

Jsのクロスドメインを理解する方法

以上がクロスドメインルーティングの競合を解決する Vue についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Java Apache Camel: 柔軟で効率的なサービス指向アーキテクチャの構築 Java Apache Camel: 柔軟で効率的なサービス指向アーキテクチャの構築 Feb 19, 2024 pm 04:12 PM

Apache Camel は、異種のアプリケーション、サービス、データ ソースを簡単に統合して、複雑なビジネス プロセスを自動化できる Enterprise Service Bus (ESB) ベースの統合フレームワークです。 ApacheCamel はルートベースの構成を使用して、統合プロセスを簡単に定義および管理します。 ApacheCamel の主な機能は次のとおりです。 柔軟性: ApacheCamel は、さまざまなアプリケーション、サービス、データ ソースと簡単に統合できます。 HTTP、JMS、SOAP、FTP などの複数のプロトコルをサポートします。効率: ApacheCamel は非常に効率的で、大量のメッセージを処理できます。非同期メッセージング メカニズムを使用しているため、パフォーマンスが向上します。拡張可能

iPhone の一般的な問題を診断する方法を教えます iPhone の一般的な問題を診断する方法を教えます Dec 03, 2023 am 08:15 AM

強力なパフォーマンスと多彩な機能で知られる iPhone は、複雑な電子機器によく見られる、時折起こる問題や技術的な困難を免れません。 iPhone の問題が発生するとイライラすることもありますが、通常は警報を発する必要はありません。この包括的なガイドでは、iPhone の使用に関連して最も一般的に遭遇する課題のいくつかをわかりやすく説明することを目的としています。当社の段階的なアプローチは、これらの一般的な問題の解決に役立つように設計されており、機器を最高の動作状態に戻すための実用的な解決策とトラブルシューティングのヒントを提供します。不具合やより複雑な問題に直面している場合でも、この記事はそれらを効果的に解決するのに役立ちます。一般的なトラブルシューティングのヒント 具体的なトラブルシューティング手順を詳しく説明する前に、役立つ情報をいくつか紹介します。

競合やエラーを回避するために NumPy ライブラリをアンインストールするためのガイド 競合やエラーを回避するために NumPy ライブラリをアンインストールするためのガイド Jan 26, 2024 am 10:22 AM

NumPy ライブラリは、科学計算とデータ分析のための Python の重要なライブラリの 1 つです。ただし、場合によっては、バージョンをアップグレードしたり、他のライブラリとの競合を解決したりする必要があるため、NumPy ライブラリをアンインストールする必要がある場合があります。この記事では、競合やエラーの可能性を回避するために NumPy ライブラリを正しくアンインストールする方法を読者に紹介し、特定のコード例を通じて操作プロセスを示します。 pip は Python のパッケージ管理ツールであるため、NumPy ライブラリのアンインストールを開始する前に、pip ツールがインストールされていることを確認する必要があります。

jQueryがform要素の値を取得できない問題の解決方法 jQueryがform要素の値を取得できない問題の解決方法 Feb 19, 2024 pm 02:01 PM

jQuery.val() が使用できない問題を解決するには、具体的なコード例が必要です フロントエンド開発者にとって、jQuery の使用は一般的な操作の 1 つです。その中でも、.val() メソッドを使用してフォーム要素の値を取得または設定する操作は、非常に一般的な操作です。ただし、特定のケースでは、.val() メソッドを使用できないという問題が発生する可能性があります。この記事では、いくつかの一般的な状況と解決策を紹介し、具体的なコード例を示します。問題の説明 jQuery を使用してフロントエンド ページを開発する場合、時々次のような問題が発生します。

JavaScript 関数を使用して Web ページのナビゲーションとルーティングを実装する JavaScript 関数を使用して Web ページのナビゲーションとルーティングを実装する Nov 04, 2023 am 09:46 AM

最新の Web アプリケーションでは、Web ページのナビゲーションとルーティングの実装は非常に重要な部分です。 JavaScript 関数を使用してこの関数を実装すると、Web アプリケーションをより柔軟でスケーラブルで使いやすいものにすることができます。この記事では、JavaScript 関数を使用して Web ページのナビゲーションとルーティングを実装する方法を紹介し、具体的なコード例を示します。 Web ページ ナビゲーションの実装 Web アプリケーションの場合、Web ページ ナビゲーションはユーザーが最も頻繁に操作する部分です。ユーザーがページをクリックしたとき

PHPでルーティングルールを柔軟に設定する実装方法と体験まとめ PHPでルーティングルールを柔軟に設定する実装方法と体験まとめ Oct 15, 2023 pm 03:43 PM

PHP におけるルーティング ルールの柔軟な構成の実装方法と経験のまとめ はじめに: Web 開発において、ルーティング ルールは URL と特定の PHP スクリプトの対応関係を決定する非常に重要な部分です。従来の開発方法では、通常、ルーティング ファイルにさまざまな URL ルールを設定し、その URL を対応するスクリプト パスにマップします。ただし、プロジェクトの複雑さが増し、ビジネス要件が変化するにつれて、各 URL を手動で構成する必要がある場合、非常に煩雑で柔軟性が低くなります。では、PHPでどのように実装するかというと、

Rulong 8 ワインマスター試験の問題は何ですか? Rulong 8 ワインマスター試験の問題は何ですか? Feb 02, 2024 am 10:18 AM

Yulong 8 ワインマスター試験にはどのような問題がありますか?対応する答えは何でしょうか?試験に早く合格するにはどうすればよいですか?マスター オブ ワイン試験の活動では、回答しなければならない質問がたくさんあり、その回答を参照して解決することができます。これらの質問にはすべてワインの知識が含まれます。参考が必要な場合は、龍が如く 8 ワインマスター試験問題の解答の詳細な分析を見てみましょう。 Rulong 8 ワインマスター試験の問題の答えを詳しく解説 1.「ワイン」に関する質問。ハワイで大量に栽培されているサトウキビの糖分を原料に醸造され、王室御用達の蒸留所で造られる蒸留酒です。このワインの名前は何ですか? 答え: ラム酒 2.「ワイン」についての質問です。写真は乾燥高麗人参と乾燥ベルモットをブレンドしたドリンクです。オリーブが入っているのが特徴で「コックニー」と呼ばれています。

win11インストール後にスタートメニューが使えなくなる問題の解決方法 win11インストール後にスタートメニューが使えなくなる問題の解決方法 Jan 06, 2024 pm 05:14 PM

多くのユーザーが win11 システムを更新しようとしましたが、更新後にスタート メニューが使用できないことがわかりました。最新の更新プログラムに問題があることが原因である可能性があります。Microsoft がこれらの更新プログラムを修正するか、アンインストールして問題を解決するのを待つことができます。問題です。一緒に見てみましょう。解決策。 win11 インストール後にスタートメニューが使用できない場合の対処方法 方法 1: 1. まず、win11 でコントロール パネルを開きます。 2. 次に、プログラムの下にある [プログラムのアンインストール] ボタンをクリックします。 3. アンインストール インターフェイスに入り、左上隅にある [インストールされたアップデートの表示] を見つけます。 4. 入力後、アップデート情報でアップデート時間を確認し、最近のアップデートをすべてアンインストールできます。方法 2: 1. さらに、更新なしで win11 システムを直接ダウンロードすることもできます。 2.これはほとんどのない製品です

See all articles