Webpack5 系列(一):基础篇2

简介: Webpack5 系列(一):基础篇2

b) 功能代码引入到主文件

导出后,将所有的功能代码统一在 index.js 中引入:


// index.js
// ES Module
import Header from './components/header.js';
import Sidebar from './components/sidebar.js';
import Content from './components/content.js';
const dom = document.getElementById('root');
// header
new Header(dom);
// side-bar
new Sidebar(dom);
// content
new Content(dom);

而 index.html 中只引入 index.js:

<body>
  <div id="root"></div>
  <script src="./index.js"></script>
</body>

然而,浏览器暂不支持模块语法,会报错。

1688266971179.png于是,Webpack 就应运而生了~

二、初识 Webpack

1. 介绍

a) webpack

Webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.

www.npmjs.com/package/web…

  • 打包 ES Modules,CommonJS 以及 AMD Modules(甚至是组合)。
  • 可以在运行时对异步加载的单文件或多个块进行打包(减少初始加载时间)。
  • 在编译期间解析依赖项,从而减少运行时大小。
  • 加载器(Loaders) 可以在编译时对文件进行预处理。比如,TypeScript to JavaScript, Handlebars strings to compiled functions, images to Base64, etc.
  • 高度模块化的 插件(Plugin) 系统。(Highly modular plugin system)

b) webpack-cli

webpack 官方的 CLI (Command Line Interface) 工具。

webpack CLI provides a flexible set of commands for developers to increase speed when setting up a custom webpack project. As of webpack v4, webpack is not expecting a configuration file, but often developers want to create a more custom webpack configuration based on their use-cases and needs. webpack CLI addresses these needs by providing a set of tools to improve the setup of custom webpack configuration.

2. 安装

mkdir webpack-demo
cd webpack-demo
npm init -y
npm i webpack webpack-cli --save-dev

webpack 和 webpack-cli 是两个不同的包,--save-dev 可以简写为 -D,表示保存并写进开发依赖中。

注意:webpack-cli 必须安装,否则运行不了 webpack!

查看版本:

npx webpack -v

npx 会自动查找当前依赖包中的可执行文件,如果找不到,就会去 PATH 里找。如果依然找不到,就会帮你安装!

3. 文件结构

将文件按照如下位置安放:

webpack/
|- /src
  |- /components
    |- content.js
    |- header.js
    |- sidebar.js
  |- index.js
|- index.html
|- package.json

4. 打包

执行打包命令:

npx webpack-cli

运行结果如下:

1688267039284.png

打包完成后,就会出现一个 dist 目录,里面有一个 main.js 文件,这就是打包完成的 js 文件。

或者通过:npx webpack 也可以。

5. 效果

在打包结束后,需要修改 index.html 中脚本的引用位置:

<body>
  <div id="root"></div>
  <script src="./dist/main.js"></script>
</body>

页面效果如下:

1688267063641.png

网页正常显示。

那么, webpack 做了什么事情?它将原来的文件翻译打包成了浏览器看得懂的 js 文件 ( main.js )。

6. 本源

在某种程度上,我们可以将 webpack 理解为 js 代码翻译器吗?其实不然!

它只是可以识别 js 的模块语法而已,例如,上面的 import、export 语法 ( Header、Sidebar、Content 就是模块。),然而对于其他的 js 语法它是不认识的!

正如它的官方文档所说,Webpack is a module bundler.  webpack 是一个模块打包工具!它可以将多个模块打包到一起。另外,对于 CommonJS(Node.js 用)、CMD、AMD 这些模块规范,webpack 也可以识别并打包。

除了 js 文件以外,webpack 还可以打包其他模块文件,例如, ts 文件,css/sass/less/stylus 文件,图片文件等等。

阅读参考:

三、Webpack 配置文件

在第二部分中,我们通过 npx webpack 的形式进行打包,实际上我们用的是 webpack 默认的配置来打包的。

那么如何自定义打包配置呢?

  1. 在根目录下创建配置文件 ( 默认是:webpack.coonfig.js )
  2. 编写打包配置项

注意,此时的文件结构如下:

webpack/
|- /src
  |- /components
    |- content.js
    |- header.js
    |- sidebar.js
  |- index.js
|- index.html
|- package.json
目录
相关文章
|
负载均衡 安全 应用服务中间件
什么是正向代理和反向代理
正向代理是客户端与服务端之间的中介,用于访问受限资源,如V/P/N和动态IP代理,同时可隐藏客户端IP。反向代理则接收客户端请求并转发给后端服务器集群,隐藏真实服务器信息,常用于堡垒机和负载均衡,如nginx。正向代理焦点在客户端,反向代理关注服务端。
|
11月前
|
运维 Serverless 测试技术
通义灵码 x 函数计算:构建高效开发流程,加速项目交付
通义灵码 x 函数计算:构建高效开发流程,加速项目交付
190 10
|
5月前
|
算法 安全 BI
基于粒子群算法的多码头连续泊位分配优化研究(Matlab代码实现)
基于粒子群算法的多码头连续泊位分配优化研究(Matlab代码实现)
201 8
|
8月前
|
开发工具
HarmonyOS NEXT实战:启动页
本教程介绍如何在HarmonyOS中实现启动页广告功能。通过设置LaunchPage作为入口页面,使用Router模块进行页面跳转,并结合setInterval与clearInterval控制定时器,实现5秒倒计时后自动或手动关闭广告页并跳转至主页的功能。适合初学者掌握HarmonyOS基础开发技巧。
272 0
|
缓存 JavaScript Serverless
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
751 0
|
机器学习/深度学习 自然语言处理 计算机视觉
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaNet替换YOLOV8主干
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaNet替换YOLOV8主干
|
监控 数据可视化 数据挖掘
工时管理:团队为什么要做工时管理?
工时管理不只是单纯地记录时间,而是要通过精确地采集数据、灵活地安排工作、有效地配置资源、透明地进行监控,还有灵活地做出调整,来帮企业把工作效率提上去,把成本控制住,让员工更满意。
334 4
工时管理:团队为什么要做工时管理?
|
网络协议 程序员 数据安全/隐私保护
LabVIEW在两台计算机之间传输数据
LabVIEW在两台计算机之间传输数据
376 0
|
Shell Python
Python 的 os 库的应用实例
Python 的 os 库的应用实例
246 3
|
Linux 虚拟化 数据中心
在Linux中,如何进行系统资源的隔离?
在Linux中,如何进行系统资源的隔离?