[Yuanchuang Essay Competition] Vue3 エンタープライズ レベルの優雅さの実践 - コンポーネント ライブラリ フレームワーク - 5 コンポーネント ライブラリの一般的なツールキット

実用的な vite + vue3 コンポーネント ライブラリ スキャフォールディング ツールを共有して、開発効率を向上させる
すぐに使える yyg-cli スキャフォールディングを使用する: vue3 コンポーネント ライブラリと vue3 ファミリー バケット プロジェクトを迅速に作成する
Vue3 エンタープライズ レベルのエレガントな実践 - コンポーネント ライブラリ フレームワーク - 1 pnpm monorepo を構築するVue3
エンタープライズ レベルの Elegance の実践 - コンポーネント ライブラリ フレームワーク - 2 ワークスペース ルートの初期化
Vue3 エンタープライズ レベルの Elegance の実践 - コンポーネント ライブラリ フレームワーク - 3 コンポーネント ライブラリ開発環境の構築
Vue3 エンタープライズ レベルの Elegance の実践 - コンポーネント ライブラリ フレームワーク - 4コンポーネントライブラリ

この記事では、コンポーネント ライブラリ開発環境の構築を続けます。最初の 2 つの記事では、コンポーネント ライブラリ内のコンポーネント プロジェクトの初期化とコンポーネント ライブラリの CSS アーキテクチャについて紹介しました。この記事では、一般的なツール ライブラリの構築について紹介します。コンポーネントの開発プロセス中に、いくつかの共通ツール関数が呼び出される場合があり、これらのツール関数は独立した npm パッケージに抽出できます。

1 ツールキットの作成

1.1 初期化ツールキット

これまでのところ、packagesディレクトリには 3 つのパッケージ ( fooサンプル コンポーネント、scssスタイル、yyg-demo-uiコンポーネント ライブラリ アグリゲーション)があり、ここで 4 つ目のパッケージ ( utils )を作成します。

コマンド ラインで utils ディレクトリを入力し、pnpm を使用して初期化します。

pnpm init

自動生成されたpackage.jsonファイルのnamemainを変更します。内容は次のとおりです。

{
    
    
  "name": "@yyg-demo-ui/utils",
  "version": "1.0.0",
  "description": "通用工具函数",
  "main": "index.ts",
  "scripts": {
    
    
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

ツールキットも TypeScript で記述されているため、tsconfig.jsonファイルもutilsの下に提供されます

{
    
    
  "compilerOptions": {
    
    
    "target": "es2015",
    "lib": [
      "es2015"
    ],
    "module": "commonjs",
    "rootDir": "./",
    "allowJs": true,
    "isolatedModules": false,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  }
}

1.2 最初のツール関数を作成する

要件の説明: コンポーネント間の通信は厳格な要件であり、コンポーネントのレベルが多い場合は、通信にグローバル バスを使用できます。通常、Vue 2.x では EventBus がグローバル バスとして使用されますが、Vue 3.x ではmittを使用できます。mittはサイズが小さく、すべてのイベントの監視とバッチ削除をサポートし、Vue インスタンスに依存せず、フレームワーク間で使用できます。最初のツール機能は、単純にミットをカプセル化し、ミット オブジェクトをエクスポートすることです。

まず、utilsパッケージの下にmit依存関係をインストールします。

pnpm install [email protected]

注意深い学生は、Mit を導入するときに Yaya 兄弟がバージョン番号 1.1.3 を指定したことに気づくでしょう。これは、最新バージョン 3.0.0 を使用すると、型宣言がないため、Yaya 兄弟は常に型エラーを表示するか、型宣言ファイルが見つからないためです。ファイルが空の場合は、単にバージョン 1.1.3 にダウングレードされます。

utilsディレクトリ内にソース コード ディレクトリsrcを作成し、src内にEmitter.tsファイルを作成します

utils/src/emitter.ts

import mitt from 'mitt'
const Mitt = mitt
export const emitter: mitt.Emitter = new Mitt()

export default emitter

上記のコードの 2 行目は、本質的にnew mitt()であるため、冗長に見えますが、これは eslint のルールを満たすために行われます。

コンストラクター名は小文字で始めてはなりません。

1.3 2 番目のツール関数を作成する

上記のエミッタ オブジェクトは後続のコンポーネント開発で使用されますが、foo では使用されないため、テスト用のツール関数を作成しましょう。

test-log.tsファイルをディレクトリにutils/src/作成します

export const testLog = (str: string) => {
    
    
  console.log('test log: ', str)
}

1.4 エントリーファイル

以前のpackage.json は、 mainをindex.tsとして指定しutilsディレクトリにindex.tsファイルを作成し、すべてのツール関数などをインポートおよびエクスポートします。

export {
    
     emitter } from './src/emitter'
export {
    
     testLog } from './src/test-log'

要約すると、コンポーネント ライブラリ ユニバーサル ツールキットのディレクトリ構造は次のとおりです。

packages/
  |- utils/
    |- src/
        |- emitter.ts
        |- test-log.ts
    |- index.ts
    |- tsconfig.json
    |- package.json

2 コンポーネントでのツールキットの使用

2.1 依存関係をインストールする

fooサンプル コンポーネントは以前に開発されています。このコンポーネントがツールキットを使用したい場合は、最初に依存関係をインストールする必要があります。コマンドラインにfooディレクトリを入力します。

pnpm install @yyg-demo-ui/utils

実行後、foo の package.json に依存関係の行がさらに 1 行追加されます。

"dependencies": {
  "@yyg-demo-ui/utils": "workspace:^1.0.0"
}

2.2 ツールの使用

utilsパッケージはmainをindex.tsとして指定しており、すべてのツールはindex.tsにインポートおよびエクスポートされるため、使用する場合はutilsパッケージを導入するだけで済みます。

たとえば、上で作成したtestLog関数を使用するには、次のようにコードに関数を導入するだけです。

import {
    
     testLog } from '@yyg-demo-ui/utils'

このメソッドは、セットアップのボタン クリック イベントで呼び出されます

const onBtnClick = () => {
    
    
  console.log('点击按钮测试', props.msg)
  testLog(props.msg)
}

JSON スキーマの解析など、開発プロセスの後半で新しいツール関数が追加された場合は、それらをutilsに追加し、 utils/index.tsで均一にインポートおよびエクスポートします。

この記事を読んでいただきありがとうございます。この記事が少しでも役に立ったり、インスピレーションになった場合は、いいね、フォロー、集めて三回連続で応援してください。プログラマーエレガントブラザーは今後もより有益な情報を皆さんに共有していきます。

おすすめ

転載: blog.csdn.net/youyacoder/article/details/127865333