当前位置: 首页 > news >正文

前端(vue)学习笔记(CLASS 5):自定义指令插槽路由

1、自定义指令

内置指令:内部提供的,每个指令都有自己各自独立的功能

自定义指令:自己定义的指令,可以封装一些dom操作,扩展额外功能

全局注册-语法

例如,当页面加载时,让元素获得焦点

    Vue.directive('指令名',{
      "insert"(el) {
        el.focus()
      }
    })

insert指的是当指令所绑定的元素被添加到页面中时会自动调用

该代码写在main.js文件中

局部组册-语法

    directives: {
      "指令名": {
        inserted() {
          else.foucs()
        } 
      }
    }

局部注册的代码写在组件内的script中

使用的时候,和其他指令一样,v-指令名

* 自定义指令-指令的值

语法:在绑定指令时,可以通过“等号”的形式为指令绑定具体的参数值

通过binding.value可以拿到指令值,指令值修改会触发update函数

Vue.directive('指令名',{
    insert(el,binding) {
        //el为绑定的元素,binding.value获取等号后的值
    },
    update(el,binding) {
        //同样的逻辑,用于实时更新
    }
* 自定义指令-v-loading封装

场景:实际开发过程中,发送请求需要时间,在请求的数据未回来时,页面会处于空白状态

需求:封装一个v-loading指令,实现加载中的效果

分析:

1、本质loading效果就是一个蒙层,盖在盒子上

2、数据请求中,开启loading状态,添加蒙层

3、数据请求完毕,关闭loading状态,移除蒙层

实现:

1、准备一个loading类,通过伪元素定位,设置宽高,实现蒙层

2、开启关闭loading状态,本质只需添加移除类即可

3、结合自定义指令的语法进行封装复用

2、插槽

作用:让一些组件内部的一些结构支持自定义

分成后备内容插槽,具名插槽

插槽基本语法:

1、组件内需要定制的结构部分,改用<slot></slot>占位

2、使用组件时,<MyDialog></MyDialog>(自定义的组件)标签内部,传入结构替换slot

* 插槽-后备内容(默认值)

通过插槽完成了内容的定制,传什么就显示什么,但是如果不传,则是空白

插槽后备内容:封装组件时,可以为预留的<slot>插槽提供后备内容(默认内容)

语法:在该标签内,放置内容,作为默认内容

* 插槽-具名插槽

需求:一个组件内有多处结构,需要外部传入标签,进行定制

具名插槽语法:

1、多个slot使用name属性区分名字

2、template配合v-slot:对应属性值 来分发对应标签

其中的v-slot可以直接简写为#属性值

* 插槽-作用域插槽

作用域插槽:定义slot插槽的同时,是可以传值的。给插槽绑定数据,将来使用组件时可以用

基本步骤:

1、给slot标签,以添加属性的方式传值

<slot :id="item.id" msg="测试文本"></slot>

2、所有被添加的属性,都会被收集到一个对象里

3、在template中,通过#插槽名=“obj”接收,默认插槽名为default

3、路由入门

单页应用程序:SPA-Single Page Application

单页面应用:所有功能在一个html页面上实现

单页面之所以开发效率高,性能好,用户体验好,最大原因是页面按需更新

要按需更新,首先就要明确:访问路径和组件的对应关系

访问路径和组件的对应关系由路由确定

vue中的路由:路径和组件之间的映射关系

1、VueRouter

作用:修改地址栏路径时,切换显示匹配的组件

说明:Vue官方的一个路由插件,是一个第三方包

VueRouter的使用(5+2)

5个基础步骤(固定)

1、下载:下载VueRouter模块到当前工程

2、引入

import VueRouter from 'vue-router'

3、安装注册

Vue.use(VueRouter)

4、创建路由对象

const router=new VueRouter()

5、注入,将路由对象注入到new Vue实例中,建立联系

new Vue({
    render: h => h(App),
    router
}).$mount('#app')

以上操作都在main.js中完成

2个核心步骤

1、创建需要的组件(views目录),配置路由规则

例如:

import Find from './views/Find.vue'
import My from './views/My.vue'
const router =new VueRouter({
    routes: [
        {path:'/find',component: Find},
        {path:'/my',component: My}
    ]
})

2、配置导航,配置路由出口(路径匹配的组件显示的位置)

例如:

    <a href="#/find"></a>
    <a href="#/my"></a>

利用<router-view></router-view>进行视图的展示

2、组件存放目录问题

注意:.vue文件本质无区别

路径相关的组件,需要放置在views目录中

组件分类:页面组件与复用组件

一般页面组件放置在views目录中,而复用组件放置在components目录中

相关文章:

  • 熔断降级(Sentinel解决)
  • 在OpenGL ES中将值传入shader的方法总结
  • 一条不太简单的TEX学习之路
  • 论文阅读:Attention is all you need
  • 从PGC到AIGC:海螺AI多模态内容生成系统的技术革命
  • android 音量调节
  • 【第二十八周】:Temporal Segment Networks:用于视频动作识别的时间分段网络
  • vue3配置代理实现axios请求本地接口返回PG库数据【前后端实操】
  • 【回归算法解析系列12】分位数回归(Quantile Regression)
  • JAVA读取/解析 指定文件内容
  • 使用 Spring Security的一些常用功能
  • 众乐影音-安卓NAS-Player的安装和设置说明
  • Beyond Compare 4注册激活方法
  • 农用车一键启动工作原理
  • docker简单使用
  • 如何使用jenv工具管理多个JDK版本
  • 4、匿名函数lambda的使用
  • 从碎片化到标准化:案例详解 MCP 如何重塑 AI Agent 开发生态?
  • 嵌入式基础知识学习:UART是什么?
  • Elasticsearch:可配置的推理 API 端点分块设置
  • 武汉楼市新政:二孩、三孩家庭购买新房可分别享受6万元、12万元购房补贴
  • 网商银行2024年年报发布,客户资产管理规模超过1万亿
  • 小核酸药物企业瑞博生物递表港交所,去年亏损2.81亿元
  • 奈雪的茶叫停“能喝奶茶就不要喝水”宣传,当地市监称不要误导消费者
  • 中国防疫队深入缅甸安置点开展灾后卫生防疫工作
  • 铜钴巨头洛阳钼业一季度净利润同比大增九成,最新宣布超30亿元收购黄金资产