序文毎日鳩、火ばさみ劉明 これは 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)}) ] } } }) 基本的な内容もいくつかあります:
{ "コンパイラオプション": { "ベースURL": "./", 「パス」: { "@/*": [ "ソース/*" ] }, } antd-mobile を antd に置き換えたり、好みに応じて postcss を置き換えたりすることもできます。 上記の簡単な変換により、通常の小規模プロジェクト開発が実行できるようになりました。完成してお花を散りばめました! そして、私はこの構成を使用して簡単な H5 プロジェクトを作成しました。プロジェクトが繰り返されるにつれて、テンプレートを徐々に改善していきます。 Vite で React プロジェクトを構築する手順についてはこれで終わりです。Vite で React プロジェクトを構築する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Hadoop におけるネームノードとセカンダリネームノードの動作メカニズムの説明
>>: Alibaba Cloud ECS centos6.8 に MySql5.7 をインストールして設定するチュートリアル
複雑な表を作成するには HTML を使用します。複雑なテーブルでは通常、td の rowspan 属...
アメリカのYAHOOがページ制作で使用している画像統合技術。これらのアイコン、列背景、画像ボタンを定...
このシステムでは、# 記号は root ユーザーを表し、$ 記号は通常のユーザーを表します。では、ど...
序文最近、プロジェクトで :first-child を使用したのですが、すぐに思いつきました。これは...
目次react-nativeプロジェクトの初期化react-nativeプロジェクトをインストールす...
この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...
複数の条件を持つ MySQL クエリ環境: MySQL 5.7 where ステートメントに複数の ...
1. 機能: xargs は、stdin 内のスペースまたは改行で区切られたデータをスペースで区切ら...
目次1. はじめに2. インストール01. 新しい仮想マシンを作成する02. システムをインストール...
コンテンツ プロパティは CSS 2.1 で導入され、:before および :after 疑似要素...
会社のウェブサイトのアクセス数が増えてくると(1日10万PV以上)、当然MySQLがボトルネックにな...
目次1. はじめに2. ルール検証の入力モード2.1 サンプルコード2.2、フォーム項目2.3. 小...
この記事の例では、画像比較を実現するためのjQueryプラグインの具体的なコードを参考までに共有して...
1. 計算属性とは何ですか? 簡単に言えば、計算された結果が属性に保存されるもので、キャッシュとして...
この記事では、「'localhost' (10061) の MySQL サーバーに接...