6.19 refs绑定undefined,编写一个简单的loader,编写一个简单的plugin,loader和plugin区别

1、vue提供的ref用于绑定成为dom的引用,方便操作dom
今天遇到个问题,就是在近300秒的请求结束后,this.list赋值让<li ref=“privince” v-for>去遍历绑定
打印this.refs.province 发现为undefined ,打印 dom树 也是undefined
在这里插入图片描述
在这里插入图片描述

然后尝试加入异步函数setTimeout() // 没有设置延迟时间
在这里插入图片描述
在这里插入图片描述
结果打印正常,判断是进程栈setTimeout()函数 执行后于 dom树渲染完毕。
注:经反复测试,setTimeout(() =>, 20) 还是延迟20毫秒较合适。

2、如何编写一个简单的loader

1、编写最简单的loader
在这里插入图片描述
use loader(入口文件是index.js 内容是console.log(‘hello shouer’)
在这里插入图片描述
打包结束,loader生效

在这里插入图片描述
2、编写一个带配置项的loader
添加配置项
在这里插入图片描述
修改replaceLoader尝试打印this.query在这里插入图片描述
显示 接收到options的参数,表明可以用this.query获取传递过来的参数
在这里插入图片描述
在这里插入图片描述
一个带有配置参数的loader就写完了。

3、有时this的指向会不正确。官方推荐loader-utils
在这里插入图片描述
4、loader中callback携带4个参数
据官方文档: 因为return 只能携带一个对象,所以sourceMap携带不出去,就提供一下配置

在这里插入图片描述
5、异步loader 及返回结果
在这里插入图片描述
6、先后指向2个loader且让代码优雅化
在这里插入图片描述

三、编写一个plugin

插件本身是一个类,所以先定义类。
在这里插入图片描述
在配置文件中引入
在这里插入图片描述
打包npm run build

在这里插入图片描述
参数传递
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对指定周期使用plugin
在这里插入图片描述

在这里插入图片描述
查看打包内容有哪些
在这里插入图片描述
在这里插入图片描述

自定义生成版权文件(emit异步钩子中)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同步时刻钩子,(无回调)
在这里插入图片描述

怎么能知道钩子中有哪些属性呢?

在package.json中
在这里插入图片描述
注: node node_modules/webpack/bin/webpack.js 等于 webpack
–inspect 指开启node的调试工具
–inspect-brk 在运行webpack.js做调式的时候,第一行打一个断点
在这里插入图片描述
查看浏览器开发者工具
在这里插入图片描述
故,可以在compilation变量之前,打一处断点
在这里插入图片描述
点击进入下一个断点
在这里插入图片描述
成功进入debugger断点处
在这里插入图片描述
在这里插入图片描述
或者watch监听
在这里插入图片描述

四、loader和plugin区别

loader: 当我们在源代码里引入新的js文件,或者其他格式的文件,可以借助loader处理引用的文件。即处理模块。(loader是个函数)
plugin: 当我们在打包的某一个具体时刻,比如打包结束HtmlWebpackPlugin,在打包之前清空dist目录,CleanWebpackPlugin,在打包的时刻做一些事情,就是plugin做的事情。(插件是个类)
webpack源代码80%都需要用到plugin, plugin是webpack的灵魂。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值