漫漫学vue路(4)-- webpack【未完成】

1.什么是webpack?

官方解释
在这里插入图片描述
webpack是一款强大的前端 模块化 打包 工具

2.为什么要使用webpack?

模块化开发 我们知道是为了多人高效开发产生的,它解决了变量污染等问题同时也保证了代码的复用性。但是大量模块的出现,模块之间的相互引用会使得整个项目显得越来越复杂化。

这时,我们就需要一个工具用来将各个模块统一打包成一个文件,到时我们只需要将这一个文件传给服务器端即可。
(这是webpack的主要功能,是与其他打包工具的不同点,也是其在前端打包领域占有主导地位的原因。它的次要功能还有将sass,less等文件打包成浏览器可识别的css,html,js文件,保证了浏览器的正常编译)

3.webpack的安装

(ps:我在之前安装的是vue-cli4.0,因为想认真学习一下webpack,所以将vue-cli4.0卸载了,下了3.6.0版本的webpack)
在这里插入图片描述

4.webpack的基本使用过程

4.1 首先我模拟了一个小型的开发现场

在这里插入图片描述
index.html 入口页面
src 源码文件夹
dist 打包后的文件夹

4.2 编写源码文件

都放在src里
在这里插入图片描述
在这里插入图片描述
可看出就是简单的bbb.js引用aaa.js里的变量的例子

4.3 webpack打包

在这里插入图片描述
将bbb.js打包成module.js(为什么不打包aaa.js?因为webpack打包一个文件时会找与其关联的文件,并将其一起打包进去,所以这里的aaa.js也被打包了)

4.4 打包后

在这里插入图片描述
再在html引用module.js,就相当于真实开发的服务器接受打包后的文件,就可得到结果啦

<script src="./dist/module.js"></script>

在这里插入图片描述

5.webpack简单配置

(牵涉到了部分node命令,因为没有学过node,所以暂不深究)
在这里插入图片描述

前面用webpack打包时,是webpack后面跟上需要打包的文件路径和打包后的文件路径。为了方便我们可自定义命令,比如输入一个webpack即可自动打包

创建webpack.config.js文件,这个文件可对webpack进行一些配置
在这里插入图片描述
这里的出口路径在实际开发时是需要动态更改的,假如你在开发项目因为复制文件移动文件等问题更改了出口文件的绝对路径那就需要再找到这个文件进行更改,那就很麻烦了,所以就需要动态获取绝对路径。

动态获取绝对路径是需要node环境下的一些东西(包,模块,函数等等)的,所以为了使用这些东西,我们需要下载一个包
(具体操作会叫你写什么包名,版本,作者,描述什么什么的,这些暂时都用不到,回车撸到底就行了)
在这里插入图片描述
就会生成这样的一个package.json文件
在这里插入图片描述
现在我们就可以使用node的相关语法啦
在这里插入图片描述
node的语法不用管,反正就是成功动态获得了出口文件的绝对路径

打包成功
在这里插入图片描述

但在真实开发中,常用的打包命令还是npm run build,这个命令作用就是为了构建项目和打包文件。它相对于webpack命令有两个优点,第一是命令字符少,第二是优先使用局部webpack。这里我们讨论一下第二个优点。

真实开发中,公司整体会有一个全局webpack,例如4.1.11版本,而单独的项目会有局部webpack,例如3.6.0版本。当你使用cmd终端或者vscode终端,敲webpack命令时,使用的就是全局webpack,和你项目的webpack版本不符,就可能会有未知错误产生。而使用npm run bulid,它会在package.json文件里的“script”找build这个命令,会运行这个命令,这样运行的就是局部webpack。
在这里插入图片描述
为了运行局部webpack,当然我们就需要下局部webpack(我还是下的3.6.0版本)
在这里插入图片描述
下好之后我们会发现多了个文件夹在这里插入图片描述
这个就是我们本地下的包,里面有很多默认下载的包,当然局部webpack也在里面

并且打开package.json文件,我们会发现多了
在这里插入图片描述
它的意思是开发时依赖:{webpack:3.6.0},就是npm run build时使用的webpack版本
运行项目时(npm run serve),还会出现下面的东西,就是运行时依赖

“dependencise": {
}

最后npm run build打包成功
在这里插入图片描述

6.webpack的扩展配置

我目前下的webpack3.6.0版本是只支持js文件打包的,但是还有其他文件啊,比如scss,less,css,vue,jpg等文件都需要打包啊,webpack(3.6.0)是没有这些文件的打包功能的,,所以就需要自己配置

需要用到webpack的一个叫loader的东西
在这里插入图片描述

不过好像vue cli3开始提倡无配置编程了,所以我不打算再深入理解这些东西了,需要的时候再回来看吧

css,sass,图片,ES6转ES5啊都在这里面了

https://www.bilibili.com/video/av59594689?p=78

7.webpack使用vue的配置过程

首先肯定要下和vue有关的包
在这里插入图片描述
再我们试着试用一下vue语法
在bbb.js中加入
在这里插入图片描述
那么相应的index.html中也要加入
在这里插入图片描述
npm run build打包,刷新浏览器,会发现报错了
在这里插入图片描述
这个是因为vue的发布版本一般有多个个版本,默认选中的是runtime-only,这个版本不能编译vue中的template,所以会报错。
在这里插入图片描述
此时我们就需要将版本调到runtime-compiler

在webpack.config.js文件中加入以下内容
在这里插入图片描述
再重新npm run build即可

(可能部分人不会报错,会直接显示{{msg}}。这样的话把index.html中的script引用直接放到html后面就好了,就跟操作dom是一个意思,有需要操作的东西才能操作嘛)

8.vue的终极使用方案

(这是养成vue实际编程方式思维的一步,所以我一步一步慢慢来,便于理解)

8.1 简化index.html

若是按照现在的写法,在index.html写模板,在bbb.js写vue实例,组件什么的,来回切换很麻烦,所以想到简化index.html(就是不在index.html)写东西

模板放到Vue实例里面即可,就不用切换了
在这里插入图片描述

8.2 简化Vue实例

但是这样又会导致一个问题,Vue实例会随着template的增加而增加,会显得很繁重。

我们可以通过组件解决这个问题
在这里插入图片描述
在这里我们创建了一个app组件,将什么template,data,methods等等东西都可以放组件里面,这样Vue实例就简洁很多了呀。

当然要注意,Vue实例的template要调用这个组件,这个组件才能被使用。而且还不要忘记注册这个组件。

8.3 简化入口文件bbb.js

(一般都是main.js,我这里就懒得改了)

我们发现用组件后,的确Vue实例的代码简洁了很多,但是bbb.js文件代码还是很多啊,所以可以将组件提出来放到另一个文件下。

创建一个vue文件夹,下面放一个app.js文件
在这里插入图片描述
组件其实就是一个对象而已,我们使用ES6导出导入可以在不同模块中使用它
在这里插入图片描述
在这里插入图片描述
这样也更像模块化开发了

8.5 vue开发的最终形式

上面其实还有个弊端,就是模板和js为分离,就看着很乱。那么现在我们就可以使用vue文件了,vue文件分离了模板,js语言和样式

在vue文件夹里面新建个app.vue
在这里插入图片描述
将代码拷贝过去,此时我们在bbb.js中当然要引用这个文件
在这里插入图片描述
做完这些可还没完,webpack不能打包vue文件啊,所以我们还要配置

哎!配置webpack太烦了,走到这一步时,电脑死机,怎么都下不好vue相关的loader。。。。。暂时跳过webpack吧,现在已经有个大致的概念了,以后再深入下去
(未完待续)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值