学习笔记03:单文件组件

一、工程化(搭建脚手架环境)

二、单文件组件(Single File Component SFC)

1.后缀必须是.vue
2.单文件组件分为三个部分:template标签、script标签、style标签
3.template标签里包裹的是HTML部分
4.style标签里如果有scoped属性,表示样式只在当前组件生效

三、工具安装以及创建项目

  1. 工具安装
全局安装vue-cli项目生成工具
npm i -g @vue/cli

检查是否安装成功
vue --version或者vue -V
  1. 创建项目(以自身需求为准进行配置)
进入指定目录中(英文目录不要有空格及中文)执行如下命令

vue create 项目名称(创建时会自动以对应的项目名称生成目录)

四、组件的注册使用

一、Vue中的组件按类型可分为全局组件和局部组件
1.全局组件:可以在项目中的任意.vue文件中使用
2.局部组件:只可以在当前.vue文件中使用

二、组件的使用分为三步骤(代码如下示例)
1.导入所需组件
2.注册组件(全局注册和局部注册)
3.调用注册完成的组件

导入
import 组件对象 from "组件所在路径"
注册
全局组件在入口文件main.js中注册
Vue.component("组件名称",组件对象)

局部组件注册在需要使用外部组件的那个组件自身中注册  
export default {                 
    components: {
        标签名称: 组件对象
    }
}
调用
<template>
	<组件名称></组件名称>
</template>

五、组件常用属性

1.computed
用来定义计算属性,计算属性的结果会被缓存。当依赖的响应式数据发生变化时,computed才会重新计算更新数据,否则使用缓存。

computed与methods的区别
1.computed依赖数据发生改变,才会重新进行计算,否则直接返回之前的计算结果。而methods里的函数在每次调用时候都要执行
2.computed的调用像属性一样访问,methods必须以函数的形式调用
3.计算属性有缓存,方法没有缓存

2.watch
用于定义监听器来监听data中数据的变化(代码如下示例)

export default {
    watch: {
        data中数据的属性名 函数
    }
}

如果监听的是复杂数据类型,则需要使用深度监听(代码如下示例)

export default {
    watch: {
        data中对象属性名: {
            deep: true,
            handler(newValue,oldValue){                
            }
        }
    }
}

3.filter
该属性用于定义过滤器,它是一个处理和格式化数据的工具

export default {
    filters: {
        过滤器名 函数
    }
}

定义过滤器后可以在template模板中与插值表达式一起使用,也可以传递实参

{{插值表达式 | 过滤器名}}
{{插值表达式 | 过滤器名(实参1,实参2...)}}

1.过滤器至少有一个形参,形参为需要处理或格式化的数据
2.使用过滤器时,如果实参有n个,那么形参应该有n+1个;其中第一形参必定是待处理的数据,而后的形参与实参一一对应
3.必须有返回值

4.directive
用于自定义指令;分为全局自定义指令和局部自定义指令

  • 全局自定义指令,在入口文件main.js中导入并注册使用
import 指令对象 from '路径'
//全局指令注册语法:Vue.directive(指令名,指令对象)
Vue.directive('指令名', 指令对象)
  • 局部自定义指令
export default {
    directives: {
        // 不带v-的指令名: 包含指令处理程序的对象
    }
}

自定义指令支持以下钩子函数(在特定的时间触发并自动执行的函数)

  • bind,当指令首次与标签元素绑定的时候触发
  • inserted,当标签元素被插入完成后触发(与bind的区别在于是否可以获取父节点)
  • update,当标签元素更新时触发
  • componentUpdated,当组件更新完毕后触发
  • unbind,当指令与标签解绑时触发

钩子函数支持两个形参

  • el:指令宿主对应的DOM元素
  • binding:指令绑定的对象,可以通过该对象获取指令的名称、表达式等信息

5.mixin
该属性用于定义混入,所谓混入就是组件配置选项的一种复用方式;分为全局混入和局部混入

全局混入语法
Vue.mixin(混入对象)
局部混入语法
export default {
    mixins: [混入对象1,混入对象2,....]
}

在一个混入对象被混入到一个组件的时候,混入对象中的选项可能与组件自身的选项存在冲突的情况;在这种情况下,混入操作会按照固定的合并策略进行冲突合并:
1.如果冲突发生在data数据中,则以组件自身的data数据为准
2.如果是对象属性发生冲突(如methods、computed、filters等)则会合并成一个对象属性,如对象属性中的属性存在同名则以组件自身的为准
3.如果生命周期出现冲突,在执行的时候混入对象中的生命周期函数会优先于本组件执行

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值