webpack零基础入门

2023-11-15

一、什么是webpack

Webpack 是一个现代的 JavaScript 应用程序静态模块打包器 (module bundler)。 它是一个开源的前端工具,可以将各种资源文件(JS、CSS、图片、字体等)打包成一个或多个包,并且能够通过配置选项来实现各种构建需求。

当你的应用程序逐渐变大,代码量变得越来越多,你就需要使用模块来组织代码。然而,模块化使用的代码需要打包成一个或多个文件以便浏览器可以使用。这是 Webpack 出现的初衷,它的主要作用将各种模块打包成浏览器可以识别的代码。Webpack 还提供了各种插件和加载器,让你可以根据需要灵活配置打包过程。

Webpack 主要的使用场景包括

  • 模块打包功能:Webpack 可以将多个模块打包成一个文件,从而减小了文件体积、提高了网站性能
  • 处理依赖项:Webpack 可以通过依赖图来分析依赖项,帮助我们使用公共代码来减少重复的代码块
  • 支持模块化:Webpack 支持 CommonJS 和 AMD 等模块化语法,可以让开发者更好的组织代码
  • 处理多种资源:Webpack 支持处理各类静态资源,如图片、CSS 文件、字体文件等。

总结一句白话就是,我们在用框架开发时,如react,vue等这些框架中使用的ES6 模块化语法Less/Sass 等 css 预处理器等语法进行开发,这些语法开发出来应用程序是不能直接在浏览器运行的,浏览器不识别,想要运行必须经过编译成浏览器能识别的 JS、Css 等语法,才能运行。webpack就是干这个工作的,将这些高级语法编译成浏览器能识别的语法,当然这只是webpack最基本功能,它还可以压缩代码、做兼容性处理、提升代码性能

二、基本使用

1. 建立项目目录
bacewebpack # 项目根目录(所有指令必须在这个目录运行)
    └── public # 项目执行目录
        └── index.html # 项目主文件
    └── src # 项目源码目录
        ├── js # js文件目录
        │   ├── count.js
        │   └── sum.js
        └── main.js # 项目主文件
2. 创建文件

count.js

export default function count(x, y) {
  return x - y;
}

sum.js

export default function sum(x, y) {
  return x + y;
}

main.js

// 使用import 语法将 count.js和sum.js导入到main.js中
import count from "./js/count"; 
import sum from "./js/sum";

// 输出调用这两个函数的结果
console.log(count(2, 1));
console.log(sum(1, 4));

public->index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div>hello webpack</div>
  <!-- 引入main.js -->
  <script src="../src/main.js"></script>
</body>
</html>

到这里我们准备工作 就做完了,我们在src中创建了js文件,但是这里面的js文件全是用import语法导入的,最终我们将src中的main.js用script的方式引入到public目录下的index.html中
然后我们直接将这个index.html文件运行到浏览器中,效果如图:
在这里插入图片描述
可以看到控制台中并没有我们想要的调用两个函数的输出日志,而是报了个错,说是不能用Import语法导入模块。
从这个例子就证实了一点,浏览是不能直接识别高级语法的,想要在浏览器中运行具有高级语法的js文件,需要构建工具提前将这些js编译成浏览器能识别的语法,那么接下来我们就一起尝试下使用webpack

3. 下载依赖

打开终端,来到项目根目录。运行以下指令:

npm init -y

在这里插入图片描述

初始化package.json
此时会生成一个基础的 package.json 文件。
在这里插入图片描述

需要注意的是 package.json name 字段不能叫做 webpack, 否则下一步会报错

下载依赖webpack webpack-cli

npm i webpack webpack-cli -D

在这里插入图片描述
在这里插入图片描述
当你看到如图所示的配置项时,代表你的依赖安装成功

4. 启用 Webpack

开发模式

npx webpack ./src/main.js --mode=development

生产模式

npx webpack ./src/main.js --mode=production

npx webpack: 是用来运行本地安装 Webpack 包的。
./src/main.js: 指定 Webpack 从 main.js 文件开始打包,不但会打包 main.js,还会将其依赖也一起打包进来。
--mode=xxx:指定模式(环境)。

5. 观察输出文件

默认 Webpack 会将文件打包输出到dist目录下的main.js, 如图:
在这里插入图片描述

6.重新引入main.js

这时我们将public目录下index.html文件中原来引入的src目录下的main.js换成现在dist目录下的main.js
如图:
在这里插入图片描述

7.重新运行index.html

如图:
在这里插入图片描述
在我们引入dist目录下的main.js之后,控制台成功打印了调用两个函数的输出结果
这就是webpack的基本功能,编译js文件。当然它不仅仅只有这个功能,后续会持续更新介绍哦,感兴趣的朋友可以来个一键三连,哈哈哈.jpg

webpack的基本使用就介绍到这里啦,欢迎大家留言讨论

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack零基础入门 的相关文章

  • 单击上一页的按钮路由到该页面后如何刷新页面

    我有 2 个页面 一个主页和一个页面 2 当我单击主页上的按钮时 它会路由到 page2 现在 单击主页上的按钮后 当我到达第 2 页时 它应该刷新 因为我的项目中存在一些缓存问题 我在ngoninit上添加了window location
  • 未捕获的类型错误:无法读取未定义的属性“toLowerCase”

    我收到此错误 它源自 jquery 框架 当我尝试加载准备好的文档上的选择列表时 出现此错误 我似乎无法找到为什么会出现此错误 它适用于更改事件 但在尝试手动执行该函数时出现错误 未捕获的类型错误 无法读取未定义的属性 toLowerCas
  • Javascript:混合构造函数模式和揭示模块模式

    有什么方法可以让 Javascript 类扩展通过揭示模块模式创建的对象吗 我尝试了下面的代码 但是有没有办法实现同样的事情 sv MergeQuestionViewModel function this sv QuestionDetail
  • 具有两组子组件的 React 组件

    我正在创建一个组件 需要接收两组子组件并放置在组件的两个不同部分中 let CreditCardForm icons fields gt div div div div icons div div div fields div let Cr
  • Angular.js:未捕获的错误,没有模块:myapp

    我也在尝试引导 angular js 项目 这是我的index html div p Loading p div
  • 如何在 JS Rails 响应中包含 HTML?

    我有一个响应 HTML 和 JS AJAX 查询的 FooController app controllers foo controller rb class FooController lt ApplicationController l
  • 在 Javascript 中动态添加事件处理程序

    我在使用 Javascript 时遇到了一个奇怪的问题 我得到的是一个特定格式的字符串 我将尝试用它创建一个表 该表每行只有一个单元格 字符串的格式为 每个单元格 行 需要显示内容 将传递给的参数onmouseover当用户将鼠标移动到显示
  • 使用 javascript 将 html 文本渲染为位图,无需服务器端代码

    我需要使用 javascript 代码来转换 html 中的文章 帖子 以便最终用户以位图的形式查看 有没有办法在没有服务器端代码的情况下做到这一点 example p testing text here p 您可以使用例如html2can
  • 通过 Javascript 将图像切割成碎片

    我正在创建一个简单的拼图游戏 为了做到这一点 我需要将我正在使用的图片切成 20 块 Javascript 有没有办法将一张图片切成 20 个相等的部分 并将它们保存为网页中的 20 个不同的对象 或者我只需要进入 Photoshop 自己
  • Office excel将CORS请求作为跨域请求

    我正在尝试从我的 Excel 插件发出跨域请求 正如这里所建议的 http dev office com docs add ins develop addressing same origin policy limitations http
  • Ajax JSON 数据和灯箱冲突

    我有一个带有灯箱插件的画廊设置光廊 http sachinchoolur github io lightGallery docs 该画廊与静态 HTML 完美配合 当我动态抓取 API 数据并尝试让灯箱处理这些项目时 问题就出现了 我似乎无
  • 这种 JavaScript 编码风格有什么问题? (闭包与原型)

    我们一直在讨论如何最好地处理我们的 JS 应用程序中的对象 研究 Stoyan Stefanov 的书 阅读无数关于 新 这个 原型 闭包等的 SO 帖子 事实上有很多 而且它们有这么多相互竞争的理论 表明没有完全明显的答案 让我们假设我们
  • Javascript 正则表达式来匹配正则表达式

    我正在研究一个特殊的正则表达式来匹配 javascript 正则表达式 现在我有这个正则表达式工作 i g m 例如 foo match i g m gt foo foo undefined foo i match i g m gt foo
  • 在overlayImage中应用滤镜的方法在哪里?

    我想在overlayImage中应用一个过滤器 唯一的方法是在渲染后在整个画布上应用过滤器 对此没有内置支持 但很容易 破解 var overlayImageUrl load overlay image first fabric Image
  • 为 Meteor 数据创建编号列表

    有没有办法获取 Meteor 集合中项目的编号列表的 编号 我知道我可以在 html 中做到这一点 但我觉得如果我可以在 spacebars 中放置一些东西 那么样式会更容易 如果我可以使用更好的术语 请告诉我 像这样的东西 前 20 部电
  • 监听浏览器宽度以进行响应式网页设计?

    我正在努力使我的网站适合移动设备 我想知道浏览器窗口的大小 以便当它比 728px 窄时我可以执行某些操作 而当它大于 728px 时我可以执行其他操作 这必须考虑到调整 PC 上的窗口大小以及在手机中从纵向模式更改为横向模式 如何才能做到
  • 限制 jQuery id 字符串吗?

    简而言之 我的问题是字符串在 jQuery 中作为可搜索 id 或可搜索内容有什么限制 更新 我得到了 ID 部分 但不是为什么我什至无法使用该字符串搜索 html 内容 对于任何愿意告诉我一个正则表达式来将模式从 MM dd yy HH
  • Three.js WebGL 从着色器绘制圆形自定义填充和边框颜色

    我将 Three js 与 WebGLRenderer 一起使用 我试图找出或查看如何使用 CircleGeometry 绘制圆圈的示例 并能够从顶点或片段着色器控制其填充和边框颜色 如果不使用图像作为纹理 这是否可能 抱歉 如果这真的很简
  • 允许使用 grunt browserify 进行全局转换

    我已将 jQuery 添加为 html 文件中的脚本标记 并将其添加到package json与一起工作browserify shim如下 browserify transform browserify shim browserify sh
  • WooCommerce 使用 AJAX 设置购物车数量?

    我已经为此绞尽脑汁好几天了 需要一些指导 我正在为 WooCommerce 网站完全从头开始制作自定义主题 现在我正在尝试让购物车功能正常工作 我一直试图使用按钮 来更新购物车中产品的数量 对我来说问题似乎是WC 我在functions p

随机推荐

  • 动态菜单/权限管理的实现

    权限管理 序 现在基本上大大小小的系统都由权限分配这一基础功能 不同的用户看到的界面不一样 能够使用的功能也不会尽然相同 所以我要让我的系统做到超级管理员可以看到 操作所有界面 而新闻管理员只能看到新闻管理模块 仓库管理员只能看到仓库管理模
  • 基于openwrt,aria2下载器安装与配置

    迅雷下载不好用 所以用这个下载器aria2 需要安装软件 在可用软件列表中安装aria2和luci app aria2 安装完后有可能需要重启路由器 需要注意的问题 1 aria2只是一个下载工具 并没有图形界面 2 文件下载的位置 在ar
  • 在传统公司干IT是一种什么体验(六)

    不要轻视任何一家传统公司 传统公司能够在激烈的竞争中活下来 都有自己的绝活 表哥语录 表哥虽然经常吐槽自己的公司 但是大部分都是对传统公司的文化和风格的不适应 任何一家传统公司 能够在长达十几年甚至几十年的市场竞争中活下来 一定有自己的独门
  • 数据库开发之MySql(下)(多表查询)

    多表查询 介绍 多表查询就是指从多张表中查询数据 笛卡尔积 笛卡尔乘积是指在数学中 两个集合A集合 和 B集合的所有组合情况 在多表查询时 需要消除无效的笛卡尔积 怎么做多表查询的需求 要查询的数据涉及到哪些表 找出关联条件 外键 主键 其
  • STM32---独立看门狗

    文章目录 前言 一 看门狗概述 1 背景 2 工作原理 二 使用步骤 1 添加复位检测代码 2 喂狗时间设置 3 喂狗 4 喂狗技巧 三 应用领域 四 源码地址 总结 前言 STM32 独立看门狗 提示 以下是本篇文章正文内容 下面案例可供
  • RuntimeError: expected scalar type Long but found Float

    通过检查打印数据格式 发现数据是 torch int64 将数据转换成 float即可 torch tensor data dtype torch float
  • jwt生成token和验证token以及获取playload的数据,实现token拦截

    jwt实现流程 1 添加依赖
  • 常用性能测试工具介绍

    市面上常用的两款性能测试工具 1 LoadRunner 2 Jmeter Loadrunner 特点 1 工业化的性能测试工具 能支持大量用户 提供详细的报表来提供测试分析的数据 2 支持的协议多 3 使用 C 语言来编写的 优点 1 支持
  • kettle数据迁移

    kettle数据迁移 此处是将mysql数据库中的表修改表名与字段名迁移至另一个mysql数据库 1 kettle安装 1 1 kettle下载 8 3 0 0 371版本 Kettle各个版本下载地址 1 2 下载连接驱动包 mysql驱
  • QT QtableView的使用示例(设置item背景颜色的方法)

    1 创建表格内容 QStandardItemModel m standardItemModel new QStandardItemModel this QStandardItem item new QStandardItem 李四 m st
  • 解析数组里面包含数组的json格式的数据代码

    格式如图所示 操作代码如下 public class ActivityJuankuanInfoPost 获取捐款详情 public static JuankuanInfoMessageActivity applyactivityPost S
  • SmartRefreshLayout 嵌套reycleview 长按排序下拉刷新

    布局文件
  • 如何判断数码管是共阴极还是共阳极

    开发环境 蓝色粗体字为特别注意内容 1 硬件环境 8位数码管 引脚排布如下 方法一 限流电阻 简单 用5V电源接一个限流电阻 假一定个是阳极或是阴极 另一个挨个引脚试就行了 方法二 使用万用表 1 指针表 1 前提是你的万用表最好是用3V以
  • Keil(MDK-ARM)的调试步骤

    Keil MDK ARM 的调试步骤 1 编译 调试 在线调试分类 软件在线调试和硬件在线调试 由于现在硬件成本 较便宜 般我们都使 硬件在线调试 也就是软件直接下载到芯 打开软件 程 gt 编译 gt 下载 gt 调试 如下图1 2 3
  • 计蒜客 挑战难题 第8题:字符串长度

    第8题 字符串长度 内存限制 10000 K 时间限制 1000 ms 在右侧我们给出了一个已经基本完成的程序 读入了一个字符串 调用了一个叫str len的函数来计算这个字符串的长度 并输出 聪明的你应该已经发现了 这个叫str len的
  • Mybaits中collection的用法详解

    作用 在Mybaits中collection标签是用来实现连表查询的 使用的场景 collection的使用场景为1 n和n n两种情况 添加的内容 使用collection的时候需要在类中添加关联集合 查询哪个类就在哪个类中添加 一 第一
  • linux c socket之异步IO

    cpp view plain copy File UDPEchoClient TimeOut c Author 云守护 include
  • 国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

    文章目录 toc 1 开发板硬件资源 2 开发板硬件电路 3 GW1NSR 4C芯片资源 4 关于高云半导体 5 开发工具和资料 6 总结 7 参考资料 8 声明 近两年 国外厂商的FPGA芯片价格飙升 由于价格 货期 出口管制等多方面因素
  • 深度强化学习主流算法介绍(二):DPG系列

    之前的文章可以看这里 深度强化学习主流算法介绍 一 DQN系列 相关论文在这里 开始介绍DPG之前 先回顾下DQN系列 DQN直接训练一个Q Network 去估计每个离散动作的Q值 使用时选择Q值大的动作去执行 贪婪策略 DQN可以处理每
  • webpack零基础入门

    一 什么是webpack Webpack 是一个现代的 JavaScript 应用程序静态模块打包器 module bundler 它是一个开源的前端工具 可以将各种资源文件 JS CSS 图片 字体等 打包成一个或多个包 并且能够通过配置