1. はじめにこれは、以前よりも面倒なことが少なくなりました。簡単に言えば、設定ファイルを使用して複数の環境を管理し、環境の切り替えを実現することです。 2. 切り替え1. 開発および本番環境の設定ファイルを追加するWeb のルート ディレクトリに、次の内容の開発環境切り替え構成ファイル .env.dev を作成します。 NODE_ENV=開発 VUE_APP_SERVER=http://127.0.0.1:8880 Web のルート ディレクトリに、次の内容を含むオンライン環境切り替え構成ファイル .env.prod を作成します。 NODE_ENV=本番 VUE_APP_SERVER=https://www.baidu.com 2. 複数の環境をサポートするためにコンパイルと起動を変更する
サンプルコードは次のとおりです。 { "名前": "ウェブ", "バージョン": "0.1.0", 「プライベート」:true、 「スクリプト」: { "serve-dev": "vue-cli-service サーブ --mode dev --port 8080", "serve-prod": "vue-cli-service サーブ --mode prod", "build-dev": "vue-cli-service ビルド --mode dev", "build-prod": "vue-cli-service ビルド --mode prod", "lint": "vue-cli-service lint" }, 「依存関係」: { "@ant-design/icons-vue": "^5.1.9", "ant-design-vue": "^2.0.0-rc.3", "axios": "^0.21.0", "vue": "^3.0.0", "vue-router": "^4.0.0-0", "vuex": "^4.0.0-0" }, 「devDependencies」: { "@typescript-eslint/eslint-plugin": "^4.18.0", "@typescript-eslint/パーサー": "^4.18.0", "@vue/cli-plugin-eslint": "~4.5.0", "@vue/cli-plugin-router": "~4.5.0", "@vue/cli-plugin-typescript": "~4.5.0", "@vue/cli-plugin-vuex": "~4.5.0", "@vue/cli-service": "~4.5.0", "@vue/コンパイラ-sfc": "^3.0.0", "@vue/eslint-config-typescript": "^7.0.0", "eslint": "^6.7.2", "eslint-プラグイン-vue": "^7.0.0", "typescript": "~4.1.5" } } 右側の npm の更新ボタンをクリックすると、次のような効果が表示されます。 効果を確認するために、 次のコードを追加します。 console.log('環境',process.env.NODE_ENV); console.log('server',process.env.VUE_APP_SERVER); 知識ポイント:
再コンパイルしてサービスを開始します。結果は次のようになります。 3. 複数の環境をサポートするためにaxiosリクエストアドレスを変更するなぜ変更するのですか? システムにはリクエストが 1 つしか存在できず、リクエストごとにフルパスを記述するとコードのメンテナンス コストが増加します。そのため、ここではメンテナンス用に統一された構成を使用することをお勧めします。 これはグローバルなので、 サンプルコードは次のとおりです。 'vue' から {createApp} をインポートします。 'ant-design-vue' から Antd をインポートします。 './App.vue' からアプリをインポートします。 'ant-design-vue/dist/antd.css' をインポートします。 './router' からルーターをインポートします。 './store' からストアをインポートします。 'axios' から axios をインポートします。 axios.defaults.baseURL=process.env.VUE_APP_SERVER; // 開発が簡単という利点がありますが、パッケージ化するとファイルサイズが大きくなるという欠点があります(ただし、影響はありません) createApp(App).use(store).use(router).use(Antd).mount('#app') console.log('環境', process.env.NODE_ENV); console.log('server', process.env.VUE_APP_SERVER); 次に、 サンプルコードは次のとおりです。 <テンプレート> <a-レイアウト> `<a-layout-sider width="200" style="background: #fff"> <a-メニュー モード="インライン" v-model:selectedKeys="selectedKeys2" v-model:openKeys="openKeys" :style="{ 高さ: '100%', 右境界線: 0 }" > <a-サブメニューキー="sub1"> <テンプレート #タイトル> <span> <ユーザーによるアウトライン /> サブナビ1 </span> </テンプレート> <a-menu-item key="1">オプション1</a-menu-item> <a-menu-item key="2">オプション2</a-menu-item> <a-menu-item key="3">オプション3</a-menu-item> <a-menu-item key="4">オプション4</a-menu-item> </a-サブメニュー> <a-サブメニューキー="sub2"> <テンプレート #タイトル> <span> <ラップトップのアウトライン /> サブナビ2 </span> </テンプレート> <a-menu-item key="5">オプション5</a-menu-item> <a-menu-item key="6">オプション6</a-menu-item> <a-menu-item key="7">オプション7</a-menu-item> <a-menu-item key="8">オプション8</a-menu-item> </a-サブメニュー> <a-サブメニューキー="sub3"> <テンプレート #タイトル> <span> <通知の概要 /> サブナビ3 </span> </テンプレート> <a-menu-item key="9">オプション9</a-menu-item> <a-menu-item key="10">オプション10</a-menu-item> <a-menu-item key="11">オプション11</a-menu-item> <a-menu-item key="12">オプション12</a-menu-item> </a-サブメニュー> </a-メニュー> </a-layout-sider> ` <a-list 項目レイアウト="垂直" サイズ="大" :grid="{ ガター: 16, 列: 3 }" :data-source="ebooks1"> <テンプレート #renderItem="{ アイテム }"> <a-list-item キー="item.name"> <テンプレート #アクション> <span v-for="{ type, text } アクション内" :key="type"> <コンポーネント v-bind:is="type" style="margin-right: 8px"/> {{ 文章 }} </span> </テンプレート> <a-list-item-meta :description="item.description"> <テンプレート #タイトル> <a :href="item.href" rel="外部nofollow" >{{ item.name }}</a> </テンプレート> <テンプレート #アバター><a-アバター :src="item.cover" /></テンプレート> </a-リスト項目メタ> </a-リスト項目> </テンプレート> </a-リスト> </a-レイアウト> </テンプレート> <script lang="ts"> 'vue' から {defineComponent、onMounted、reactive、ref、toRef} をインポートします。 'axios' から axios をインポートします。 '@ant-design/icons-vue' から {LikeOutlined、MessageOutlined、StarOutlined} をインポートします。 const listData: レコード<文字列, 文字列>[] = []; エクスポートデフォルトdefineComponent({ コンポーネント: 星のアウトライン、 アウトラインのように、 メッセージアウトライン、 }, 名前: 'ホーム'、 設定(){ const ページネーション = { onChange: (ページ: 番号) => { console.log(ページ); }, ページサイズ: 3, }; constアクション: Record<文字列, 文字列>[] = [ { タイプ: 'StarOutlined'、テキスト: '156' }, { タイプ: 'LikeOutlined'、テキスト: '156' }, { タイプ: 'MessageOutlined'、テキスト: '2' }, ]; console.log('セットアップ'); //データバインディングにはrefを使用します。const ebooks=ref(); // リアクティブデータバインディングを使用する const ebooks1 = reactive({books:[]}) マウント時(()=>{ axios.get("/ebook/list?name=").then(応答 => { console.log("マウントされた状態"); 定数データ = レスポンス.データ; ebooks.value = データコンテンツ; ebooks1.books = データコンテンツ; console.log(応答); }) }) 戻る { ページネーション、 行動、 電子書籍1: 電子書籍、 ebooks2: toRef(ebooks1, "書籍") } } }); </スクリプト> <スタイルスコープ> .ant-レイアウト-サイダー { フロート: 左; } .ant-アバター{ 幅: 50px; 高さ: 50px; 行の高さ: 50px; 境界線の半径: 8%; マージン: 5px 0; } </スタイル> 再コンパイルして再度開始すると、結果は次のようになります。 赤い円から、 知識ポイント:
Vue3 の Vue CLI マルチ環境設定に関する記事はこれで終わりです。Vue CLI マルチ環境設定に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML内のフレームセットタグが正常に表示されない原因の解析と解決方法
>>: Harborを使用してプライベートDockerリポジトリを構築する方法
目次1. LAN内のプロキシ2. イントラネットの浸透イントラネット侵入とは何ですか?橋プロキシサー...
この記事は、「1 分でインデックス作成スキルを学ぶ」という宿題から生まれました。注文ビジネス テーブ...
この記事の例では、リストのシームレスなスクロールを実現するためのvueの具体的なコードを参考までに共...
以前、カスタム関数を使用して MySQL でツリー構造を再帰的にクエリする方法についての記事を書きま...
序文ご存知のとおり、ブラウザの相同性戦略とクロスドメイン方式も、フロントエンド面接で頻繁に遭遇する問...
この記事では、JavaScript メッセージ ボードでメッセージを追加および削除する小さな例を詳細...
最近、画像上に半透明の背景でテキストを表示する必要があるという要件に遭遇しました。その効果は次のよう...
前提条件: ヘッダー情報操作をサポートするには、ngx_http_headers_module モジ...
注: sg11 弊社では Linux システム仮想ホストのセルフインストールのみサポートしております...
カーネル: [root@opop ~]# cat /etc/centos-release CentO...
スワップ メモリとは、主に物理メモリが不足している場合に、システムがハード ディスク領域の一部をサー...
1. csvファイルをインポートする次のコマンドを使用します。 1.mysql> infile...
この記事では、MySQL 5.6.37のダウンロード、インストール、設定のチュートリアルを参考までに...
Async Hooks は Node8 の新機能です。NodeJs の非同期リソースのライフサイクル...
JS アニメーションの代わりに CSS アニメーションを使用する必要があるのはなぜですか? Java...