Vite、新しいウェブパックキラー?😮
このブログを取り扱った後、私は新しい世代のバンドルに関する記事の新しいシリーズを始めました.我々は現在、Webツールの新しい時代に入っているようです.
導入したesbuild and its interesting features , それは私には“リトルブラザーズ”バンドルに対処するために論理的に思える.VEJSコミュニティからのプロジェクト、VITEから始めましょうEvan You .
With
私が前の記事で言ったように、今日は大きなJSプロジェクトを持っていることは、しばしば少し遅くなっているdevとprod環境を持つことを意味します.並列化またはメモリ最適化を十分に利用しないツールの選択、またはキャッシュを非常に活用する反復操作の間で、これらのスローネスの原因を識別するのは簡単です.
注意:いくつかの解決策を提案しました.
また、第2世代ツール(webpack、rolulup、小包のような)は最初から処理できませんでしたrecent features of our browsers like ESmodules .
革命的な考え 依存関係は頻繁に変更されませんので、各ビルドでモジュールツリーを再評価する必要はありません.我々は一度、すべてのために最適化されたツールのような我々のベンダーの束を生成することができます ソースコード内のモジュールは依存関係と異なり、多くの変更を受けます.So 自由に読むthis doc page 詳細は
ツールで少し遊ぶために、私は例プロジェクトを通して小さなプレゼンテーションを提案します.プロジェクト例を作成してみましょう.私はここでどのようにそれを作成し、あなたを置くthe link of the github repository in which I published it .
パッケージ.JSON
インデックス.HTML
嘘をつかないようにしましょう、それは少し悲しいです
src/indexCSS
あなたが現在動くならば
我々は自然にそれを観察できる
あなたが知っているかどうかわからない
ではプラグインをインストールしましょう.
だから怠惰なローディングのために明らかにそれは簡単です
明らかに
私が以前あなたに与えたデモでは、私はあなたにそれを示しませんでした
スタイル管理に関しては
より逸話
しかし、完全に私を吹き飛ばした機能はSSR .
サーバー側のレンダリングをネイティブに扱うバンドルについて話したのはこれが初めてです.私は私が開発するさまざまなアプリケーションの生産で他のツールを使用します.残念ながら、このようなアーキテクチャを設定するのは非常に複雑です.
それで、開発者が主に次のようなターンキー解決に、そして、Nuxtがそれらのためにこれらの問題を管理するようになっているのを見ることができます.これはそれ自体悪いことではない.しかし、いくつかのプロジェクトでは、ビジネスニーズのためにこの機能性を管理することが時々必要であると思います.だから私たちは幸せになることができるようなツール
このツールのこの控えめなプレゼンテーションの後、1つは質問はいを尋ねることができました.しかし、単純なルールを忘れてはいけません.
多くの選択肢
反対に
また、それを忘れてはならない
私はVuePressのようないくつかのツールが今日の選択肢を提供することを指摘したいと思いますVitepress どれが
ジャンプする前に
導入したesbuild and its interesting features , それは私には“リトルブラザーズ”バンドルに対処するために論理的に思える.VEJSコミュニティからのプロジェクト、VITEから始めましょうEvan You .
同じ出発点
With
Vite
我々はと同じ状況にあるesbuild
. グローバルなコミュニティは、現在のツールでは、いくつかのパフォーマンスの問題があっても満足している.私が前の記事で言ったように、今日は大きなJSプロジェクトを持っていることは、しばしば少し遅くなっているdevとprod環境を持つことを意味します.並列化またはメモリ最適化を十分に利用しないツールの選択、またはキャッシュを非常に活用する反復操作の間で、これらのスローネスの原因を識別するのは簡単です.
注意:いくつかの解決策を提案しました.
また、第2世代ツール(webpack、rolulup、小包のような)は最初から処理できませんでしたrecent features of our browsers like ESmodules .
何がアイデアですか?
革命的な考え
Vite
は、ビルドを最適化するために2つの異なるニーズのための2つのツールを組み合わせることです.作り上げる二つの道具Vite
are esbuild
and Rollup
, だから何も新しい.しかし、なぜ2つのバンドルツール?2つの理由から、esbuild
. このバンドルは非常に高速であり、サーバーのクイックスタートを可能にします.Vite
最近のブラウザでネイティブに動作するESMに基づく別の処理を使用します.実際に、どのように動作しますか?
ツールで少し遊ぶために、私は例プロジェクトを通して小さなプレゼンテーションを提案します.プロジェクト例を作成してみましょう.私はここでどのようにそれを作成し、あなたを置くthe link of the github repository in which I published it .
mkdir "example-vite"
cd "example-vite"
git init
yarn init -y
インストールVite
非常に簡単ですが、あなただけの依存関係が必要です.yarn add -D vite
この例の目的のために、私は、反応による例を提案します😉 )yarn add react react-dom
つの通常のコマンドを起動するVite
にpackage.json
ファイルパッケージ.JSON
{
"scripts": {
"dev": "vite",
"build": "vite build",
"serve": "vite preview"
}
}
最後に、いくつかの小さなソースファイルが必要ですVite
遊ぶ.インデックス.HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Example Application with Vite</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
src/main日本学術振興会import React from 'react'
import ReactDOM from 'react-dom'
ReactDOM.render(
<React.StrictMode>
<h1>Hello world dear readers ! </h1>
</React.StrictMode>,
document.getElementById('app')
)
今、あなたはこのコマンドで開発サーバーを起動しなければなりません.yarn dev
🎉 通常、ミリ秒以内にVite
サーバーを起動してhttps://localhost:3000
それは、この美しいアプリケーションを提示します.
嘘をつかないようにしましょう、それは少し悲しいです
Vite
いくつかのCSSを追加します.美しい色をしましょうchartreuse このタイトルに.次のスタイルシートを追加しましょう.src/indexCSS
h1 {
color: chartreuse;
}
それから、我々はちょうどこの新しいファイルに輸入を加える必要があります.src/main日本学術振興会import './index.css'
今、あなたは美しい色を持っているclearly lacks contrast to be accessible !
あなたが現在動くならば
yarn build
コマンド、あなたはそれを見ることができますVite
あなたを構築するdist
フォルダ.任意の設定なしで、これらの異なるリソースを静的サーバーに配備する準備ができています.
我々は自然にそれを観察できる
Vite
2つのJavaScriptバンドル(ソースのための1、ベンダー/依存のための1)とあなたのアプリケーションで輸入されたスタイルをエクスポートするCSS束をエクスポートします.そしてこれは明らかにVite
他のツールの競争と比較して(しかし、小包は、同じ論理のいくつかを提供します).ビルドは非常に高速であり、それを設定することなく行うには何を期待します.すみませんが、それは素晴らしいと思います!あなたが知っているかどうかわからない
react-refresh
, あなたが反応アプリケーションの自動更新を最適化することができます公式反応パッケージ.このパッケージでは、それらの状態を失うことなく、オンザフライであなたの反応成分を更新することができます.Vite
それがVuejsコミュニティから生まれたとしても、特にフロントエンドフレームワークに向けられていません.ツールreact-refresh
したがって、デフォルトでは含まれません.したがって、設定で定義しなければなりません.残念ながらVite
他のツールよりも良い運賃ですプロジェクトのルートで別の設定ファイルを定義することを強いられます.ではプラグインをインストールしましょう.
yarn add -D @vitejs/plugin-react-refresh
バイバイト.設定.jsimport { defineConfig } from 'vite'
import reactRefresh from '@vitejs/plugin-react-refresh'
export default defineConfig({
plugins: [reactRefresh()],
})
今、私は品質のバンドルから期待できる高度な機能のいくつかをテストしたかった.それで、私は怠惰なローディングを使用する一つのページ・アプリケーションをセットアップしました.私は、私がこの記事でそれをした方法をあなたに示しませんtest it in your browser .だから怠惰なローディングのために明らかにそれは簡単です
Vite
, 私は驚いた!ツールはすぐに動的インポートの私の使用を検出しますimport()
JSに対して別々のチャンクを生成します.const Content = React.lazy(() => import('./lazy'))

VITEの強み
明らかに
Vite
多くの良い機能と利点があります.その驚くべき速度の他に、私はこのバンドルが本当によく考え出された自動設定を提供することに注意したいです.私が以前あなたに与えたデモでは、私はあなたにそれを示しませんでした
Vite
ネイティブとネイティブの設定静的ファイル、Webワーカー、ワムバイナリなし.しかし、それは停止しません、我々は、この魔法のツールもネイティブにJSXとTypesScriptをサポートしていることを認めざるを得ない.スタイル管理に関しては
Vite
されません.任意のプラグインや設定なしで、それはあなたがCSSを管理することができます@imports
, SASSとlessのようなプリプロセッサ、CSSモジュール、postプロセッサpostcssでさえも(設定を定義する場合).より逸話
Vite
知っている方法を管理する.env
環境変数を管理するファイルdotenv .しかし、完全に私を吹き飛ばした機能はSSR .

サーバー側のレンダリングをネイティブに扱うバンドルについて話したのはこれが初めてです.私は私が開発するさまざまなアプリケーションの生産で他のツールを使用します.残念ながら、このようなアーキテクチャを設定するのは非常に複雑です.
それで、開発者が主に次のようなターンキー解決に、そして、Nuxtがそれらのためにこれらの問題を管理するようになっているのを見ることができます.これはそれ自体悪いことではない.しかし、いくつかのプロジェクトでは、ビジネスニーズのためにこの機能性を管理することが時々必要であると思います.だから私たちは幸せになることができるようなツール
Vite
考えたことがある.私はあなたを招待するread this page of the documentation of Vite
これを実装する方法を理解するには.それで、我々はWebpackを使うのを止めます?
このツールのこの控えめなプレゼンテーションの後、1つは質問はいを尋ねることができました.しかし、単純なルールを忘れてはいけません.
Everything that a tool tends to do magically for you often becomes much more complicated to customize.
多くの選択肢
Vite
開発者の経験を改善するために少し心配しているようだ.私はこのすべてのデフォルトの設定は、Vite
チーム.反対に
esbuild
モットーを持っている“私はいくつかのことが非常によくするツールを提供したい”と、我々はここに多くの約束をするツールがあります.しかし、私たちはVite
また、プラグインを使用して、その機能を拡張するには、メインツールにネイティブにせずに定義します.また、それを忘れてはならない
Vite
に基づいてRollup
, ほとんど互換性があるプラグインの豊かな生態系から利益を得る第2世代バンドル.しかし、ロールラップの設定は非常に編集し、維持するため、複雑なので、あなたがテストするように誘惑されている場合はそれに触れる必要はありません願っていますVite
アプリケーションで.私はVuePressのようないくつかのツールが今日の選択肢を提供することを指摘したいと思いますVitepress どれが
Vite
バンドルとして.ジャンプする前に
Vite
解決策として、3つ目の世代のバンドルをテストすることをお勧めします.Snowpack Stay tuned!
Reference
この問題について(Vite、新しいウェブパックキラー?😮), 我々は、より多くの情報をここで見つけました https://dev.to/slashgear_/vite-a-new-webpack-killer-162gテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol