自定义组件 初识单文件

107 阅读2分钟

这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

一:mixins相当于key的合并,是一个数组,但是在vue2里面,有两大问题:1 来源不清晰 2 命名会重复 和组件的概念强绑定,属于组件的逻辑。用mixins来进行抽离。引申:在mounted进行定义,如果不进行释放掉,会进行事件内存泄漏。

二:自定义指令:v-if v-for官方提供的指令 还可以自定义指令:适用场景:1.for组建中,有input,<for> <input type="text"> </for> 需求:让input自动聚焦, 问题:我们能用数据驱动视图吗 ?不能 原因:聚焦的话,我们得获取到input的实例来调用它的方法,input.focus方法。通用的;聚焦的逻辑是公共的适用场景,特别频繁 方法:用真实的element调用focus方法 怎么做:自定义指令来去解决 Vue.derective("创建的聚焦的名称focus", { bind(el,binding) }//相当于初始化created,第一次绑定元素时调用的 inserte(){ }//相当于mounted ps:命令统一在vue3里会进行统一 }) 在对应的组件内进行使用,el:拿到的元素,binding 一系列的数据 使用的时候 input v-focus> 这里聚焦的话只能聚焦一个点 剩余的指令官网上有 跟vue的生命周期一样 ps:根元素只能有一个

三:掌握单文件 问题:从问题出发 找出解决方案 我们之前创建vue的时候,用npm init ,再用npm i vue,在页面中直接写脚本,const app=new Vue({}),如果有组件,const Foo={ template:"<div></div"},这么写很麻烦,是个字符串,没有任何的提示,没有类型高亮语法提示,效率低,怎么解决 解决方案:vue给了一个创建方式,创建文件后缀名.vue 这种文件叫做单文件组件 好处: 1 组件必须要写一个template,这时候代码自动补齐,有对应的提示吗 2.可以通过script创建标签 ,可以去写js逻辑,默认导出对象,之前组件里面的data等都可以在这里进行 3.css也可以在单页面里写 所以单文件有template(html),js ,css