アプリケーションシナリオB2B ビジネスでは、顧客は同じ製品に対して多かれ少なかれカスタマイズを要求します。スキン、画像、いくつかの小さな機能の違いまで。 少し前に、要件を受け取り、選択されたテクノロジは vue-cli を使用して構築された VUE でした。コード セットは 10 人以上の顧客をサポートする必要があります。各顧客のスキンと機能には若干の違いがありますが、主なプロセスはほぼ同じです。私たちはこのシナリオにおける解決策を検討しました。 アイデア全体的な考え方はモジュール化であり、コンパイル中に入力コマンドに従ってさまざまなモジュールを直接組み立てて、必要なページをパッケージ化します。 1. ページを分割してコンポーネントの粒度を制御するにはどうすればよいでしょうか? 2. 差分コンパイルを実行するにはどうすればいいですか? プロジェクト構造同じページでも共通部分と異なる部分が存在します。 Vue 自体のコンポーネント化の考え方により、ページをコンポーネントに分割し、共通部分を抽出して個別に処理することを考えやすくなります。 全体的なプロジェクト構造
ビルド構造には主にwebpackのスクリプト構成が含まれています
設定ファイルは主にプロジェクト関連の設定です。ポートの競合がある場合に、リスニング ポート、パッケージ出力パス、名前付けを設定するためによく使用されます。
ソースコードファイル。
静的リソース。通常は画像、スタイルなど。
ここでは、スタイル ファイルがさまざまなテーマに分割されています。
ページファイル
ルーティング
ツール
フォルダーには各プロジェクトのコンポーネントが含まれています。コンポーネント ディレクトリにはパブリック コンポーネントが含まれています。
静的リソースは webpack によってコンパイルされません。通常は外部参照ファイルを配置します。 webpack パッケージ構成差分コンパイルするにはどうすればいいですか? 1.cross-envは環境変数を使用します。コンパイルフェーズでは、コンパイルのために渡された変数に従ってさまざまなコンポーネントがコンパイルされます。 「スクリプト」: { "dev:gx": "クロス環境 BRANCH_ENV=gx ノード build/dev-server.js", "build:gx": "クロス環境 BRANCH_ENV=gx ノード build/build.js" }, このとき、コンパイル時に、対応するコマンドを入力して、対応する環境変数を渡すことができます。 2. この環境変数をconfig/prod.env.jsに挿入します。 モジュール.エクスポート = { NODE_ENV: '"production"'、 API_PATH:'""', BRANCH_ENV: JSON.stringify(process.env.BRANCH_ENV) || '"base"', ignoreCsrfToken:'"false"' } 3.webpack.base.conf.js 解決する: { 拡張子: ['', '.js', '.vue', '.json'], フォールバック: [path.join(__dirname, '../node_modules')], エイリアス: { 'vue$': 'vue/dist/vue.common.js', 'src': パスを解決します(__dirname, '../src'), 'assets': path.resolve(__dirname, '../src/assets/images/'+process.env.BRANCH_ENV), 'コンポーネント': path.resolve(__dirname, '../src/components'), 'componentsDif': path.resolve(__dirname, '../src/components/'+process.env.BRANCH_ENV), } }, エイリアスを導入する際に、コンパイル コマンドによって挿入された環境変数を使用していることがわかります。例えば、コンパイルコマンドが次のように入力したとします。 npm 実行ビルド:gx 現時点では 'assets': path.resolve(__dirname, '../src/assets/images/'+process.env.BRANCH_ENV) // 'assets' と同等: path.resolve(__dirname, '../src/assets/images/gx') ページ参照1. 画像参照<img class="icon-arrow" src="~assets/arrow.png"> //コンパイルコマンドに従って。画像参照は src/assets/images/gx/arrow.png です。 背景: url(~assets/btn_1.png) 繰り返しなし; 追記: エイリアスを使用するときは必ず ~ 記号を追加してください 2. コンポーネントリファレンス//パブリック コンポーネント 'components/RuleTitle' から ruleTitle をインポートします // 差別化コンポーネントの import ruleContent from 'componentsDif/RuleContent' 要約するつまり、コアとなる考え方は、コンパイル コマンドに従って環境変数を渡し、環境変数とエイリアスの構成を使用してパッケージを区別することです。さらに難しいのは、コンポーネントの粒度をどのように制御するか、またコンポーネントをどのように分割するかであり、これはさまざまなニーズに応じてカスタマイズする必要があります。 上記は、複数のプロジェクトをサポートするための Vue-cli ベースのコード セットの詳細です。複数のプロジェクトをサポートするための Vue-cli ベースのコード セットの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: MySQL におけるデータベース間関連クエリメソッド
>>: CentOS7.6 システムで yum を使用して lnmp 環境を構成する方法
Linux には、2 種類のファイル接続があります。1 つは Windows のショートカットに似て...
今日、ちょっとした問題に遭遇し、長い間苦労しました。そのことを皆さんにシェアしたいと思います。 a ...
目次導入インストール表示フィールドフィルターソートキー導入Rhit は、標準フォルダー (gzip ...
具体的なコードは次のとおりです。 <!DOCTYPE html> <html>...
1.MySQLレプリケーションの概念これは、プライマリ データベースの DDL および DML 操作...
vue を使用してプロジェクトを開発する場合、フロントエンドでは次のような日付と時刻を計算する必要が...
ドラッグ アンド ドロップはフロントエンドでよく使われる機能であり、多くのエフェクトで js のドラ...
目次1. テスト環境1.1 ハードウェアとソフトウェア1.2 テーブル構造2. テストの目的2.1 ...
Ansible は、Python をベースに開発された新しい自動運用・保守ツールです。 多くの古い運...
KVM はカーネルベースの仮想マシンの略で、Linux をハイパーバイザーに変換する Linux ...
Docker の設計では、コンテナは 1 つのアプリケーションのみを実行します。しかし、現在のアプリ...
成果を達成する実装コード <h1>123WORDPRESS.COM</h1>...
1. MySQL 8.0.20をダウンロードして解凍するダウンロードリンク: https://dev...
MySQL のCAST()およびCONVERT()関数を使用すると、ある型の値を取得し、別の型の値を...
この記事の例では、WeChatアプレットのビデオプレーヤーコンポーネントの具体的なコードを参考までに...