プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装

プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装

Vite がバージョン 2.x をリリースしました。学習目的で簡単なプロジェクトを作成することにしました。フロントエンド開発者なら必ず知っておくべき element-plus と typescript を組み合わせて、以下の内容を実装しました。

vite は、ネイティブ ESM を搭載した Web 開発ビルド ツールです。開発環境ではブラウザのネイティブESインポートをベースに開発し、本番環境ではRollupをベースにパッケージ化します。

バイト機能

  • 高速コールドスタート:パッケージング操作を待つ必要はありません。
  • 即時ホット モジュール アップデート: 交換パフォーマンスとモジュール数量を切り離すことで、アップデートが高速化されます。
  • 真のオンデマンド コンパイル: アプリケーション全体がコンパイルされるまで待つ必要がなくなりました。これは大きな変化です。

使用環境

  • ノードv12.19.0
  • @vue/cli 4.5.8

プロジェクトを構築する

npm init vite-app <プロジェクト名>
cd <プロジェクト名>
npmインストール
npm 実行 dev

または

yarn create vite-app <プロジェクト名>
cd <プロジェクト名>
糸
糸開発

構成

vite.config.ts

vite.config.ts は @vue-cli プロジェクトの vue.config.js と同等です。

「path」からパスをインポートします。

const pathResolve = (pathStr: 文字列) => {
  path.resolve(__dirname, pathStr) を返します。
}

定数設定 = {
  base: './', // 本番環境で提供する際の基本パブリックパス。 @デフォルト '/'
  エイリアス: {
    '/@/': パスを解決します('./src'),
  },
  outDir: 'vite-init', // ビルド出力が配置される場所。ビルド前に古いディレクトリは削除されます。 @default 'dist'
  minify: 'esbuild', //ビルド時の圧縮方法 hostname: 'localhost', //ローカルサービスアドレス port: '8800', //サービスポート番号 open: false, //サービス起動時にブラウザでhttpsを開くかどうか: false, //httpsを開くかどうか
  ssr: false, //サーバー側でレンダリングするかどうか optimizeDeps: { //サードパーティの設定を導入 include: ['axios']
  },
  // proxy:{// プロキシ設定 // '/api': {
  // ターゲット: 'http://xx.xx.xx.xx:xxxx',
  // 変更元: true、
  // ws: true、
  // 書き換え: (path: string) => { path.replace(/^\/api/, '') }
  // }
  // }
}
モジュールをエクスポートします。

tsconfig.json

{
  "コンパイラオプション": {
    "target": "ES5", // ECMAScript のターゲット バージョンを指定します: 'ES3' (既定値)、'ES5'、'ES2015'、'ES2016'、'ES2017'、'ES2018'、'ES2019'、'ES2020'、または 'ESNEXT'。
    "module": "commonjs", // モジュール コード生成を指定します: 'none'、'commonjs'、'amd'、'system'、'umd'、'es2015'、'es2020'、または 'ESNext'。
    "strict": true, // すべての厳密な型チェック オプションを有効にするかどうか。
    "baseUrl":"./", // 絶対でないモジュール名を解決するために使用されるベース ディレクトリ。
    「パス」: {
      "/@/*": ["./src/*"]
    },  
    "noImplicitAny": true, //暗黙的な 'any' 型を持つ式と宣言に対してエラーを発生させます。
    "esModuleInterop": true, //すべてのインポートに対して名前空間オブジェクトを作成して、CommonJS モジュールと ES モジュール間の相互運用性を有効にします。 「allowSyntheticDefaultImports」を意味します。
    "experimentalDecorators": true, // ES7 デコレータの実験的なサポートをサポートします。
    "skipLibCheck": true, //宣言ファイルの型チェックをスキップします。
    "forceConsistentCasingInFileNames": true // 同じファイルへの大文字と小文字の不一致な参照を無効にします。
  }
}

アプリ.vue

app.vue を変更する

<テンプレート>
  <img alt="Vue ロゴ" src="./assets/logo.png" />
  <ルータービュー />
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: 'アプリ'、
  設定() {

  }
}
</スクリプト>

ビュー

srcの下に新しいviewsフォルダを作成し、そのフォルダにindex.vueを作成します。

<テンプレート>
  <HelloWorld :msg="メッセージ"></HelloWorld>
</テンプレート>

<script lang="ts">
「/@/views/HelloWorld.vue」からHelloWorldをインポートします。
「vue」からdefineComponentをインポートします。
エクスポートデフォルトdefineComponent({
  名前: "ホーム",
  コンポーネント: { HelloWorld },
  設定() {
    戻る {
      メッセージ: 「こんにちは世界」、
    };
  },
});
</スクリプト>

PS: .vueファイルをインポートするときは、必ずサフィックスを付けてください。そうしないと、ファイルが見つからないと報告されます。

viewsフォルダにHelloWorld.vueを作成します。

<テンプレート>
  <h1>{{ メッセージ }}</h1>
  <button @click="realTime.count++">カウントは: {{ realTime.count }}</button>
  <button @click="handleclick">クリックすると他のルートにジャンプします</button>
  <p>ホット モジュール置換をテストするには、<code>components/HelloWorld.vue</code> を編集します。</p>
</テンプレート>

<スクリプト>
「vue」から、defineComponent、reactive をインポートします。
'vue-router' から { useRouter } をインポートします。
エクスポートデフォルトdefineComponent({
  名前: 'インデックス'、
  プロパティ: { メッセージ: { タイプ: 文字列、デフォルト: 'vue3 へようこそ' } },
  セットアップ(プロパティ) {
    定数ルーター = useRouter();
    realTime = reactive({ count: 0 } とします);

    関数handleclick() {
      router.push({ パス: '/other' })
    }
    戻る {
      メッセージ: props.msg、
      リアルタイム、
      ハンドルクリック
    }
  }
})
</スクリプト>

ルーター

srcの下に新しいルーターフォルダを作成し、そのフォルダにindex.tsを作成します。

'vue-router' から {createRouter、createWebHistory、RouteRecordRaw} をインポートします。

const ルート: Array<RouteRecordRaw> = [
  {
    パス: '/'、
    コンポーネント: () => import("/@/views/index.vue")
  },
]

エクスポートデフォルトcreateRouter({
  履歴: createWebHistory(),
  ルート
})

メイン.ts

元の main.js を main.ts に変更します。変更後、index.html も main.ts に変更することを忘れないでください。

'vue' から {createApp} をインポートします。
'./router/index' からルーターをインポートします
'./App.vue' からアプリをインポートします。
'element-plus' から ElementPlus をインポートします

'element-plus/lib/theme-chalk/index.css' をインポートします。
'./reset.css' をインポートします

const app = createApp(App);
app.use(ElementPlus);
app.use(ルーター);
app.mount('#app');

注意深い学生はこの時点で発見したかもしれません:.vueファイルがtsファイルに導入されると次のエラーが発生しますが、コードの通常の動作には影響しません。

エラーの理由: Typescript は .ts ファイルのみを理解でき、.vue ファイルは理解できません

解決策: プロジェクトのルート ディレクトリまたは src フォルダーに、サフィックスが .d.ts のファイルを作成し、次の内容を記述します。

モジュール '*.vue' を宣言します { }
モジュール '*.js' を宣言します
モジュール '*.json' を宣言します。
モジュール '*.svg' を宣言します
モジュール '*.png' を宣言します
モジュール '*.jpg' を宣言します
モジュール '*.jpeg' を宣言します
モジュール '*.gif' を宣言します
モジュール '*.bmp' を宣言します
モジュール '*.tiff' を宣言します

プロジェクトが完了したので、安心してコードを記述できます。

vite+vue3.0+ts+element-plus クイックプロジェクト構築の実装に関するこの記事はこれで終わりです。vite+vue3.0+ts+element-plus 構築に関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Viteはプロジェクトを構築し、マイクロフロントエンドをサポートします
  • この記事では、Viteがブラウザのリクエストに対して何を行うかを説明します。
  • Vite+ElectronでVUE3デスクトップアプリケーションを素早く構築
  • 古い Vue プロジェクトに Vite サポートを追加する方法
  • Vite2.0の落とし穴
  • Vue3.0+vite2は動的非同期コンポーネントの遅延読み込みを実装します
  • vite+vue3+element-plus プロジェクトをビルドする手順
  • Viteの原理を学ぶ

<<:  MySQL でデータをクエリし、条件に基づいて別のテーブルに更新する方法の例

>>:  Tomcatサーバーのセキュリティ設定方法

推薦する

Dockerカスタムネットワークコンテナ相互接続

目次序文-リンクカスタムネットワーク質問する序文前回は、 -Linkパラメータを使用してコンテナ間の...

docker-compose を使用して mongodb と mysql を構築する詳細なプロセス

docker-compose で mongodb と mysql を構築する詳細な方法を見てみましょ...

CSSスプライト技術は複数の背景を1つのPNG画像に統合しますCSSポジショニング

アメリカのYAHOOがページ制作で使用している画像統合技術。これらのアイコン、列背景、画像ボタンを定...

cobbler ベースの Linux システムを自動的にインストールする

1. コンポーネントをインストールする yum install epel-rpm-macros.no...

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決します

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決しますコード例: var...

CSS ボックスモデル内のパディングと略語の詳細な説明

上図のように、パディング値は時計回り(右上、右下)の複合属性であり、パディングの内側の余白がボックス...

Vueはページに透かし効果を追加する機能を実装します

最近、あるプロジェクトに取り組んでいたとき、ページに透かし効果を追加するように依頼されました。さっそ...

HTML tbody の使用

構造化テーブル (IExplore のみ) 1) 行ごとにグループ化<thead> .....

Linux ネットワーク システムの紹介

目次ネットワーク情報ホスト名を変更するDNSドメイン名解決ネットワーク関連コマンドファイアウォール暗...

MySQL/MariaDB ルートパスワードリセットチュートリアル

序文パスワードを忘れることは、よく遭遇する問題です。MySQL または MariaDB データベース...

Dockerを使用してSonarQubeをインストールする詳細なチュートリアル

目次1. イメージをプルする1.1 関連するイメージをプルして実行する1.1.1 関連する画像を取得...

HTMLタグの説明

HTMLタグの説明1. HTMLタグタグ: !DOCTYPE説明: HTML ドキュメントが準拠する...

入力選択スタイルを変更する CSS 疑似クラスのサンプルコード

注: この表はW3Schoolチュートリアルから引用したものです疑似要素の分類と機能: 入力選択スタ...

Docker 自動ビルド 自動ビルド実装プロセス図

自動ビルドとは、Docker Hub を使用して、Dockerfile ファイルを含む GitHub...

jQueryでフルスクリーンスクロール効果を実現

この記事の例では、フルスクリーンスクロールを実現するためのjQueryの具体的なコードを参考までに共...