Webpack5 系列(一):基础篇1

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

一、前言

基础篇主要围绕以下几点展开:

  • 为什么会使用 Webpack?
  • Webpack 打包流程
  • Webpack 的本源
  • Webpack 的配置文件
  • 简化 Webpack 打包流程

1. 简单案例

在前端开发中,如果一个页面的逻辑非常多,那么我们就有必要做业务逻辑的划分。

例如,一个网页包含三个部分,分别是:Header、Sidebar、Content,这些全都通过 JavaScript 来编写,并加入到页面中。

文件结构如下:

my-webpack-demo-1/
|- index.html
|- index.js

index.html

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

index.js

const dom = document.getElementById('root');
// header
const header = document.createElement('div');
header.innerText = 'header';
dom.appendChild(header);
// sidebar
const siderBar = document.createElement('div');
siderBar.innerText = 'siderBar';
dom.appendChild(siderBar);
// content
const content = document.createElement('div');
content.innerText = 'content';
dom.appendChild(content);

2. 面向对象

a) 封装

在上面的案例中,实际上 Header、Sidebar、Content 各自的业务逻辑如果很多的话,就可以单独封装到一个构造函数(类)中。

文件结构如下:


my-webpack-demo-1/
|- content.js
|- header.js
|- index.html
|- index.js
|- sidebar.js

header.js:

function Header(dom) {
  const header = document.createElement('div');
  header.innerText = 'header';
  dom.appendChild(header);
}

sidebar.js

function Sidebar(dom) {
  const siderBar = document.createElement('div');
  siderBar.innerText = 'siderBar';
  dom.appendChild(siderBar);
}

content.js

function Content(dom) {
  const content = document.createElement('div');
  content.innerText = 'content';
  dom.appendChild(content);
}

b) 引入

封装完毕后,引入到 index.html 中,并在 <script src="./index.js"></script> 前导入三个 js 文件。

index.html

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

index.js

const dom = document.getElementById('root');
// header
new Header(dom);
// side-bar
new Sidebar(dom);
// content
new Content(dom);

3. 模块化

使用面向对象的方式改进了代码,但是出现了新的问题。什么问题呢?

问题往往发生在 index.html 中引入 js 的先后顺序出现错误。例如,如果先引入 index.js ,之后再引入其他 js 文件,这样顺序不对而导致解析顺序出错,那么必然报错。实际上,我们希望将所有的文件都引入到 index.js 中,然后只引入这个主文件 ( index.js ) 就好。

所以,我们不妨使用 ES6 的模块语法(Module)。

于是,我们需要对代码做一个修改:

  • 通过 export 语法导出模块;
  • 通过 import 语法引入模块。

a) 功能代码编写与导出

header.js

function Header(dom) {
  const header = document.createElement('div');
  header.innerText = 'header';
  dom.appendChild(header);
}
export default Header;

sidebar.js

function Sidebar(dom) {
  const siderBar = document.createElement('div');
  siderBar.innerText = 'siderBar';
  dom.appendChild(siderBar);
}
export default Sidebar;

content.js

function Content(dom) {
  const content = document.createElement('div');
  content.innerText = 'content';
  dom.appendChild(content);
}
export default Content;


目录
相关文章
|
缓存 资源调度 编译器
原来是这样啊!浅谈webpack4和webpack5的区别
相对于webpack4,webpack5内置了很多plugin插件,比如、打包、压缩、缓存
774 1
|
1月前
|
缓存 前端开发 JavaScript
Webpack 4 和 Webpack 5 区别?
【10月更文挑战第23天】随着时间的推移,Webpack 可能会继续发展和演进,未来的版本可能会带来更多的新特性和改进。保持对技术发展的关注和学习,将有助于我们更好地应对不断变化的前端开发环境。
|
2月前
|
前端开发 JavaScript 开发者
Webpack不同技术的探讨
【10月更文挑战第11天】Webpack不同技术的探讨
|
缓存 JavaScript 前端开发
webpack基础
webpack基础
39 0
|
缓存
如何提高webpack的构建速度?
如何提高webpack的构建速度?
187 0
|
JavaScript
Webpack5 系列(一):基础篇3
Webpack5 系列(一):基础篇3
78 0
|
JavaScript 前端开发 API
Webpack5 系列(一):基础篇2
Webpack5 系列(一):基础篇2
90 0
|
JSON JavaScript 前端开发
|
缓存 前端开发 JavaScript
webpack从0到1构建
绝大部分生产项目都是基于cli脚手架创建一个比较完善的项目,从早期的webpack配置工程师到后面的无需配置,大大解放了前端工程建设。但是时常会遇到,不依赖成熟的脚手架,从零搭过项目吗,有遇到哪些问题吗?或者有了解loader和plugin吗?如果只是使用脚手架,作为一个深耕业务一线的工具人,什么?还要自己搭?还要写loader,这就过分了。
206 0
webpack从0到1构建
|
JavaScript 前端开发 网络安全
webpack学习
webpack学习
139 0
webpack学习