前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue笔记(7) 很长

Vue笔记(7) 很长

作者头像
y191024
发布2022-09-20 20:49:17
6060
发布2022-09-20 20:49:17
举报

学习内容

⊙ 作用域插槽

⊙ ES6模块的导入和导出

⊙ 认识webpack

⊙ 安装webpack

⊙ 使用webpack

⊙ loader

⊙ ES6转ES5

作用域插槽

一句话来说就是: 父组件替换插槽的标签,但是内容由子组件来提供

现在做这个案例:

搭建好基本的结构

那么此时我想在vue实例组件中使用子组件中的PLanguage的data,显然是不能直接获取到的

所以要使用作用域插槽

首先要定义一个动态属性,和pLanguage绑定起来

现在我想以'='来分割PLanguage中的元素

ES6模块的导入和导出

终于学到新内容了,马上就到webpack了

首先创建了三个文件:

此时在aaa.js中定义了两个变量, 但是我想要在bbb.js中使用这两个变量:

此时,我们在html文件中先导入两这个JS文件, 同时要注意script标签的类型,是模块类型的,这样才不会引起各种问题

那么现在就要将aaa.js中的变量导出,使用export

那自然在bbb.js中就要导入了

import后面跟的是一个大括号,里面的变量名和被导入模块里的名字必须是一致的, export的时候叫什么名字import的时候也要取同样的名字

这个也有另一种写法:

但是此时就会报错:

告诉我们aaa.js中的export需要加上default,因为我们没有使用import{}的语法.

aaa.js文件的export default会输出一个叫default的变量,然后系统允许我们引用时为它取任意名字(aaa)

代码语言:javascript
复制

如果想一次性全部导入:

不需要export default

认识webpack

官方解释:

从本质来说,webpack是一个现代的JavaScript应用的静态模块打包工具

安装webpack

webpack是需要依赖环境的,所以首先要安装node,直接在官网下载就好了,我之前已经安装过了

然后全局安装webpack,这里指定下载版本号3.6.0的,不然后面可能会出问题

开始安装:

npm i webpack@3.6.0 -g

安装得超级慢.....耐心等待吧

局部安装webpack

npm i webpack@3.6.0 --save-dev

使用webpack

初体验:

index.html是源html文件

src有js文件夹,image文件夹,css文件夹,里面是源js,源css和源图片等

main.js是入口文件,在入口文件中引入要用的css文件,js,图片等,打包好以后的文件(bundle.js)在index.html中引用

dist里面放的是打包好以后生成的文件(bundle.js)

我们的math函数,一个非常简单的两位数相加的函数

math.js

在main中的调用

main.js

然后我们只要在终端中输入以下命令:

就可以生成一个bundle文件,它会根据main.js中依赖的模块,将他们全部打包进去,所以不用担心math.js

里面就是这样的,我们不用管它

bundle.js

现在再在index中引入刚刚生成的bundle文件,就能使用了

index.html

使用的结果:

但是每次命令行这么长非常的麻烦,有没有办法能够让我们输入webpack就自动帮我们打包对应的文件到对应的文件夹里呢

首先新建一个文件夹

第一步: 初始化:

npm init -y

很庆幸学了node,到这里能听懂

然后需要在webpack下写一个配置webpack的配置文件,

在配置文件中这样写:

首先下载path这个包, npm i path

webpack.config.js

这个配置文件,其实就是一个 JS 文件,通过 Node 中的模块操作,向外暴露了一个配置对象

在配置文件中需要手动指定入口和出口,在任何模块文件内部,可以使用__dirname变量获取当前模块文件所在目录的完整绝对路径

代码语言:javascript
复制

entry入口,表示,要使用 webpack 打包哪个文件

path指定 打包好的文件,输出到哪个目录中去

filename这是指定 输出的文件的名称

现在只要输入webpack就能自动打包啦,下面这样就是成功了

终端

现在还需要做一个映射,虽然现在看不出作用,但是后期需要,就是我们在终端中输入npm run build实现webpack

需要到package.json中设置一下

这样做是有好处的

我们在终端中直接运行webpack是使用的全局的webpack,而我们修改以后就会优先使用本地的webpack

loader

css-loader

但是我们的文件不止只有JS, 还会有其他格式的文件,比如CSS

现在看看怎么使用吧:

进入官网看一下

选择'样式'

按着步骤来就好了

注意一下安装版本:

npm install --save-dev css-loader@0.28.11

在src下面创建一个CSS文件

给背景一个颜色

normal.css

然后将这个CSS文件在main.js入口文件中引入一下

main.js

和前面的思路是一样的,把CSS文件当成一个模块去使用它,所以也是将它打包到bundle.js中,就可以使用了,但是由于webpack无法打包像css,less之类的文件,无法转换,所以才要使用loader

这个也是要配置的,文档中有写:

但是我们还没下载style-loader,暂时不写

webpack.config.js

现在运行npm run build,打开index.html看看效果

没有任何效果的哈,背景也没变色

这是因为CSS-loader只负责帮忙加载,但是没有解析,style-loader负责将样式添加到DOM中

所以安装一下style-loader:

npm install style-loader@0.23.1 --save-dev

然后进入webpack.config.js进行配置

也许会有个疑问,为什么是先写添加的,再写加载的呢?因为使用多个loader时,是从右向左的.

现在重新npm run build一下,注意只要代码改动了都需要重新run一下才能生效

url-loader

当然我们有时候还会有图片,所以我现在将网页的背景图设置为一张图片,

图片放在src文件下的image文件夹中

normal.css

然后尝试打包

当然会报错,因为我们的webpack只能处理js,报错提示我们需要用合适的loader来处理图片

来到官方文档,不知道为啥跑到资源模块里来了

安装一下:

npm install --save-dev url-loader@1.1.2

官方文档会告诉我们怎么配置,直接复制粘贴就OK了

webpack.congfig.js

修改一下limit限制(我改成了15000)以后,重新run一下再打开文件

file-loader

那如果我的limit设置的太小,run的时候就会报错

意思就是我们缺少一个file-loader,它的机制是这样的,假如我们的图片大小大于了limit的限制,他就会去查找file-loader,所以我们需要安装file-loader

安装:

npm install file-loader@2.0.0 --save-dev

安装完以后run了发现还是报错,此时我们的dist下面多了一张图片,

报错这张图片找不到

因为将图片通过base64进行编译了,所以会多出一张图片,打包的时候要连同这张一起发布,加载的时候应该加载这张编译后的

查看元素后发现它的查找路径有问题:因为这个图片不在这个文件夹的路径下

所以我们要想办法让他的路径变成这样的,图片就能显示出来了

webpack.config.js

再次run一下

这次就成功啦

看弹幕说为什么不把limit设置的非常大,这样就可以不要file-loader了,因为base64处理的图片会没原图那么清晰,所以只适合小图,大图还是用原图好。

但是我们生成的图片的名字很长,是一个32位的哈希值,为了避免重复的.但是在真实开发中,我们可能对打包的名字有一定的要求,比如在所有的图片放在一个文件夹中,跟上图片原来的名称,同时也要防止重复

webpack.config.js

注意是写在options里的哈

run一下:

ES6语法处理

我们观察我们的bundle文件,会发现里面还是ES6语法,那么对于一些还支持ES6的浏览器来说,就会出现问题.这个时候需要使用babel

npm install --save-derv babel-loader@7 babel-core babel-preset-es2015

接着还是配置,文档中直接复制就好

webpack.config.js

现在去复习一遍

我在这里说明一下版本的问题:

webpack:

  • npm install webpack@3.6.0 -g
  • npm install webpack@3.6.0 --save-dev

css-loader:

  • npm install --save-dev css-loader@0.28.11

style-loader:

  • npm install style-loader@0.23.1 --save-dev

url-loader:

  • npm install --save-dev url-loader@1.1.2

file-loader:

  • npm install file-loader@2.0.0 --save-dev

babel:

  • npm install --save-derv babel-loader@7 babel-core babel-preset-es2015
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档