webpack成长指北第1章---为何使用webpack

简介: webpack成长指北第1章---为何使用webpack


背景

原始的开发,一个html对多个css,js有依赖的时候,就会在一个html文件内引入多个css,js文件,造成浏览器加载的缓慢,也不易于维护,特别是依赖不对应的时候,有些js依赖另一个js,引入顺序错误也会报错,因此需要webpack对这些文件的依赖进行一个管理

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link type="text/css" rel="styleSheet" href="./1.css" />
  <link type="text/css" rel="styleSheet" href="./2.css" />
  <link type="text/css" rel="styleSheet" href="./3.css" />
  <title>webpack学习</title>
</head>
<body>
  <div id="root"></div>
  <script src="./1.js"></script>
  <script src="./2.js"></script>
  <script src="./3.js"></script>
</body>
</html>

webpack的打包想法

当前html文件只引入当前自己需要的js,即index.html只引入index.js ,index .js需要什么依赖,就由index.js自己去引入,这样,index.html就只会请求一次静态文件,加快加载速度,也便于梳理代码与代码之间的依赖关系,也不会出现js引入顺序颠倒造成的错误,因为在使用依赖的时候,就已经做好了依赖的引入准备

webpack打包示例

编写项目代码

  • 首先我们按照刚刚说的想法,index.html只引入index.js一个入口js
    index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <!-- 解决没有favicon.ico时报错GET http://localhost:9999/favicon.ico 404 (Not Found) -->
  <link rel="shortcut icon" href="#" />
  <title>webpack学习</title>
</head>
<body>
  <div>这是webpack学习</div>
  <div id="root"></div>
  <script src="./index.js"></script>
</body>
</html>
  • index.js中引入自己需要的模块
import Header from './src/components/Header/Header'; // ES Module 引入
import Content from './src/components/Content/Content'; // ES Module 引入
import SideBar from './src/components/SideBar/Sidebar'; // ES Module 引入
new Header();
new Content();
new SideBar();
  • 模块Header.js
function Header() {
  const dom = document.getElementById('root');
  const header = document.createElement('div');
  header.innerText = 'Header';
  dom.append(header);
}
export default Header; // ES Module 导出
  • 模块Content.js
function Content() {
  const dom = document.getElementById('root');
  const content = document.createElement('div');
  content.innerText = 'Content';
  dom.append(content);
}
export default Content; // ES Module 导出
  • 模块Sidebar.js
function SideBar() {
  const dom = document.getElementById('root');
  const sideBar = document.createElement('div');
  sideBar.innerText = 'SideBar';
  dom.append(sideBar);
}
export default SideBar; // ES Module 导出
  • 浏览器打开index.html,发现报错了,import这样的引入方式,浏览器是无法识别的,会报错,因此就需要用到webpack这样的打包工具,它能识别模块的引入(相当于是翻译,让浏览器识别模块引入)

npm 初始化项目

在使用webpack之前,我们先需要npm 初始化项目

在项目根目录打开终端,输入npm init -y,当项目初始化完成,会在项目根目录自动生成package.json

安装webpack和webpack-cli

在项目根目录打开终端输入

npm i webpack webpack-cli -D

使用webpack打包

终端输入输入

npx webpack ./index.js

打包index.js ,会在项目目录生成dist/main.js

将生成的main.js引入到html中

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <!-- 解决没有favicon.ico时报错GET http://localhost:9999/favicon.ico 404 (Not Found) -->
  <link rel="shortcut icon" href="#" />
  <title>webpack学习</title>
</head>
<body>
  <div>这是webpack学习</div>
  <div id="root"></div>
  <script src="./dist/main.js"></script>
</body>
</html>

在浏览器打开index.html,浏览器已经成功识别模块引入的语法,运行成功

这就是最简单的webpack打包案例

目录
相关文章
|
2月前
webpack成长指北第4章---webpack配置文件
webpack成长指北第4章---webpack配置文件
23 0
|
2月前
webpack成长指北第3章---常用webpack命令及使用webpack命令的方式
webpack成长指北第3章---常用webpack命令及使用webpack命令的方式
40 0
|
11月前
|
JavaScript
webpack4主流程源码阅读,以及动手实现一个简单的webpack(二)
webpack4主流程源码阅读,以及动手实现一个简单的webpack
104 0
|
2月前
|
JavaScript 前端开发
webpack成长指北第2章---安装webpack的正确姿势
webpack成长指北第2章---安装webpack的正确姿势
28 0
|
2月前
|
存储 前端开发 文件存储
webpack成长指北第5章---webpack的基础配置
webpack成长指北第5章---webpack的基础配置
32 0
|
2月前
|
JavaScript 前端开发
webpack成长指北第6章---webpack的图片引入
webpack成长指北第6章---webpack的图片引入
36 0
|
11月前
|
Shell
webpack4主流程源码阅读,以及动手实现一个简单的webpack(一)
webpack4主流程源码阅读,以及动手实现一个简单的webpack
45 3
webpack4主流程源码阅读,以及动手实现一个简单的webpack(一)
|
11月前
|
缓存 前端开发 算法
Webpack 5的十大提升配置技巧你知道几个
Webpack 5的十大提升配置技巧你知道几个
96 2
|
存储 前端开发 JavaScript
webpack的学习之旅
我又来了!!今天给大家带来的是关于webpack的学习,今天我们就来一起学习一下非常经典的前端打包的工具----webpack。 # webpack的历史 介绍webpack之前我们先想想,什么是前端项目?html,css,javascript,图片,音频,视频,图标...... 随着项目越来越大,我们在做项目的时候,如果是小项目的话,我们可以手动的通过一些标签来维护。比如: `<script src=""></script>`来引入js文件,或者是通过`<link rel="stylesheet" type="text/css" href="style.css">`来引入css文件。
|
缓存 JSON 自然语言处理
webpack 笔记
1.1 webpack 五个核心概念 1.1.1 Entry 入口,指示webpack以哪个文件为入口起点开始打包,分析构建内部依赖图
83 0