はじめに
プロジェクト開発では、使用するドメイン名がバックエンド インターフェイスのドメイン名と一致しないため、クロスドメインの問題が発生することがよくあります。開発環境では、プロキシを構成することでクロスドメインの問題を解決できますが、パッケージ化および展開後は、他の方法を使用してクロスドメインの問題を解決する必要があります。この記事では、vue-cli3 を使用してクロスドメインをパッケージ化してデプロイする方法を紹介します。
1. クロスオリジンとは
クロスオリジン リソース共有 (CORS) は、ブラウザーの同一オリジン ポリシーの制限であり、Web ページが他のソースからリソースを取得できないようにします。これは、2 つのページのプロトコル、ドメイン名、ポート番号がまったく同じであることを意味します。オリジナル以外のソース パスからリクエストが開始された場合、ブラウザはリクエストを拒否します。
2. vue-cli3 パッケージ化のいくつかのモード
vue-cli3 では、パッケージ化は 3 つのモードに分かれています:
- テスト モード (build-test )
テスト モードは、コードを開発環境で実行できるモードにパッケージ化し、ソースマップのデバッグ機能を自動的に有効にします。 - ビルド モード (build-prod)
ビルド モードはコードを圧縮して難読化するため、実稼働環境へのデプロイに適しています。 - 生成およびプレビュー モード (サーブ)
サーブ モードはコードをホット アップデートし、開発中のプレビューとテストに適したプレビュー サービスを提供します。
3. パッケージ化されたクロスドメイン ソリューション
パッケージ化され、クロスドメインにデプロイされる場合、クロスドメインの問題を解決するために、nginx を使用してリバース プロキシを実行する必要があります。
nginx は、Windows、Linux、Mac などのさまざまなオペレーティング システム上で実行できる高性能 Web サーバーです。非常に強力で、リバース プロキシ、ロード バランシング、キャッシュなどに使用できます。
- nginx のインストール
Linux 環境では、次のコマンドを使用して nigix をインストールできます:
sudo apt-get update sudo apt-get install nginx
- Configure nginx
nginx をインストールした後、クロスドメインの問題を解決するために nginx を構成する必要があります。
まず、nginx 構成ファイルを見つける必要があります。通常、ファイルは /etc/nginx/conf.d/default.conf にあります。次のコマンドで nginx 構成ファイルを開きます:
sudo vim /etc/nginx/conf.d/default.conf
次に、次のようにサーバー セグメントを見つけます:
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /.ht { # deny all; #} }
たとえば、location セグメントの下にリバース プロキシを構成する必要があります:
location /api { proxy_pass http://192.168.0.100:8080; # 后端API地址 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; proxy_buffer_size 64k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; # 解决跨域 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; # 缓存时间,单位秒。这里设置的是6小时 expires 21600s; # 收到304响应后,再次请求的时间间隔 proxy_cache_valid 200 304 12h; }
その中で、proxy_pass の後のアドレスは次のようになります。バックエンド API アドレスに変更すると、add_header がクロスドメインの問題を解決します。
- vue.config.js 構成を変更する
vue-cli3 では、パッケージ化されたファイルがドメインに依存しないように vue.config.js の publicPath を構成できます。
module.exports = { publicPath: '', devServer: { // 设置跨域代理 proxy: { '/api': { target: 'http://192.168.0.100:8080', // 后端API地址 ws: true, changOrigin: true, pathRewrite: { '^/api': '' } } } }, chainWebpack: (config) => { config.optimization.delete('splitChunks'); } }
このうち、/api はバックエンド API アドレスのプレフィックスであり、ターゲット設定はバックエンド API アドレスです。
- パッケージ化とデプロイメント
上記の構成後、vue プロジェクトをパッケージ化してデプロイできます。パッケージ化が完了したら、/dist ディレクトリ内のすべてのファイルを nginx 構成のルート ディレクトリ (通常は /usr/share/nginx/html) にコピーし、nginx サービスを再起動します。これまでのところ、vue-cli3 のパッケージ化とドメイン全体へのデプロイメントの実装に成功しています。
概要
この記事では、nginx リバース プロキシを使用して、vue-cli3 のパッケージ化とデプロイメントにおけるクロスドメインの問題を解決する方法を紹介します。上記の構成により、クロスドメインの問題を解決し、実稼働環境にデプロイできます。もちろん、nginx に対するユーザーのアクセス許可を有効にするなど、展開プロセス中にセキュリティの問題に注意を払う必要があります。もちろん、jsonp、websocket などの他の方法を使用してクロスドメインの問題を解決することもできます。
以上がVue のパッケージ化とドメイン間でのデプロイメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

HTMLとReactの関係は、フロントエンド開発の中核であり、最新のWebアプリケーションのユーザーインターフェイスを共同で構築します。 1)HTMLはコンテンツ構造とセマンティクスを定義し、Reactはコンポーネントを介して動的インターフェイスを構築します。 2)ReactコンポーネントはJSX構文を使用してHTMLを埋め込み、インテリジェントなレンダリングを実現します。 3)コンポーネントライフサイクルは、状態および属性に従ってHTMLレンダリングと動的に更新を管理します。 4)コンポーネントを使用して、HTML構造を最適化し、保守性を向上させます。 5)パフォーマンスの最適化には、不必要なレンダリングの回避、重要な属性の使用、およびコンポーネントの単一の責任を維持することが含まれます。

Reactは、インタラクティブなフロントエンドエクスペリエンスを構築するための好ましいツールです。 1)Reactは、コンポーネント化と仮想DOMを通じてUIの開発を簡素化します。 2)コンポーネントは、関数コンポーネントとクラスコンポーネントに分割されます。関数コンポーネントはよりシンプルで、クラスコンポーネントはより多くのライフサイクル方法を提供します。 3)Reactの作業原則は、パフォーマンスを改善するために仮想DOMおよび調整アルゴリズムに依存しています。 4)国家管理は、usestateまたはthis.stateを使用し、ComponentDidmountなどのライフサイクルメソッドが特定のロジックに使用されます。 5)基本的な使用には、コンポーネントの作成と状態の管理が含まれ、高度な使用にはカスタムフックとパフォーマンスの最適化が含まれます。 6)一般的なエラーには、不適切なステータスの更新とパフォーマンスの問題が含まれます。

Reactは、コアコンポーネントと状態管理を備えたユーザーインターフェイスを構築するためのJavaScriptライブラリです。 1)コンポーネントと州の管理を通じてUIの開発を簡素化します。 2)作業原則には和解とレンダリングが含まれ、React.memoとusememoを通じて最適化を実装できます。 3)基本的な使用法は、コンポーネントを作成およびレンダリングすることであり、高度な使用法にはフックとコンテキストアピの使用が含まれます。 4)不適切なステータスの更新などの一般的なエラーでは、ReactDevtoolsを使用してデバッグできます。 5)パフォーマンスの最適化には、React.MEMO、仮想化リスト、コードスプリッティの使用が含まれ、コードを読みやすく保守可能に保つことがベストプラクティスです。

ReactはJSXとHTMLを組み合わせてユーザーエクスペリエンスを向上させます。 1)JSXはHTMLを埋め込み、開発をより直感的にします。 2)仮想DOMメカニズムは、パフォーマンスを最適化し、DOM操作を削減します。 3)保守性を向上させるコンポーネントベースの管理UI。 4)国家管理とイベント処理は、インタラクティブ性を高めます。

Reactコンポーネントは、機能またはクラスによって定義され、UIロジックのカプセル化、およびプロップを介して入力データを受け入れることができます。 1)コンポーネントの定義:関数またはクラスを使用して、反応要素を返します。 2)レンダリングコンポーネント:Reactコールレンダリングメソッドまたは機能コンポーネントを実行します。 3)マルチプレックスコンポーネント:データをプロップに渡して、複雑なUIを構築します。コンポーネントのライフサイクルアプローチにより、ロジックをさまざまな段階で実行でき、開発効率とコードメンテナビリティが向上します。

React Strictモードは、追加のチェックと警告をアクティブにすることにより、Reactアプリケーションの潜在的な問題を強調する開発ツールです。これは、レガシーコード、安全でないライフサイクル、および副作用を特定するのに役立ち、現代の反応の実践を促進します。

反応フラグメントにより、余分なDOMノードなしで子供をグループ化すること、構造、パフォーマンス、アクセシビリティが向上します。それらは、効率的なリストレンダリングの鍵をサポートしています。

この記事では、Reactの和解プロセスについて説明し、DOMを効率的に更新する方法について詳しく説明しています。重要な手順には、調整のトリガー、仮想DOMの作成、拡散アルゴリズムの使用、最小限のDOM更新の適用が含まれます。また、Perfoをカバーしています


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
