フロントエンドとバックエンドの分離開発モデルを使用した、Vue ベースの電子商取引バックエンド管理システム。プロジェクトで使用されるフロントエンド テクノロジー スタックには、Vue、vue-router、Element-UI、Axios、Echarts などが含まれます。
フロントエンド技術スタック:
ユーザーが正常にログインすると、クライアントはsessionStorage
とtoken
を通じてログイン ステータスを記憶し、維持します。
ルート ナビゲーション ガードrouter.beforeEach
を通じてユーザーのアクセス許可を制御します。ログインしていないユーザーが、URL を介してログイン ページ以外のページにアクセスしようとするのを防ぎます。
Element-UI
コンポーネント ライブラリを使用して、ホームページのページ レイアウトを実装します。<el-menu>
を使用してサイド ナビゲーション バーを実装し、activePath 属性をsessionStorage
に追加してナビゲーション バーを強調表示したままにします。Iconfont
Alibaba ベクター アイコン ライブラリを使用します。Axios
経由でインターフェイス データをリクエストし、トークンを axios リクエスト インターセプターに追加して、データを取得する権限を確保します。NProgress
進行状況バーを使用して、ページ読み込み (データ要求) の進行状況を表示します。 <el-form>
を使用して、ユーザー フォームを追加し、フォーム検証ルールをカスタマイズし、送信前のフォームのリセットと事前検証を実装します。
slot-scope
使用してコンポーネントデータを取得し、レンダリングテンプレートをカスタマイズします。
役割リスト
3 層のv-for
ループを使用して、ロールの第 1、第 2、および第 3 レベルの権限をそれぞれレンダリングします。
<el-tree>
ツリー コントロールを使用して、ロール割り当て可能な権限のリストを表示します。
権限リスト
製品一覧
Vue.filter
を使用して、Date オブジェクトの表示形式をカスタマイズします。製品を追加
<el-steps>
ステップ バー コンポーネントを使用して、ユーザーがプロセスに従って製品追加フォームに入力するようにガイドします。
<el-upload>
コンポーネントを使用して、ユーザーが製品画像をアップロードできるようにします。
vue-quill-editor
リッチ テキスト エディターを使用して、ユーザーが製品コンテンツを入力できるようにします。
<el-form>
を使用して、製品追加フォームを完成させ、フォーム検証ルールをカスタマイズし、フォーム送信前の事前検証を実装します。
分類パラメータ
製品分類
vue-table-with-tree-grid
ツリー テーブル コンポーネントを使用して、第 1、第 2、および第 3 レベルの製品分類を表示します。 <el-timeline>
タイムライン コンポーネントを使用して、注文の物流情報を表示します。
Echarts
使用してユーザー ソース データ レポートを表示します。
- axios => リクエストを送信
- echarts => チャート
- element-ui => Element-UI コンポーネント ライブラリ
- lodash => ディープコピーとオブジェクトのマージ
- nprogress => プログレスバー
- vue-quill-editor => リッチ テキスト エディター
- vue-table-with-tree-grid => ツリーテーブル
- babel => ES6 構文変換
- eslint/babel-eslint => 構文チェック
- sass/sass-loader => sass 構文
- babel-plugin-transform-remove-console => 本番環境からコンソールを削除
- @babel/plugin-syntax-dynamic-import => ルートの遅延読み込み
Vue UI 視覚化パネルを通じてパッケージ化レポートを表示し、大きすぎるファイルを最適化/圧縮する方法を分析します。
chainWebpack
を通じて開発モードとリリース モードに異なるパッケージング エントリ ファイルを指定する
- 開発モードエントリファイル src/main-dev.js
- リリースモードエントリーファイル src/main-prod.js
運用環境では、大きすぎるいくつかのサードパーティ ライブラリがCDN
デフォルトでは、インポート構文を通じてインポートされたサードパーティの依存関係パッケージは、最終的にパッケージ化されて同じファイルにマージされるため、パッケージ化が成功した後の単一ファイルのサイズが大きすぎるという問題が発生します。
上記の問題を解決するには、Webpack の
externals
ノードを介して外部 CDN リソースをロードする必要がある依存関係を構成できます。外部で宣言されたサードパーティの依存関係パッケージはパッケージ化されません。
プラグインを使用してさまざまな環境のホームページ コンテンツをカスタマイズします (たとえば、インポートを使用して開発モードで依存パッケージをインポートし、CDN を使用してリリース モードでインポートします)
// Vue.config.js
config . plugin ( 'html' ) . tap ( args => {
args [ 0 ] . isProd = true / false
return args
} )
<!-- index.html -->
< title > < %= htmlWebpackPlugin.options.isProd ? '' : 'dev-' % > Element后台管理系统</ title >
< % if(htmlWebpackPlugin.options.isProd) { % >
此处为CDN引入的第三方资源
< % } % >
プロジェクトをパッケージ化する場合、js パッケージが大きすぎるとページの読み込み速度に影響します。
@babel/plugin-syntax-dynamic-import
プラグインを使用し、オンデマンドでロードされるようにルーティングを変更します。対応するコンポーネントは、ルートにアクセスした場合にのみロードされます。
npm install
npm run serve
npm run build
npm run lint