01

it2026-08-13  11

导入

对比展示两种开发方式:

A. 传统方式,不使用构建工具B. 工程化的方式,使用webpack

示意图对比

传统方式

工程化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YxLGpYYy-1603365659315)(asset/image-20200923214455667.png)]

明细对比

传统方式工程化方式能否采用js模块化(在一个js中引入另一个js)不能能js代码否能加密不能能css代码能否压缩不能能是否支持css预编译语言不能能是否支持实时预览不能能是否方便处理浏览器兼容性不方便,需要手动处理方便

jd中对webpack的要求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ov8z8R9l-1603365659319)(asset/image-20200923215317260.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8H1sfsxO-1603365659323)(asset/image-20200923215310572.png)]

小结

webpack是一个工具,引这个工具之后就可以改变开发方式,提升开发效率;

在招聘广告中也有所涉及;

剧透:在vuecli中已经集成了这个工具;

webpack是是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。

它是基于nodejs,所以本机一定要先安装了node。

webpack是用来对已有项目进行打包,所以一定是在某个项目下进行应用打包。

vuecli中集成了webpack ,当我们运行npm run build时,就是在调用webpack!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F6ytGJ2B-1603365659328)(asset/image-20200730215205425.png)]

打包:.less, .vue,.js … -------打包------> 静态的文件,让浏览器能认识。

传统项目示例

创建三个文件index.html,index.js,tool.js,最后的项目结构是:

|-index.html |-index.js |-tool.js

拷贝如下素材:

index.html

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <div id="app"> </div> <!-- 引入两个js文件 --> <script src="./tool.js"></script> <script src="./index.js"></script> </body> </html>

tool.js

const updateDom = (id, content) =>{ window.document.getElementById(id).innerHTML = content }

index.js

updateDom ('app','index.html')

说明:

在一个html中引入多个js文件,并且要注意它们的顺序关系。script代码在body的底部,这样可以确保是dom节点渲染在js代码执行之前。

因为在index.js要用到tool.js的功能,所以还在index.html中同时引用了index.js和tool.js,并把tool.js的引用放在index.js的引用之前。如下整个代码的示意图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5S2bNGi1-1603365659330)(asset/image-20200401122055300.png)]

上面的代码中有如下问题:

js文件之间有先后的引用的关系:由于index.js中引用了tool.js的,所以必须要把tool.js放在index.js的前面。存在变量污染的情况:一个文件中定义的变量,在另一个文件中可能会被修改,覆盖。随着.js文件个数增加,则项目会越来越不好管理。不能采用模块化(一个js中引入另一个js)的技术进行开发。

在传统项目中引入并使用webpack

由于webpack这个工具是在node环境中运行的,所以要使用它,必须提前安装nodejs。

基本步骤是:

用npm 对项目进行初始化;安装并使用webpack。(要先有项目,然后再用webpack来优化开发)

初始化项目

任意新建一个空文件夹,取名为webpack-demo,进入到文件夹内部,用如下命令来生成一个package.json

npm init -y

在项目中安装webpack

考虑到不同的项目中可能使用了不同的webpack版本,这里采用本地安装的方式。

npm i XXXX -g # 全局安装 npm i xxxx # 本地安装 不加-g

安装命令

$ npm i webpack webpack-cli -D ------ + webpack-cli@4.1.0 + webpack@5.1.3 如果你看到如上所示的输出内容,就表示安装已经成功了。

检查是否安装成功

# 方式一: node_modules\.bin\webpack -v # 方式二: npx webpack -v

注意:

由于webpack并不是全局安装的,所以并不能直接使用webpack -v来做检验。npx是npm5.2之后提供的新功能。它在运行时会在node_modules/.bin中去检查命令是否存在。

调整代码

调整目录结构

做一件事:把js代码放在名为src的目录下

-package.json -src --index.html --index.js --tool.js

修改代码内容

以模块化的方式来写代码,具体做两个改动:

在tool.js中导出模块在index.js中使用模块

tool.js

它用来提供一个方法,供其它模块来使用。

这里使用commonjs规范(就是node.js中的导出模块的方式)导出工具方法。

const updateDom = (id, content) =>{ window.document.getElementById(id).innerHTML = content } + module.exports = { + updateDom + }

index.js

在index.js中引入tool.js中的定义的方法。注意,这里已经涉及到了在一个js中引用另一个js

+const { updateDom } = require('./tool') updateDom ('app','index.html')

由于现在在index.js使用了require这种模块化的处理方式,所以它无法直接在浏览器中使用,如果直接在index.html中引用,浏览器会报错。

我们接下来就需要使用webpack命令来对index.js进行处理了。

webpack打包

webpack4.x提出了零配置打包的口号:不要写任何的配置文件,就可以对代码进行打包。

打包命令是:

npx webpack # 或者是 node_modules/.bin/webpack index.js

如果没有遇到错误,会看到类似的结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ZyZe2eT-1603365659333)(asset/image-20201021234717271.png)]

它说明打包操作已经成功:index.js和tool.js已经合成了一个main.js文件了。

两个.js文件合成了一个.js:好处是,减少一次浏览器的请求;

可以使用模块化了: 好处是,写代码会更加方便。

示意如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BxKgA0Kl-1603365659335)(asset/image-20200401155011032.png)]

引入打包后的js

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ERRKDesn-1603365659339)(asset/image-20201021234813638.png)]

把上面打包完成的main.js引入到index.html

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <div id="app"> </div> <!-- 引入打包后的.js文件 --> <script src="../dist/main.js"></script> </body> </html>

好的,现在你已经可以看到这个代码可以正常工作了吧。

下面是示例图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WmQhFABV-1603365659340)(asset/image-20200401155445023.png)]

小结

webpack可以帮助我们改进前端开发方式;是基于nodejs的,在使用它之前要初始化项目,并局部安装webpack(不同的项目,采用的可能是不同的版本)。它支持零配置打包:默认打包的入口是src/index.js它支持模块化的写法:js文件之间存在相互引用关系。它能把多个存在引用关系的js打包成一个文件后,默认打包后会放在dist/main.js中。打包的命令是:npx webpack

经可以看到这个代码可以正常工作了吧。

下面是示例图。

[外链图片转存中…(img-WmQhFABV-1603365659340)]

小结

webpack可以帮助我们改进前端开发方式;是基于nodejs的,在使用它之前要初始化项目,并局部安装webpack(不同的项目,采用的可能是不同的版本)。它支持零配置打包:默认打包的入口是src/index.js它支持模块化的写法:js文件之间存在相互引用关系。它能把多个存在引用关系的js打包成一个文件后,默认打包后会放在dist/main.js中。打包的命令是:npx webpack
最新回复(0)