【vue】知识点-------上

目录

一、Vue基本常识

二、vue命令

插值表达式

v-bind

v-on

v-model

v-text和v-html

v-show和v-if

v-for

二、DOM+diff

三、过滤器

四、计算属性

五、侦听器  watch

vue组件

组件通信

父传子

子传父

跨组件通信(兄弟)

Vue生命周期


一、Vue基本常识

        Javascript的渐进式框架

@vue/cli是vue官方提供的全局模块包,用于创建脚手架项目

脚手架好处:开箱即用,webpack0配置

全局安装@vue/cli    yarn global add @vue/cli

创建脚手架项目   vue create vuecli-demo   项目名不能有大写字母,中文和特殊符号

选择模板和包管理器

启动服务 yarn serve

项目构架

main.js  项目打包的主入口---Vue初始化

App.vue  Vue页面主入口

index.html  浏览器运行的文件

修改运行的端口号

        src并列处,新建vue.config.js,填入配置,重启webpack开发服务器

 关闭eslint检查

module.exports={

    devServer:{

        port:3000,

        open:true //浏览器自动打开

    },

    lintOnSave:false //关闭eslint检查

}

单vue文件的好处:

        Vue推荐使用.vue文件来开发项目

        template里只能有一个根标签

        js独立作用域互不影响

        style配合scoped属性,保证样式只针对当前template内标签生效


MVVM设计模式

model 数据层

view 视图层

viewmodel  Vue源码层


二、vue命令

插值表达式

又称为声明式渲染/文本插值, 在dom中,直接插入vue数据变量

{{表达式}}


v-bind

     给标签属性设置vue变量的值

v-bind:属性名=”vue变量”  简写   :属性名=”vue变量“


v-on

 给标签绑定事件

v-on:事件名=”要执行的少量代码”

v-on:事件名=”methods中的函数名”   

v-on:事件名=”methods中的函数名(实参)”

简写:@事件名=”methods中的函数”


vue事件处理函数,拿到事件对象

语法  无传参,通过形参直接接收

          传参,通过$event指代事件对象传给事件处理函数


@事件名:修饰符=”methods里的函数”

修饰符      .stop   阻止事件冒泡

                 .prevent  阻止默认行为

                 .once 程序运行期间,只触发一次事件处理函数

                .enter  按下回车键   

                .esc   按下取消键


v-model

v-model=”vue数据变量”

        数据变——>视图变

        视图变——>数据变   

表单的value属性的vue变量实现双向绑定

但是当遇到复选框    如果vue变量是非数组  关联的是复选框的checked属性

                                                            数组   关联的是复选框的value属性


v-model.修饰符=”vue数据变量”

  修饰符: .number  以parseFloat转换成数字类型

                 .trim 去除首尾空白字符

                 .lazy 在change时触发而非input时,失去焦点内容改变时,触发


v-text和v-html

v-text=”vue数据变量”

v-html=”vue数据变量”

注意:他们会覆盖插值表达式


v-show和v-if

v-show=”vue数据变量”   隐藏用的是display:none(频繁切换)值是布尔型  true是显示,false是隐藏

v-if=”vue数据变量”     隐藏是直接从dom树上移除(移除)   值是布尔型   true是显示,false是隐藏

v-if 可以配合v-else和v-else-if使用


v-for

想要谁循环,放到谁身上   in两边必须有空格

v-for =”(值变量,索引变量)in 目标结构”    (item,index)   obj  (value,key)

v-for=”值变量 in目标结构”

目标结构:可以遍历数组/对象/数字   数字时,从1开始、

v-for的临时变量名不能用到v-for范围外


v-for更新监测

变更方法才会导致v-for更新,页面更新n

   变更方法pop()、 push()、 shift()、 unshift()、splice()、sort()、reverse()

   不会更新:filter()、concat()、slice()、map()  可采用将原数组赋值为新数组的值

数组转换reverse()会让v-for更新

截取slice()不会让v-for更新

更新某个值的时候,v-for检测不到  可采用this.$set()  参数1:更新的目标结构,参数2:更新的位置,参数3:更新的值


用v-bind

给标签class设置动态的值    :class=”{类名:布尔值}”

给标签动态设置style的值    :style=”{css属性名:值}”


二、DOM+diff

Vue采用虚拟DOM+diff算法提高性能

虚拟DOM  

         本质:保存dom关键信息的js对象

(回流:当页面中的元素的大小或是位置等发生改变,浏览器会根据改变对页面的结构重新计算)

(重绘:当页面中元素的背景、颜色改变引发浏览器对元素重新描绘)


diff同级比较

根元素改变-删除重建整个DOM树

根元素不变-属性改变更新属性

根元素不变-子元素/内容改变

                          无key,最大限度尝试就地修改/复用相同类型的元素

                          有key,值为索引  

                                     基于key来比较新旧虚拟dom,移除key不存在元素

                                     先产生新旧虚拟DOM,根据key比较,还是就地更新

                         有key,值为唯一不重复的字符串或数字

                                    基于key的来比较新旧虚拟DOM,移除key不存在的元素

  key的取值:有id用id 无id用index


三、过滤器

过滤器只能用在,插值表达式和v-bind动态属性里

Vue.filter(“过滤器名,(值)=>{return “返回处理后的值”}   全局

filters:{过滤器名字:(值)=>{return “返回处理后的值”}}    局部

  filters:{过滤器函数}

过滤器的使用:无参数:vue变量|过滤器名字

                         有参数:vue变量|过滤器(实参)

使用多个过滤器    vue变量|过滤器1|过滤器2


四、计算属性

计算属性computed{

        “计算属性名”(){

                return”值”

          }

}

计算属性也是vue数据变量,所以不要和data里重名,用法和data相同

计算属性的优势是带缓存,当计算属性对应函数执行后,会把return值缓存起来,若依赖项不变,多次调用都是从缓存取值,若依赖项值变化,自动重新执行并缓存新的值。

计算属性完整写法

computed:{

“计算属性名”:{  

                      set(值){}   //给计算属性赋值触发set方法

                      get(){ return 值}   //使用计算属性的值触发get方法

               }

}


五、侦听器  watch

  可以侦听data/computed属性值的改变

watch:{    //变量名对应值改变这里自动触发

        “被侦听的属性名”(newVal,oldVal){

   }

}

侦听复杂类型,或者立即执行侦听函数

watch:{

“要侦听的属性名”:{

        immediate:true,   //立即执行

        deep:true,      //深度侦听复杂类型内的变化

        handler(nweVal,oldVal){

                      }

          }

}


vue组件

全局注册--------main.js     import 组件对象 from “vue文件路径’

Vue.component(“组件名”,组件对象)

局部注册------某.vue文件内   import 组件对象 from ‘vue文件路径’

     components:{

“组件名”:组件对象

}

scoped 作用过程:

  当前组件内标签自动添加data-v-hash值属性,所有选择器都带data-v-hash值属性选择器


单向数据流: 从父到子的数据流向

子组件修改,不通知父级,造成数据不一致

Vue规定props里的变量是只读的


组件通信

父传子

       (父引入子,被引入的是子)   父:App.vue  子:MyProduct.vue

  1. 子组件内,props数组内定义变量,准备接收,
  2. 父组件内,使用子组件,属性方式给props变量传值进去

父传子  循环使用    每次循环,变量和组件都是独立的

子传父

          1.父组件内,绑定自定义事件和事件处理函数

                   @自定义事件名=”父methods里的函数名”

           2.子组件触发父自定义的事件方法

                  this.$emit(“父组件自定义事件名”,传给父组件函数名参数的实参)

跨组件通信(兄弟)

创建空白vue对象----监听和触发

空白对象------>eventBus.$on(‘事件名’,函数体)

eventBus.$emit(‘事件名’,值)----->空白对象

  1. src/EventBus/index.js  -----创建空白对象并导出   导入时只导入到EventBus步骤即可
  2. 在要接收值的组件      eventBus.$on(‘事件名’,函数体)
  3. 在传递值的组件    eventBus.$emit(‘事件名’,值)

组件名/组件文件名都以大写英文开头


Vue生命周期

从创建到销毁的整个过程

钩子函数 : vue框架内置函数,随着组件的生命周期阶段,自动执行

作用:特定的时间点,执行特定的操作

场景:组件创建完毕后,可以在created生命周期函数中发起Ajax请求,从而初始化data数据

分类:

   阶段          方法名                       方法名

  初始化   beforeCreate                  created

  挂载       beforeMount                   mounted

  更新       beforeUpdate                 updated

 销毁        beforeDestroy                destroyed

初始化

  1. new Vue()    Vue实例化(组件也是一个小的Vue实例)
  2. Init Events&Lifecycle  初始化事件和生命周期函数
  3. beforeCreate  生命周期钩子函数被执行
  4. Init injection&reactivity   vue内部添加data和methods等
  5. created   生命周期钩子函数被执行,实例创建
  6. 接下来是编译模板阶段   开始分析
  7. Has el option?  是否有el选项  检查要挂到哪里

                                          没有,调用$mount()方法

                                           有,继续检查template选项

挂载

     1.template选项检查

                有  编译template返回render渲染函数

                无  编译el选项对应标签作为template(要渲染的模板)

    2.虚拟化DOM挂载真实DOM之前

   3.beforeMount  生命周期钩子函数被执行

   4.Create  把虚拟化DOM和要渲染的数据一并挂到真实的DOM上

   5.真实DOM挂载完毕

   6.mounted 生命周期钩子函数被执行

更新

  1. 当data里的数据改变,更新DOM之前
  2. beforeUpdate   生命周期钩子函数被执行
  3. Virtual DOM  虚拟DOM重新渲染,打补丁到真实DOM
  4. updated     生命周期钩子函数被执行
  5. 当有data数据改变   重复这个循环

销毁  手动移除全局事件 移除当前组件、计时器、定时器、eventBus移除事件$off方法

  1. 当$destory()被调用   比如组件DOM被移除(例v-if)
  2. beforeDestory  生命周期钩子函数被执行
  3. 拆卸数据监视器、子组件和事件侦听器
  4. 实例销毁后,最后触发一个钩子函数
  5. destoryed  生命周期钩子函数被执行
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue是一个流行的JavaScript框架,用于构建用户界面。它是基于组件化和响应式设计的,可以帮助开发者更高效地构建交互式的web应用程序。Vue-Video-Player是一个用于Vue框架的视频播放插件,它基于video.js并提供了一些方便的功能和接口来实现视频播放功能。你可以通过使用npm命令来安装vue-video-player插件,具体命令是npm install vue-video-player --save。然后,在你的Vue代码,你可以引入vue-video-player组件,并根据需要传递一些配置选项,例如设置视频源、自定义皮肤等。下面是一个简单的示例代码: ```html <div> <video-player class="video-player vjs-custom-skin v-player" ref="videoPlayer" :playsinline="true" :options="playerOptions"></video-player> </div> ``` 这个demo代码使用了vue-video-player插件,并且通过video-player组件来展示一个视频播放器,其的class属性用于自定义样式,ref属性用于引用video-player组件的实例,:playsinline属性用于启用内联播放,:options属性用于传递一些配置选项给video-player组件。这样,你就可以在Vue应用轻松地使用vue-video-player插件来实现视频播放的功能了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [前端vue视频vue-video-player插件总结知识点案例(带源码)](https://blog.csdn.net/m0_49714202/article/details/125312364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue播放视频之vue-video-player插件详解](https://blog.csdn.net/wang_1220/article/details/108472240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue-video-player.zip](https://download.csdn.net/download/wang_1220/12825804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值