Webpack入门,打包第一个工程

简介

Webpack是一个开源的JavaScript模块打包工具,其最核心的功能是解决模块之间的依赖,把各个模块按照特定的规则和顺序组织在一起,最终合并为一个JS文件(有时会多个)。这个过程就叫作模块打包。

可以把Webpack理解为一个模块处理工厂。开发者把源代码交给Webpack,由它去进行加工、拼装处理,产出最终的资源文件,等待送往用户。

目前社区流行的的模块打包工具除了Webpack外,还有Vite、parcel、Rollup等,那么相比较,Webpack有什么优势?

  • Webpack默认支持多种打包模块标准,包括AMD、CommonJS以及最新的ES6模块,而其他工具大多支持一到两种。Webpack对于一些同时使用多种模块标准的工程非常有用,它会处理好不同类型模块之间的依赖关系。
  • Webpack有完备的代码分片解决方案。从字面意思去理解,它可以分割打包后的资源,在首屏只加载必要的部分,将不太重要的功能放到后面动态加载。
  • Webpack可以处理各种类型的资源。除了JavaScript以外,Webpack还可以处理样式、模板,甚至图片等,而开发者需要做的仅仅是导入它们。
  • Webpack拥有庞大的社区支持。

安装

Webpack对于操作系统没有要求,使用Windows、Mac、Linux操作系统均可。它唯一的依赖就是Node.js。

Webpack对Node.js的版本有一定的要求,推荐使用Node.js的LTS(Long Term Support,长期维护)版本。

安装Webpack的方式有两种,一种是全局安装,一种是本地安装。

全局安装Webpack的好处是npm会绑定一个命令行环境变量,一次安装、处处运行;本地安装Webpack会添加其为项目中的依赖,只能在项目中内部使用。

推荐使用本地安装,推荐理由

  • 如果选择全局安装,那么在与他人进行项目协作的时候,由于每个人系统中的Webpack版本不同,可能会导致输出结果不一致;
  • 部分依赖于Webpack的插件会调用项目中Webpack的内部模块,这种情况下仍然需要在项目本地安装Webpack,而如果全局和本地都有,则容易造成混淆;

首先新建一个工程目录,从命令行进入该目录,并运行npm初始化命令

npm init

此时会要求你输入项目的基本信息,根据提示操作就好。然后,会在目录中生成一个package.json文件,它相当于npm项目的说明书,里面记录了项目名称、版本、仓库地址等信息。

接下来执行安装Webpack的命令

npm install webpack webpack-cli -D

安装结束后,在命令行执行npx webpack -v以及npx webpack-cli -v,可显示版本号即证明安装成功。

注意事项

由于Webpack安装在了本地(项目工程中),因此无法直接在命令行内使用webpack指令。工程内部只能使用npx webpack <command>的形式。

打包第一个应用

在工程目录下添加以下几个文件:

// index.js
import addContent from "./addContent.js";
document.write("My first Webpack app.<br>");
addConent();
​
// addContent.js
export default function () {
document.write("Hello World!");
}
​
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>My first Webpack app</title>
</head>
<body>
<script src="./dist/main.js"></script>
</body>
</html>
​

然后在命令行输入打包命令:

npx webpack --entry=./index.js --mode=development

用浏览器打开index.html,这时应该可以看到页面上会显示“My first Webpack app.Hello world!”。

总结

Webpack帮开发者完成了一项最基本的模块组装工作,现在回顾一下刚刚的打包命令。

命令行的第一个参数entry是资源的打包入口。Webpack从这里开始进行模块依赖的查找,找到index.js和addContent.js这两个模块,并通过它们来生成最终产物。

命令行的第二个参数mode指的是打包模式。Webpack为开发者提供了development、production、none三种模式。当置于development和production模式下时,它会自动添加适合当前模式的一系列配置,减少了人为的工作量。

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/front-end/webpack-first-app.html

Like (0)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
Previous 2022年11月8日
Next 2022年11月9日

相关推荐

  • WEB前端工程师必备技能

    前端开发到底是一个怎样的工作?都需要掌握什么技能?怎样区分初级、中级、高级?作为一名前端开发工程师,应该朝哪个方向发展?怎样提升自己的专业技能…… 你是否也曾有这样一些疑问,你的这…

    2019年6月6日
    2.8K
  • 一道前端函数面试题

    这题的规则是这样的 拿到这种题目,我先来说说我自己的做题流程,一般会去找它最简单的形态。我们一步一步来拆解。 先去掉 sumOf() 变成了以下形态 嗯&#82…

    2020年11月22日
    1.1K
  • 浏览器渲染机制

    为什么要了解浏览器渲染页面机制?主要是还是性能的优化。 了解浏览器如何进行加载,我们可以在引用外部样式文件、外部JS时,将它们放到合适的位置,是浏览器以最快的速度,将文件加载完毕。…

    2019年5月31日
    1.6K
  • 简单酷炫的hover效果,值得收藏

    在浏览B站的时候,发现一个简单酷炫的hover效果的制作视频。浏览完之后,发现其中包含的知识点蛮经典的,特此收藏。 HTMl结构布局很普通,就是简单的一个水平垂直方向居中的表单,代…

    2020年7月20日
    1.8K
  • CSS布局之圣杯与双飞翼布局

    所谓圣杯布局和双飞翼布局其实解决的问题是相同的,都是解决左右两栏固定宽度,中间部分自适应,其中某部分内容比其他内容高的时候,保证三者元素等高。他俩的区别就是:圣杯用padding。…

    2019年6月18日
    1.8K
  • HTTP 常见的面试题图解

    前言 在面试过程中,HTTP 被提问的概率还是比较高的。小林我搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通…

    2020年3月17日
    1.5K
  • vue开发小程序项目总结

    最近全权负责一个小程序的前端开发工作,之前小程序使用原生技术开发过一版,当时由于进入项目组晚,且项目开发周期短,没有详细了解项目的各种情况,导致后期开发过程中出现各种各样的让人烦心…

    2020年11月24日
    1.4K
  • typeof 和 instanceof的区别

    在前端开发过程中,typeof与instanceof是经常要用到的, 了解两者的区别是每一个合格前端工程师所要掌握的。 JavaScript中typeof和instanceof常用…

    2019年6月18日
    1.6K
  • 前端开发工程师怎样独立调试前端项目?

    在前后端分离开发的大环境下,前端开发已经不仅仅局限于所谓的切图,写页面的工作,同时,也给前端开发定义了新的含义。有前后端分离项目开发的工程师,都知道,这样的项目开发起来有多么的方便…

    2020年8月31日
    1.5K
  • 异步神器async-await

    async-await和Promise的关系 async-await是建立在promise机制之上 ,async-await是promise和generator的语法糖。增强了代码…

    2019年6月3日
    1.5K