Webpack入門チュートリアル(学習ノート)
1 、はじめに
このチュートリアルはまた、多くの複雑なものが削除されており、初心者が webpack のシステムを簡単に理解して、webpack をより深く学ぶことができるように、記録は最も単純であることを主張しています。
Webpack は、各モジュール間の依存関係を自動的に分析し、これらの依存関係を 1 つ以上のファイルにパッケージ化します。 webpack の最も強力な点は、公式およびサードパーティのプラグインとローダーを通じてさまざまなファイルを解析およびコンパイルできることです。 Webpack
4 つの最も重要なコア概念: エントリー(エントリー)、アウトプット(出力)
、ローダー(ローダー)、プラグイン(プラグイン)、以下では、メモを取りながらいくつかの概念の意味を説明するために最善を尽くします。さらに詳しく知りたい場合、またはメモで不明な点がある場合は、公式 Web サイトのドキュメントで確認してください。
2、entry(entry) webpack
の入り口は、のindexに相当しますWeb ページ ファイルとエントリ ファイルを使用すると、webpack
はどこから開始するかを判断し、このエントリ ファイルに基づいてエントリ ファイルが依存するすべてのファイルを分析し、すべての依存ファイルを 1 つ以上にパッケージ化します。ファイル。
webpackは、単一エントリ構文とオブジェクト構文を提供します。シングル エントリ構文も最も単純で、エントリ ファイルが 1 つだけ (入力と出力が 1 つ) だけです。たとえば、以下のようなものです。 1 {2 entry: './index.js'3 }
オブジェクトの構文は、主に複数のページを持つアプリケーション向けであり、パッケージ化が完了すると、これら 3 つのファイルが存在することを webpack に伝えます。 . 各ファイルには、依存するファイルのみが含まれます。例: 1 {2 entry: {3 hello1: './hello1.js',4 hello2: './hello2.js'5 }6 }
3、输出(output)
webpack提供了output属性,来控制webpack如何把编译好的文件写入到硬盘中,输入和输出是对应的,有输入就有输出。但是必须注意一点,可以存在多个输入,但是只能存在一个输出,那怎么来输出多个独立的编译好的文件呢?webpack中当然有应对的机制。
webpack要求output属性为对象,并且必须包含两个属性:filename、path。顾名思义filename即输出文件的文件名,而path则为输出文件的绝对路径(注意,path必须为决定路径)。
单个入口output属性写法:
1 {2 entry: './index.js',3 output: {4 path: path.resolve(__dirname, 'app'), //path为nodejs自身的库。__dirname为nodejs在运行过程中的一个环境变量,里面是当前文件夹的完整目录名。resolve方法是把相对路径的app目录解析为一个决定路径。5 6 filename: 'bundle.js'7 }8 }
webpack内置了多个变量来应对多个入口文件,如[name]、[hash]、[id]、[chunkhash],通过变量来保证每个文件的唯一性来达到生成多个文件,在生成过程中webpack会把这几个变量替换为相应的字符串用于保证文件的唯一性。
多个入口output属性写法:
1 {2 entry: './index.js',3 output: {4 path: path.resolve(__dirname, 'app'),5 filename: [name]-[hash]-bundle.js6 }7 }
4、加载器(loader)
loader可以对不同类型的文件进行编译转换,比如jsx、typescript直接拿在浏览器上运行是不能运行的,那么我们在编写程序的时候需要借助jsx以及typescript等高效的库来提高我们编写程序的效率,但是我们又需要能正常使用,如果每种文件类型我们都通过一种转换工具,那么就显的很麻烦,所以laoder就是来处理这样的工作。
首先在使用loader的时候我们需要安装相应的插件,比如es2015,那我们安装babel-loader,如果是css,那我们安装css-loader,通过下面的module属性里面的rules数组来对需要转换的文件设置loader。
1 { 2 entry: './index.js', 3 output: { 4 path: path.resolve(__dirname, 'app'), 5 filename: [name]-[hash]-bundle.js 6 }, 7 module: { 8 rules : [ 9 {test: /\.js$/, use: 'babel-loader'}10 ]11 }12 }
上面的rules是一个数组,每个元素是一个对象,对象里面包含了两个属性test、use,test的值是一个正则表达式,它的作用是将当前loader用于什么文件,这里正则表达式就是用来匹配你需要转换的文件类型,use是当前匹配到的文件用什么加载器来转换、编译。
有三种方式来使用loader加载器
1、webpack配置文件
2、require语句中使用
3、通过命令行使用
第一种上面我们已经说了,下面简单的介绍一下第二种和第三种,第二种使用方法是我们在require或者import文件的时候可以直接使用,比如下面的代码:
1 require('babel-loader!./hello.js')
或者
1 Import('babel-loader!./hello.js')
第三种方式是直接通过webpack提供的命令行工具—module-bind使用,比如下面的代码:
1 webpack —module-bind 'js=babel-loader'
5、插件(plugin)
插件用于解决loader无法解决的事情,比如给每个js文件进行添加著作标记、压缩文件等功能,每个插件都可能有参数选项,每个插件在使用的时候也必须使用new操作符来建立一个插件的实例。插件通过plugins属性来设置,plugins是一个数组,每个元素代表一个插件的实例。因为插件有官方的还有第三方的,所以不会一一去说怎么使用,只是给大家简单演示一下,大家需要用到哪个插件再去查这个插件的api。
1 const HtmlWebpackPlugin = require('html-webpack-plugin'); 2 //首先要使用插件,必须先引入插件 3 4 { 5 entry: './index.js', 6 output: { 7 path: path.resolve(__dirname, 'app'), 8 filename: [name]-[hash]-bundle.js 9 },10 module: {11 rules : [12 {test: /\.js$/, use: 'babel-loader'}13 ]14 },15 plugins: [16 new HtmlWebpackPlugin({telmplate : './index.html'}) //通过plugins来使用你需要使用插件。17 ]18 }
6、总结
通过上面的学习,你可以了解到webpack的四个核心,入口、输出、加载器、插件,入口就是你要编译的是哪个文件,指定了过后webpack会自行寻找依赖的文件打包编译。输出就是编译转换好了过后把文件写入到硬盘的哪里。加载器就是对不同类型的文件转换,从而让浏览器能直接运行。插件做的是loader无法解决的事情。
其实webpack的配置并没有想象中的那么复杂,webpack的配置文件就是一个js文件,只要对webpack有一个系统的认识后,你就知道我该从哪里下手,该从哪里入手了。
以上が初心者は Webpack を何から始めるべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
