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
目录
相关文章
|
缓存 资源调度 编译器
原来是这样啊!浅谈webpack4和webpack5的区别
相对于webpack4,webpack5内置了很多plugin插件,比如、打包、压缩、缓存
716 1
|
6天前
|
前端开发 JavaScript 开发者
Webpack不同技术的探讨
【10月更文挑战第11天】Webpack不同技术的探讨
|
缓存 JavaScript 前端开发
webpack基础
webpack基础
32 0
|
缓存
如何提高webpack的构建速度?
如何提高webpack的构建速度?
175 0
|
JavaScript
Webpack5 系列(一):基础篇3
Webpack5 系列(一):基础篇3
71 0
|
JavaScript 前端开发
Webpack5 系列(一):基础篇1
Webpack5 系列(一):基础篇
54 0
|
JSON JavaScript 前端开发
webpack基础篇(二):webpack核心概念
webpack基础篇(二):webpack核心概念
122 0
webpack基础篇(二):webpack核心概念
|
JSON JavaScript 前端开发
|
缓存 前端开发 JavaScript
webpack从0到1构建
绝大部分生产项目都是基于cli脚手架创建一个比较完善的项目,从早期的webpack配置工程师到后面的无需配置,大大解放了前端工程建设。但是时常会遇到,不依赖成熟的脚手架,从零搭过项目吗,有遇到哪些问题吗?或者有了解loader和plugin吗?如果只是使用脚手架,作为一个深耕业务一线的工具人,什么?还要自己搭?还要写loader,这就过分了。
193 0
webpack从0到1构建
|
JavaScript 前端开发 网络安全
webpack学习
webpack学习
134 0
webpack学习