目次
webpack-dev-server をインストールして構成する
html-webpack-plugin をインストールして構成する
ウェブパックを知る
初期のフロントエンド開発では、HTML + CSS + JavaScript を使用できます. これらをブラウザーに投げ込むと、ブラウザーは Web ページを表示します.
後期には、フロントエンドをより速く開発するために、DOM を操作するための jquery、css を操作するための Less など、多くのライブラリが生成されました。それを知りません、そしてそれは学びませんでした。
現時点では、これらの言語をブラウザに「翻訳」するツールをいくつか使用する必要があります. 1 つまたは 2 つでも構いません. 小さなツールが多すぎると、メンテナンスが面倒になるだけでなく、操作も面倒になります. このときその時、webpackが誕生しました。これらのコンパイル ガジェットを一元的に管理するには、webpack を使用します。これは、大きなツールが一連の小さなツールを管理し、大きなツールのみを管理する必要があると理解できます。
Webpack は、フロントエンド アセットおよび静的モジュール バンドラーのビルド ツールです。圧縮、マージ、および互換性の問題を提供します
webpackの基本的な使い方
必要がない場合は、関連する構成を自動的に生成するためのスクリプト フレームがあります. ここでは、主にプロジェクトの作成プロセスと webpack を体験します。
1. 空のプロジェクト フォルダを作成します ---完全な英語名、ここでは名前は Demo です
2. 現在のファイルのターミナルに入り、npm init -y を実行してパッケージ管理構成ファイルを初期化します.このとき、空のフォルダーにpackage.jsonファイルが自動的に生成されます.
[npm が何のコマンドかわかりませんが、それは問題ではありません。まず node.js について学ぶことができます。node.js は主に、JS 言語を解析するためのブラウザーのエンジンを分離し、ブラウザーなしで JS を実行できるようにします。npm コマンドは node.js に統合されており、主にノード プラグインの管理 (インストール、アンインストール、依存関係の管理などを含む) に使用されます。】
3. プロジェクト フォルダーに新しい src フォルダーを作成し、その中に新しい index.html ホームページと index.js スクリプト ファイルを作成します。
4. htmlファイルを初期化 [vscodeのショートカットキー(!+タブ)]、複数のリストなど関連する構造を書く
<body>
<ul>
<li>这是第1个li</li>
<li>这是第2个li</li>
<li>这是第3个li</li>
<li>这是第4个li</li>
<li>这是第5个li</li>
<li>这是第6个li</li>
<li>这是第7个li</li>
<li>这是第8个li</li>
<li>这是第9个li</li>
</ul>
</body>
5.現在のプロジェクトのターミナルで npm install jquery -S を実行して、ページ構造をすばやく操作するための jquery をダウンロードします。[-S は --save の略で、package.json ファイルの「dependencies」配下にパッケージ情報を記述]
6. index.jsファイルで、import $ from 'jquery' を介してjquery ライブラリをインポートし [' ' 番号を忘れずに持ってきてください]、シングル リストとダブル リストのインターレースされた色の変化を実現するなど、関連する操作を記述します。
import $ from 'jquery'
$(function(){
$('li:odd').css("background-color","red")
$('li:even').css('background-color','pink')
})
7. このとき、ブラウザが jquery 構文を認識できないため、 html の head タグに <script src="./index.js"> </script>をインポートして実行すると問題が発生します。したがって、リストの形式は変更されていません。
この問題を解決するには、webpack を使用します。
8. webpack をインストールし、プロジェクト ターミナルで次のコマンドを実行して、webpack 関連のパッケージ ファイルをインストールします。
npm install [email protected] [email protected] -D
-D package.json ファイルの「devDependencies」の下にファイルを書き込みます
-S と -D の違いは、一方は開発でのみ使用され、プロジェクトが正式に開始されたときには存在しないことです。
9. プロジェクトのルート ディレクトリで、 webpack.config.jsという名前の構成ファイルを作成し、次の構成を初期化します。
module.exports = {
mode: 'development'
}
//mode 用来构建模式的可选值有两个
// 1.development 开发环境,不会对打包生成的文件进行代码压缩和性能优化,且打包速度快,
// 适合在开发阶段使用。
// 2.production 生产环境,会对打包生成的文件进行代码压缩和性能优化,且打包速度很慢,
// 仅适合在项目发布阶段使用。
webpack.config.js は webpack の構成ファイルであり、webpack は実際にパッケージ化およびビルドを開始する前にこの構成ファイルを読み取り、指定された構成に基づいてプロジェクトをパッケージ化します。
10. package.json ファイルの scripts ノードの下にスクリプトを追加します。
"scripts": {
"dev": "webpack"
}
//dev只是个名称,可以更具自己的喜好更改
11.プロジェクト ターミナルでnpm run devを実行します。
webpack のデフォルトのパッケージング エントリ ファイルは src の下の index.js ファイルであり、デフォルトの出力ファイル パスは自動生成された dist の下の main.js ファイルです。
12. html の <script> 内の src ファイルのアドレスを変更、<script src="../dist/main.js"></script>
13.この時点で再度実行すると、成功したことがわかります。
補充する
npm run devを実行すると 、まず webpack.config.jsの構成ファイルを読み込んでから webpack を実行するという機能を利用して、さらに修正や調整を行うことができます。
webpack のデフォルトのパッケージング エントリはsrc->index.js であり、 デフォルトの出力ファイル パスはdist->main.js です. webpack.config.js 構成ファイルのエントリ ノードを介してパッケージング エントリを指定し、出力ノードを介したパッケージング出口
const path =require('path') // 导入node.js中的专门操作路径的模块
module.exports={
entry:path.join(__dirname,'./src/index.js'), //打包文件的入口文件的路径
output:{
path:path.join(__dirname,'./dist'), //出口
filename:'main2.js'},
mode:'development'
}
dist フォルダーの下に新しい js ファイルが表示されます。
上記の段階で、 index.jsのコードを少し変更できる限り、変更されたページを表示するには再度実行する必要があることがわかります. 怠惰なプログラマーにとっては、この業界を直接あきらめる可能性があります. 非常に友好的ではありません. コードページを変更したらすぐに変更を確認したいと考えています。したがって、この問題を解決するために、webpack には 2 つのプラグインが用意されています。webpack-dev-serverとhtml-webpack-plugin をダウンロードして設定するだけです。
webpack-dev-serverをインストールして構成する
ダウンロード: npm install webpack-dev-server -D [ここに @ で指定されたバージョンはなく、デフォルトで最新バージョンがインストールされます。資格のあるプログラマーは、最新バージョンに追いつき、起こりうる問題を解決する必要があります]
構成: package.jsonの script コマンドを変更します--> scripts [ここで名前が変更され、dev が test に変更されますが、実際には効果はありません]
再実行: npm run test
この時、ターミナルはそのまま終了せず待機状態ですが、 index.js内のコードを修正すれば、webpackのパッケージング操作は自動で行われます。
ただし、問題が発生します。変更に応じてページが変更されていないことがわかります。これは、vscode の開始方法がファイル プロトコルであり、http://localhost:8080/を介してアクセスする必要があるためです。
しかし、問題は再び発生し、アドレスを入力した後、ブラウザーは目的のインターフェイスにアクセスできなかっただけでなく、見事に 404 をスローしました。【なぜ習ったことと違うのか、ウザい】
npm run test が実行されているときのプロンプトを 確認するために戻ってみましょう。何も表示されていないようです。. . . [これは、新しいバージョンによってもたらされた痛みかもしれません]。情報を検索すると、 webpack.config.jsで関連する設定を行う必要があることがわかりました。
module.exports={
entry:path.join(__dirname,'./src/index.js'), //打包文件的入口文件的路径
output:{
path:path.join(__dirname,'./dist'), //出口
filename:'main.js'},
mode:'development',
devServer: {
static:'./',//根目录,需要点击进入src才能查看
//static:path.join(__dirname, 'src'),//可以直接访问到src页面,实现页面的实时查看。
host: "localhost",
port: 8080,
hot: true,
},
}
static:path.join(__dirname, 'src') を設定することで、src ページに直接アクセスし、ページのリアルタイム表示を実現できます。html-webpack-pluginをインストールする必要はありません。これは、新しいバージョンの利点である可能性があります。. .
補足【重要!! ! ] : npm run test は、ブラウザが webpack を介して認識できるテキストに js ファイルを書き換えます。webpack-dev-serverプラグインは、パッケージ化された js ファイルをメモリに直接保存するため、高速なパッケージング アクセスを提供できます [ディスク上ではアクセスできませんが、ブラウザの入力ファイル名で確認できます]。 we html ファイルの <script> タグを次のように変更する必要があります。そうしないと、以前のバージョンの js のパッケージ ファイルがまだ導入されているため、ページはそれに応じて変更されません。
html-webpack-plugin をインストールして構成する
ダウンロード: npm install html-webpack-plugin -D
プラグインを実現できる、これもインストールされています。. . 【興味のある方は独学でもOK】
webpackのローダーについて
デフォルトでは、webpack はサフィックス .js で終わるモジュールのみをパックして処理でき、.css ファイルなどの他のモジュールは処理できません.このとき、ローダーを呼び出して通常どおりパッケージ化する必要があります.
import './index.css' がindex.jsファイルにインポートされているが、ローダーが呼び出されていない場合、次のエラーが発生します。
css ファイルのパッケージ化と処理
1. npm i style-loader css-loader -Dを実行し てプラグインをインストールします
2. webpack.config.jsファイルのmodule.exportsにルールmodule->rulesを追加します。
module:{
rules:[
{test:/\.css$/,use: ['style-loader','css-loader']}
]
}
//test表示要处理的文件类型,use表示使用的loader,有先后顺序,
//先经过css-loader处理再转交给style-loader处理,最终合并到js文件中
より少ないファイルをパッケージ化して処理する
1. npm i less-loader less -Dを実行し てプラグインをインストールします
2. webpack.config.jsファイルのmodule.exportsにルールmodule->rulesを追加します。
module:{
rules:[
{test:/\.less$/,use: ['style-loader','css-loader','less-loader']}
]
}
//less-loader内部已经使用了less,无需再调用,注意调用顺序
URL 関連ファイルをスタイル シートにパッケージ化する
1. npm i url-loader file-loader -Dを実行し てプラグインをインストールします
2. webpack.config.jsファイルのmodule.exportsにルールmodule->rulesを追加します。
module:{
rules:[
{test:/\.jpg|png|gif$/,use: 'url-loader?limit=4399'}
]
}
//会将小于4399字节的图片转为base64格式,这样可以直接读取到图片,防止小图片频繁的进行请求
js で高度な構文を処理する
デコレーターの構文など、js の構文が高度すぎて webpack が理解できない場合は、ローダー プラグインを使用してこの問題を解決できます。
1、npm i babel-loader @babel/core @babel/plugin-proposal-decorators -D
2. webpack.config.jsファイルのmodule.exportsにルールmodule->rulesを追加します。
module:{
rules:[
{test:/\.js$/,use: 'babel-loader',exclude:'/node_modules/'}
]
}
//只要处理自己写的js文件就行,像第三方库中的js文件,它们本身就会做兼容性的处理,不需要我们担心
3. babel を設定し、ルート ディレクトリに新しい babel.config.js を作成します。
module.exports={
"plugins": ["@babel/plugin-proposal-decorators"]
}
//相当于插件的插件
プロジェクトリリースについて
新しいスクリプトを作成し、npm run buileを実行して、生成された js ファイルをメモリではなくローカル ディスクに保存します。このとき、処理のために dist ファイルをバックエンドに渡すだけです。
"scripts": {
"test": "webpack serve ",
"build": "webpack --mode production"
},
ブラウザで問題のエラーを解決します。行番号が問題に対応していません