ViteでReactプロジェクトを構築する方法

ViteでReactプロジェクトを構築する方法

序文

毎日鳩、火ばさみ劉明

これは vite 上に構築された React プロジェクトであり、開発エクスペリエンスは素晴らしいです。

Viteプロジェクトを作成する

糸作成@vitejs/app 

上図のように、react-tsのプリセットテンプレートが選択されています。以下のようなプロジェクトが表示されたら

yarn // 依存関係をインストール yarn dev // 開発環境を起動

ブラウザを開き、上図のように http://localhost:3000/#/ と入力します。おめでとうございます。React プロジェクトを通常どおり開発できます。エンディングスプリンクルフラワー

それでもうまくいかない場合は、私が書いたものよりも詳しい情報が記載されている Vite の公式 Web サイトにアクセスしてください。

改修プロジェクト

しかし、上記はあくまでも基本的な React デモです。実際の開発プロジェクトでは、これだけでは十分ではなく、追加のプロジェクト構成が必要になります。

ディレクトリの規則

日々の開発習慣に従って、まず基本的なディレクトリ規則を作成します

├── dist/ // デフォルトのビルド出力ディレクトリ └── src/ // ソースコードディレクトリ ├── asset/ // 静的リソースディレクトリ ├── config      
  ├── config.js // プロジェクトの内部業務に関わる基本設定├── components/ // 公開コンポーネントディレクトリ├── service/ // 業務リクエスト管理├── store/ // 共有ストア管理ディレクトリ├── until/ // ツール機能ディレクトリ├── pages/ // ページディレクトリ├── router/ // ルーティング設定ディレクトリ├── .main.tsx // Vite 依存関係メインエントリ├── .env // 環境変数設定├── vite.config.ts // Vite 設定選択、詳細は公式サイトの api を参照してください
└── package.json

ルートの設定

main.tsxを修正する

'react' から React をインポートします
'react-dom' から ReactDOM をインポートします。
'react-router-dom' から { HashRouter、Route、Switch } をインポートします。
'./router/index' から routerConfig をインポートします。
'./base.less' をインポートします

ReactDOM.render() は、
 <React.StrictMode>
 <ハッシュルーター>
  <スイッチ>
  {
   routerConfig.routes.map((ルート) => {
   戻る (
    <ルートキー={route.path} {...route} />
   )
   })
  }
  </スイッチ>
 </ハッシュルーター>
 </React.StrictMode>,
 ドキュメント.getElementById('ルート')
)

router/index.ts ファイルの設定

'@/pages/blogs/index' から BlogsList をインポートします。
'@/pages/blogs/detail' から BlogsDetail をインポートします。

エクスポートデフォルト{
 ルート: [
 { 正確: true、パス: '/'、コンポーネント: BlogsList },
 { 正確: true、パス: '/blogs/detail/:article_id'、コンポーネント: BlogsDetail },
 ]、
}

上記の設定を参考にして、リダイレクト、遅延読み込み、その他の一般的なルーティング設定項目などの他のプロパティを設定することができます。

さらに、私は個人的には構成を通じてルートを生成することを好み、従来のルーティングは常に不便に感じます。

サービス管理

すべてのプロジェクトリクエストはサービスに投入されます。以下に示すように、各モジュールに対応するファイル管理を行うことをお勧めします。

'./information' から * を情報としてインポートします
'./base' から * をベースとしてインポートします。

輸出 {
 情報、
 ベース
}

これによりリクエスト管理が容易になります

base.tsは、特別なビジネス処理を処理できるビジネスリクエストクラスです。

'../until/request' から { request } をインポートします。

定数プレフィックス = '/api'

エクスポートconst getAllInfoGzip = () => {
 リクエストを返す({
 url: `${prefix}/apis/random`,
 メソッド: 'GET'
 })
}

統一されたリクエストメソッドとして、until/request をカスタマイズしたり、fetch や axios などのリクエストライブラリに置き換えたりすることができます。同時に、一般的なインターセプションロジックをこのメソッドにカプセル化することができます。

'qs' から qs をインポートします
「axios」からaxiosをインポートします。

インターフェースIRequest{
 url: 文字列
 パラメータ: SVGForeignObjectElement
 クエリ?: オブジェクト
 ヘッダー?: オブジェクト
 メソッド: "POST" | "OPTIONS" | "GET" | "HEAD" | "PUT" | "DELETE" | 未定義
}

インターフェースIResponse{
 カウント: 数
 errorMsg: 文字列
 分類: 文字列
 データ: 任意
 詳細: 任意
 画像?: オブジェクト
}

エクスポートconst request = ({ url, params, query, header, method = 'POST' }: IRequest): Promise<IResponse> => {
 新しい Promise を返します ((resolve, reject) => {
  axios(クエリ? `${url}/?${qs.stringify(query)}`: url, {
   データ: パラメータ、
   ヘッダー: ヘッダー、
   方法: 方法、
  })
   .then(res => {
    解決(res.data)
   })
   .catch(エラー => {
    拒否(エラー)
   })
 })
}

具体的な一般的なインターセプトについては、axios 構成を参照するか、独自のビジネス ニーズに合わせて自分で書き直してください。

ここで axios を使用して構築されたリソースに問題があります。直接使用しないでください。以前のリクエストのカプセル化を参照して、fetch に置き換えてください。クラスメートが正常に構築した場合は、メッセージを残してください = =!

特定の業務を開発して使用する場合、モジュール名に従ってインポートすることができ、対応するインターフェースモジュールを簡単に見つけることができます。

「@/service/index」から { 情報 } をインポートします。

const { data } = information.getAllInfoGzip({ id }); を待機します。

この一連のルールは、ストア、ルーター、ユーティリティなど、モジュールを分解できる場所にも適用できるため、プロジェクトのメンテナンスに役立ちます。

上記は、プロジェクトのビジネス開発構成と合意の一部です。学生は、自分のチームの規則や好みに応じてこれらを変更できます。

その他の構成

これは主に vite.config.ts の構成と、プロジェクト全体の追加構成に関するものです。

'vite' から {defineConfig} をインポートします
'@vitejs/plugin-react-refresh' から reactRefresh をインポートします。
'vite-plugin-imp' から vitePluginImp をインポートします

デフォルトのdefineConfigをエクスポートする({
 プラグイン: [
 反応リフレッシュ()、
 vitePluginImp({
  ライブラリリスト: [
  {
   ライブラリ名: 'antd-mobile',
   スタイル(名前) {
   `antd-mobile/lib/${name}/style/index.css` を返します
   },
  },
  ]
 })
 ]、
 解決する: {
 拡張子: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json'],
 エイリアス: {
  '@': '/src'
 }
 },
 サーバー: {
 プロキシ: {
  // オプションの書き込み '/api': {
  ターゲット: 'https://www.xxx.xxx',
  変更元: true、
  書き換え: (path) => path.replace(/^\/api/, '')
  },
 }
 },
 css: {
 ポストcss: {
  プラグイン: [
  require('postcss-pxtorem')({ // px単位をrem単位に変換します。rootValue: 32, // 変換ベース、デフォルトは100なので、ルートタグのフォントサイズは1rem = 50pxに設定され、デザインドラフトから必要なpx数を測定し、コードで直接pxを追加できます。
   propList: ['*'], //プロパティセレクター、*は一般を示します unitPrecision: 5, //REM単位が拡張できる小数点以下の桁数と、小数点以下の桁数。
   exclude: /(node_module)/, // デフォルトは false ですが、正規表現を使用して特定のフォルダーを除外することができます (reg)})
  ]
 }
 }
})

基本的な内容もいくつかあります:

  • vitePluginImpはantd-mobileをオンデマンドでロードします
  • postcss-pxtoremはモバイルのpx変換を設定するためのプラグインです
  • server.proxyはプロジェクトプロキシを設定します
  • resolve.alias はエイリアスを設定します。vscode で正常に認識させるには、ts.config も設定する必要があります。
{
 "コンパイラオプション": {
 "ベースURL": "./",
 「パス」: {
  "@/*": [
  "ソース/*"
  ]
 },
}

antd-mobile を antd に置き換えたり、好みに応じて postcss を置き換えたりすることもできます。

上記の簡単な変換により、通常の小規模プロジェクト開発が実行できるようになりました。完成してお花を散りばめました!

そして、私はこの構成を使用して簡単な H5 プロジェクトを作成しました。プロジェクトが繰り返されるにつれて、テンプレートを徐々に改善していきます。

Vite で React プロジェクトを構築する手順についてはこれで終わりです。Vite で React プロジェクトを構築する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • フックを使用して React コンポーネントを書くときに注意すべき 5 つの点
  • React+Ant Design開発環境をセットアップするための実装手順
  • 入力ボックスの値を取得する方法のReactの例
  • Reactはラジオコンポーネントのサンプルコードを実装します
  • React Router で履歴リダイレクトを使用する方法
  • React Contextの理解と応用についてお話ししましょう
  • Reactフック入門チュートリアル
  • React と Threejs を使用して VR パノラマ プロジェクトを作成する詳細なプロセス
  • ReactのEffectListの簡単な分析

<<:  Hadoop におけるネームノードとセカンダリネームノードの動作メカニズムの説明

>>:  Alibaba Cloud ECS centos6.8 に MySql5.7 をインストールして設定するチュートリアル

推薦する

MySQLデータベースのリアルタイムバックアップの知識ポイントを詳しく解説

序文リアルタイムのデータベース バックアップの必要性は非常に一般的です。MySQL 自体はレプリケー...

Linux lsof コマンドの使用方法の詳細な説明

lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...

Vue Router の 10 の高度なヒントのまとめ

序文Vue Router は、Vue.js の公式ルーティング マネージャーです。 Vue.js の...

jsの継承の6つの方法を詳しく解説

プロトタイプチェーン継承プロトタイプ継承は、ECMAScript における主な継承方法です。基本的な...

Ubuntuはポート22を開きます

シナリオssh 経由で Ubuntu サーバーに接続するには、xshell ツールを使用する必要があ...

TypeScript をインストール、使用、自動コンパイルする方法に関するチュートリアル

1. TypeScriptの紹介前回の記事ではTypeScriptのインストール、使い方、自動コンパ...

ウェブデザイナーは3つの側面からウェブページを最適化する必要がある

<br />帯域幅の増加に伴い、Web ページ上のオブジェクトも増えているため、Web ...

js は丸で囲まれた数字のリストのサンプルコードを動的に追加します

1. まず本文にulタグを追加します <!-- 順序なしリスト --> <ul i...

vue3 を使用してマテリアル ライブラリを構築する方法

目次なぜマテリアルライブラリが必要なのでしょうか?材質は何ですか?素材の種類fuep、vue3 ベー...

Windows Server 2019 のセットアップ方法 (画像とテキスト付き)

1. Windows Server 2019 のインストールVmware に Windows Se...

Linux で Docker を使用して MySQL をインストールする手順

テスターとして、学習プロセス中に Linux でソフトウェアをインストールする必要が頻繁にある場合が...

Centos7でmysql6の初期化インストールパスワードをインストールする方法

1. まずデータベースサーバーを停止しますサービスmysqld停止2.vim /etc/my.cnf...

HTML Web ページ リスト タグ学習チュートリアル

HTML Web ページ リスト タグの学習チュートリアル。 HTML ページでは、リストはアウトラ...

Linux ソースコードの解析 epoll

目次1. はじめに2. シンプルなepollの例2.1、epoll_create 2.2、構造体イベ...

Mac での MySQL と Squel Pro の設定

Node.js の人気に応えて、最近、いくつかのサーバー側機能を実装するために Node.js を使...