半个小时,学习 Webpack

由于 JavaScript 应用程序的复杂性不断增加,构建工具已成为 web 开发中不可或缺的一部分。Bundlers 允许我们去打包、编译和管理现代 web 项目需要的众多资源文件和依赖库。

在本教程中,我们将了解 webpack,一个强大的开源打包和预处理器,可以处理大量复杂多样的任务。我们将向您展示如何去编写 modules, bundle 代码和使用一些 loader 插件。本教程为 webpack 初学者设计的,要求有一些 JavaScript 基础。

为什么选择 Webpack?

就像 web 开发的其它方面一样,构建工具的也没有一个标准。现在开发者可以在 WebpackGulpBowserifyNPM scriptsGrunt 等类似的十余种构建工具。所有这些工具在在底层实现有所不同,但总体还是非常相似的,所以大多数时候你可以根据个人喜好和开发的项目,来选择合适的构建工具。

你可以通过以下优缺点,来判断 webpack 是否合适:

优点:

  • 可以很好的用于单页应用
  • 同时支持 require()import 模块语法
  • 允许非常前沿的 code splitting 特性
  • 热加载 可以让 React、Vue.js 和其它类似框架的本地开发更快
  • 它是《2016 JavaScript 调查》中最受欢迎的构建工具

缺点:

  • 不适合 web 开发的初学者
  • 对于 CSS、图片和其它非 JS 资源文件时,需要先混淆处理
  • 文档可以再优化
  • 变化很大,甚至 2016 年的教程都已经算过时了

1. 安装

安装 webpack 最简单的方式是通过包管理器。我们将使用 npm 你也随意使用 Yarn 或其它熟悉的替代。不管是 npm 还是 Yarn,你都需要现有一个带 Node.js 的运行环境和 package.json 文件再继续。

推荐局部安装(不带 -g 标签),确保每个人运行你的项目时都是一样的 webpack 版本。

npm install webpack --save-dev
   

一旦我们安装完,最好通过 Node.js 脚本来运行 webpack,可以在添加以下代码到你的 package.json:

//...
    "scripts": {
        "build": "webpack -p",
        "watch": "webpack --watch"
    },
//...
   

现在我们可以通过在命令行输入 npm run build 来让 webpack 打包我们的文件(-p 选项可以压缩生产环境下打包后的代码)。运行 npm run watch 将启动一个进程,当检测到文件更改时,会自动打包我们的文件。

设置的最后一部分是告诉 webpack 要打包哪些文件,推荐新创建一个配置文件。

2. Webpack 配置文件

在这我们看一下配置文件最基础的写法,不要被误导 - webpack 配置文件非常强大,在不同的项目中变化很大,在某些情况下会变得非常复杂。

在你项目的根目录下新增一个名为 webpack.config.js 的文件。

webpack.config.js

var path = require('path');

module.exports = {
  entry: './assets/js/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
};
   

entry 选项告诉webpack哪个是我们 Javascript 主文件。配置 entry 有许多不同的策略,但在大多数情况一个入口就足够了。

在 output 中我们指定打包的名称和路径。在 webpack 运行完后我们将把所有 JavaScript 放在一个名为 bundle.js 的文件中,这个唯一的 script 文件可以链接在我们的 HTML 文件:

<script src="./dist/bundle.js"></script>
   

这个设置足以让我们开始,稍后我们会向其添加更多的内容,但首先让我们先来看看模块是如何工作的。


3. Webpack 模块

Webpack 提供了多种使用模块的方法,大多数时候你可以选择一个你喜欢的。 在这个教程中我们会使用到 ES6 的 import 语法。

我们想要添加一个模块来迎接我们的用户,我们创建一个名为 greeter.js 文件,将它导出为一个简单的函数

greeter.js

function greet() {
    console.log('Have a great day!');
};
//在此我向大家推荐一个前端全栈开发交流圈:582735936  突破技术瓶颈,提升思维能力
export default greet;
   

为了使用这个模块,我们必须引入它并在 entry 中调用它,你可以在 index.js 中看到配置文件。

index.js

import greet from './greeter.js';

console.log("I'm the entry point");
greet();
   

当我们 npm run build 运行打包时,在浏览器中打开我们的 HTML 可以看到:

在我们的 entry 和 greeter 模块已经编译成一个名为 bundle.js 的文件,且已经在浏览器生效。这是迄今为止发生事情的简单流程图。

4. 需要的库

我们想要让我们的应用程序在一周中的某一天问候用户,我们可以直接在我们的 greeter 模块引入 moment.js

首先,我们需要通过 npm 来安装这个库

npm install moment --save
   

在我们再次打包更新之后,在浏览器的控制台我们将收到一下信息:

这时我们的流程图是这样的:

注意,在引入库时有更高级的用法,不在本文章的范围内,你可以点这了解更多。


5.Loaders

Loader 是 webpack 在打包过程中执行任务对文件进行预处理或后处理的方式。比如它可以编译 TypeScript, 加载 Vue.js 组件,渲染模板等等。大多数 loaders 是社区编写的,受欢迎的 loaders 清单可以看这里

假设我们想要添加一个 linter 到我们的项目中去检查我们 JavaScript 代码的错误。 我们可以引入 JSHint loader 来实现,它可以捕获各种不良实践和语法错误。

首先我们需要安装 JSHint 和 webpack 的 JSHint loader:

npm install jshint jshint-loader --save-dev
   

之后我们需要在 webpack 配置文件中添加一些代码,这将初始化 loader, 告诉它要检查哪些类型的文件,以及忽略哪些文件。

webpack.config.js

var path = require('path');

module.exports = {
  entry: './assets/js/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  // Add the JSHint loader
  module: {
    rules: [{
      test: /\.js$/, // Run the loader on all .js files
      exclude: /node_modules/, // ignore all files in the node_modules folder
      use: 'jshint-loader'
    }]
  }
};
//在此我向大家推荐一个前端全栈开发交流圈:582735936  突破技术瓶颈,提升思维能力   

现在当 webpack 启动后,它将在命令行显示一个警告列表(那些我们所忽略的文件)

因为 moment.js 位于 node_modules 文件中,它不会被 JSHint loader 检测。

延伸阅读

我们对 webpack 的介绍到此为止。 因为这是一个针对初学者的课程,所以我们尝试只覆盖最有用和应该知道的 webpack 概念。 我们希望这个教程有用,不要太混乱,就像标题所说的在十五分钟内可以消化。

接下来,我们计划在本教程中添加第二部分,说明如何使用 CSS 模块和其它更高级的功能。在此期间,如果你想要学习更多关于 webpack 的信息(还有更多),我们推荐你阅读这些很棒的资源

结语

感谢您的观看,如有不足之处,欢迎批评指正。
获取资料???
本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
对web开发技术感兴趣的同学,欢迎加入Q群:???582735936 ???,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Webpack的最佳方法是按照以下步骤进行: 1. 理解前端工程化概念:Webpack是一个前端模块打包工具,它的目标是将各种资源,如JavaScript、CSS、图片等,打包成最优化的静态资源。在学习Webpack之前,建议先了解前端工程化的概念和相关工具。 2. 掌握基本概念:Webpack有一些重要的概念,如入口(entry)、出口(output)、加载器(loader)、插件(plugins)等。了解这些概念是学习Webpack的关键。 3. 阅读官方文档:Webpack有详细而全面的官方文档,可以在Webpack官方网站上找到。阅读官方文档是学习Webpack的最佳途径,因为它提供了全面而详细的解释和示例。 4. 实践项目:在学习Webpack的过程中,最好通过实践项目来巩固所知识。可以选择一个简单的项目,通过Webpack来构建和优化,逐步掌握Webpack的各项功能和配置。 5. 学习常用插件:Webpack有很多常用的插件,如HtmlWebpackPlugin、MiniCssExtractPlugin、CleanWebpackPlugin等。学习并掌握这些插件的使用方法,可以帮助你更好地使用Webpack来构建项目。 6. 参考优秀资源:除了官方文档外,还可以参考一些优秀的资源,如博客文章、视频教程、开源项目等。这些资源可以提供更多实用的示例和经验分享,帮助你更好地理解和应用Webpack。 记住,Webpack是一个强大而复杂的工具,需要花费一些时间和精力来学习和掌握。坚持不懈地学习和实践,你将能够熟练地使用Webpack来构建高效的前端项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值