Vue第三章脚手架之最全render函数、props、mixin混入、插件、浏览器本地存储、组件自定义事件_绑定、解绑、全局事件总线、消息订阅与发布、nextTick、Vue过度与动画

本文主要是介绍Vue第三章脚手架之最全render函数、props、mixin混入、插件、浏览器本地存储、组件自定义事件_绑定、解绑、全局事件总线、消息订阅与发布、nextTick、Vue过度与动画,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第三章——开始简写

安装脚手架

npm i -g @vue/cli

vue创建脚手架

vue create 项目名称

cd 项目名称

npm run sever

http://localhost:8080/

Vue:核心+模板解析器(解析template)

一、render函数

利用模块化的引用方法引用vue

vue包中的package.json中的module控制ES6引入的哪个具体的js文件

render函数有返回值

没有用到this就可以用箭头函数

1、vue.js完整版

核心+模板解析器(解析template)

2、vue.runtime.xxx.js没有模板解析器,需使用render函数接收到的createElement函数去接收指定内容

new Vue({render:h => h(App)
})

二、修改配置文件

输出脚手架配置文件命令:vue inspect > output.js

创建vue.config.js自定义配置

common暴露:

module.exports = {pages:{index:{entry:'src/main.js'}},lintOnSave:false //关闭语法检查
}

三、props

在App.vue写入标签属性

<Student name="李四" :age="18"/>  利用v-bind

在组件

export default {//props:['name','sex']  //简单接收/*接收同时对数据类型进行限制props:{name:String,age:Number}}*///接收的同时对数据进行类型限制+默认值指定+必要性限制props:{name:{type:String,required:true},age:{type:Number,default:0}}
}

四、mixin混入

mixins.js

功能:可以把多个组件共用的配置提取成一个混入对象

//定义混合
{data(){
...
},
methods:{
...
}
}//使用混入全局混入:Vue.mixin(xxx)局部混入:mixins:['xxx']

五、插件

plugins.js

在main.js中使用插件

//引入插件
import plugins from './plugins'
//使用插件
Vue.use(plugins)

用于增强Vue

包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据

定义插件:

对象.install = function(Vue,options) {
...
}

scoped样式

让样式在局部生效,防止冲突

<style scoped>

六、浏览器本地存储

本地存储localStorage:

将会话存储中的sessionStorage全部替换为localStorage

会话存储sessionStorage:

<body><h2>localStorage</h2><button οnclick="saveData()">点我保存</button><button οnclick="readData()">点我读取</button><button οnclick="deleteData()">点我删除</button><button οnclick="deleteAllData()">点我清空</button><script type="text/javascript">let p = {name:'张三',age:18}function saveData(){sessionStorage.setItem('msg','hello')sessionStorage.setItem('msg2',666)sessionStorage.setItem('person',JSON.stringify(p))}function saveData(){console.log(sessionStorage.getItem('msg'))console.log(sessionStorage.getItem('msg2'))const result = sessionStorage.getItem('person')console.log(JSON.parse(result))}function deleteData(){sessionStorage.removeItem('msg2')}function deleteAllData(){sessionStorage.clear}</script>
</body> 

七、组件自定义事件_绑定

在APP.vue中

通过父组件给子组件传递函数类型的props实现
<School :getSchoolName="getStudentName" />
通过父组件给子组件绑定一个自定义事件实现: 子给付传递数据(使用@或v-on)
<Student @yourname.once="getStudentName" />
通过父组件给子组件绑定一个自定义事件实现: 子给付传递数据(使用ref)
<Student ref="student"/>ref写法使用mounted钩子
<script>export default{name:"App",components:{School,Student},data(){...},methonds:{getSchoolName(name){console.log('App收到了学校名:',name)},getStudentName(name,...params){console.log('App收到了学生名')}},mounted(){this.$refs.student.$on('yourname',this.getStudentName)//绑定自定义事件this.$refs.student.$once('yourname',this.getStudentName)//绑定自定义事件(一次性)}}</script>

八、在组件Student.vue中解绑

<button @click="sendStudentName">把学生名给App
</button>
<script>
export default{name:'Student',data({...})
},methods:{sendStudentName(){//触发Student组件实例身上的yourname事件this.$emit('yourname',this.name,666,888,999)this.$emit('yourname')},unbind(){this.$off('yourname')//解绑一个自定义事件this.$off(['yourname','yourname'])//解绑多个自定义事件this.$off()//解绑所有自定义事件}} 
</script>

九、组件的自定义事件总结:

适用于子组件===>父组件

在组件后写原生标签属性需加上.native

<Student @click.native="dianwo()">点我
</Student>

触发自定义事件:this.$emit('atguigu',数据)

注意:通过this.$refs.xxx.$on('yourname',回调)绑定自定义事件,回调要么配置在methods中,要么用箭头函数,否则this指向该组件而不指向vm

十、全局事件总线(GlobalEventBus):任意组件间通信

1、安装全局事件总线

new Vue({.....beforeCreate(){Vue.prototype.$bus = this //安装全局事件总线,$bus就是当前应用的vm},.....
})

2、使用事件总线

接收数据:A组件想接收数据,则再A组件中给$bus绑定自定义事件,事件的回调留在A组件自身

methods(){demo(data){.....}
}
...
mounted(){this.$bus.$on('xxx',this.demo)
},
beforeDestroy(){this.$bus.$off('xxx')
}

提供数据:this.$bus.$emit('xxxx',数据)

3、最好在beforeDestroy钩子中,用$off去解绑当前组件所用到的事件。

十一、消息订阅与发布(pubsub)

导入库npm i pubsub.js

接收数据:

<script>//引入import pubsub from 'pubsub-js'export default {name:'School',data(){return{....}},mounted(){this.pubId = pubsub.subscribe('xxx',(msgName,data)=>{console.log('有人发布了xxx消息,xxx消息的回调执行了',msgName,data)})},beforeDestroy(){pubsub.unsubscribe(this.pubId)}}
</script>

提供数据:

pubsub.publish('xxx',数据)

随后最好在beforeDestroy钩子中取消订阅

十二、nextTick

语法:this.$nextTick(回调函数)

作用:在下一次DOM更新结束后执行器指定的回调

当改变数据后,要基于更新后的新DOM进行某些操作时,要在nextTick所指定的回调函数中执行

十三、Vue过度与动画

1、使用

元素进入的样式:

v-enter: 进入的起点

v-enter-active:进入过程中

v-enter-to:进入的终点

2.元素离开的样式:

v-leave:离开的起点

v-leave-active:离开的过程中

v-leave-to:离开的终点

2、使用 transition包裹要过度的元素并配置name属性

3、多个元素过度使用 <transition-group>,且指定key值

 <transition-group name="hello" appear><h1 v-show="isShow" key="1">你好啊</h1><h1 v-show="isShow" key="2">你也好啊</h1>
</transition-group>

使用animate.css

官网:animate.style

<template><div><button @click="isShow = !isShow">显示/隐藏</button><transition-group name="animate__animated animate__bounce"  appear enter-active-class="animate__swing"leave-active-class="animate__backOutUp"><h1 v-show="isShow" key="1">你好啊</h1><h1 v-show="isShow" key="2">你也好啊</h1></transition-group></div>
</template>
<script>
import 'animate.css'
export default{name:'Test',data() {return {isShow:true}},
}
</script>
<style scoped>h1{background-color:skyblue ;transition: 0.5s linear;}</style>

十四、配置代理

方法一:

在vue.config.js中添加如下配置:

devServer:{proxy:"http://localhost:5000"
}

1、优点:配置简单,请求资源直接发给前端即可

2、缺点:不能配置多个代理,不能灵活的控制请求是否走代理

3.工作方式:若按照上述配置代理(优先匹配前端资源)

方法二:

module.exports = {devServer:{proxy:{'/api1':{//匹配所有以'/api1'开头的请求路径target:'http://localhost:5000',changeOrigin:true,pathRewrite:{'^/api1s:':''}},'/api2':{//匹配所有以'/api1'开头的请求路径target:'http://localhost:5001',changeOrigin:true,pathRewrite:{'^/api2:':''}},}}
}

1、优点:可以配置多个代理,且可以灵活的控制请求是否走代理

2、缺点:略微繁琐

十五、vue-resource

npm i vue-resource

import vueResource from 'vue-resource'
Vue.use(vueResource)

这篇关于Vue第三章脚手架之最全render函数、props、mixin混入、插件、浏览器本地存储、组件自定义事件_绑定、解绑、全局事件总线、消息订阅与发布、nextTick、Vue过度与动画的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/872838

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路