首页 > 其他分享 >Props 混入 插件 插槽 本地存储

Props 混入 插件 插槽 本地存储

时间:2024-05-04 19:44:55浏览次数:21  
标签:插件 vue name 插槽 Vue Props 组件

Props介绍

Props作为组件的核心特性之一,也是我们平时开发Vue项目中接触最多的特性之一,它可以让组件的功能变得丰富,也是父子组件通信的一个渠道。

【1】普通传值

在组件的标签上自定义属性,用属性绑定给改自定义属性绑定一个变量,组件内部定义props数组,将自定义的属性名填入,即可在组件内使用父组件传入的变量,变量名就是自定义的组件。

父组件

<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
      // 自定义属性,并且绑定一个变量message
    <index :mymessage="message"></index>
  </div>
</template>

<script>
import index from "../components/index.vue";
export default {
  name: 'HomeView',
  data(){
    return{
      message:'hqq'
    }
  },
  components: {
    HelloWorld,
    index
  }
}
</script>

子组件

<template>
  <div class="index">
    <h1>我是小组件</h1>
    <button @click="handleShow">点我看控制台</button>
  </div>
</template>

<style scoped>

</style>


<script>
export default {
  name: 'index',
  data(){
    return{
      name:''
    }
  },
  methods:{
    handleShow(){
      console.log(this.mymessage)
    }
  },
    // 使用props数组接收mymessage自定义属性名,就可以在当前组件使用这个变量
  props:['mymessage']
}
</script>

【2】限制数据类型

通过给子组件的props传一个对象{{自定义属性名: 数据类型}}这样子就会限制父组件传来的数据的类型,如果传了不同的类型的数据,浏览器控制台会警告,但是不会直接报错。

子组件

<script>
export default {
  name: 'index',
  data() {
    return {
      name: ''
    }
  },
  methods: {
    handleShow() {
      console.log(this.mymessage)
    }
  },
    // 给props传一个对象
  props: {mymessage: String}
}
</script>

【3】传对象

这样做可以对父组件传来的数据进一步限制

子组件

  props: {
    name:'mymessage', // 自定义属性名
    required:true, // 是否是必须填的
    type:String, // 限制数据类型
    default:'隔壁老王来了' // 默认值
  }

混入

mixin混入,可以把多个组件共用的配置提取成一个混入对象,这样就不需要在每个组件都写了。

就相当于写了一个功能,很多个页面都需要用这个功能,这时候就可以把这个功能封装起来,下次需要使用的时候直接导入就行

【1】封装 导出

最好创建一个文件夹,mixin,再创建一个index.js,在这里面写封装的功能

const hunru = {
    data() {
        return {
            title: '好好学习'
        }
    },
    methods: {
        handleClick() {
            alert(this.title)
            console.log(this.title)
        }
    }
}
// 一定要把功能导出
export default hunru

【2】导入

在需要使用的页面导入该模块,配置mixins属性

<template>
  <div class="about">
    <h1>This is an about page</h1>
    <button @click="handleClick">弹窗</button>
  </div>
</template>

<script>
    // 导入模块
import hunru from "@/mixin";
export default {
  name:'about',
  data(){
    return{

    }
  },
  methods:{},
    // 配置mixins 将模块名填入数组
  mixins:[hunru]
}
</script>

【3】全局使用

上面的方法都是局部使用的方法,也可以进行全局配置,在main.js里面进行全局配置

import hunru from "@/mixin";
Vue.mixin(hunru)

插件

插件其实就是vue的增强功能,通常用来为vue添加全局功能

【1】常见功能

一般有以下几种功能

  1. 添加全局方法或者 property。如: vue-custom-element
  2. 添加全局资源: 指令/过滤器/过渡等。如 vue-touch
  3. 通过全局混入来添加一些组件选项。如 vue-router
  4. 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现。
  5. 一个库,提供自己的 API,同时提供上面提到的一个或多个功能。如 vue-router

【2】开发插件

开发插件也叫定义插件,主要是通过install方法来暴露的,参数,vue实例以及自定义参数。无论在install中写什么,vue都会替你执行

export default {
    install(a) {
        // 1 定义全局变量
        Vue.prototype.name = 'hqq'
        // 2 定义全局变量最好加上$前缀,防止污染
        Vue.prototype.$axios = axios
        // 3 可以直接定义一个函数,如登录,以后要登录直接调用即可
        Vue.prototype.$login = (url, username, password) => {
            axios.post('http://127.0.0.1:8000/api/v1/user/login/', {
                username: username,
                password: password
            })
                .then((response) => {
                    alert('登录成功')
                })
        }
    }
}
export default {
  install: function(Vue) {
    console.log('Vue', Vue);
    // 1. 添加全局方法或 property  
    Vue.myGlobalMethod = function () {  
      console.log('这是插件的全局方法');
    }  

    // 2. 添加全局资源  
    Vue.directive('my-directive', {  
      bind (el, binding, vnode, oldVnode) {  
        console.log('这是插件的全局指令'); 
      }   
    })  

    // 3. 注入组件选项  
    Vue.mixin({  
      created: function () {  
        console.log('这是插件的混入');
      }   
    })  

    // 4. 添加实例方法  
    Vue.prototype.$myMethod = function (methodOptions) {  
      console.log('这是插件的实例方法');
    }
  }
}

【3】使用插件

使用插件分为全局引用和局部引用

全局引用

在main.js中引入并且使用

// 引入
import my from '@/plugins'

// 使用
Vue.use(my)

局部引用

局部引用,在需要用到插件的页面use就行

<script>

// 导入插件
import my from '../plugins'
// 导入Vue实例
import Vue from "vue";

export default {
  name: 'HomeView',
  created() {
    console.log(this.name)
      // 使用插件
    Vue.use(my)
      // 输出插件里面定义的name
    console.log('hahaha',this.name)
  }

}
</script>

插槽

Vue插槽的主要作用是承载分发内容的出口,分为匿名插槽具名插槽和作用域插槽三种

以下面为例子

  • child.vue:封装 name 为 ChildExample 的组件
  • parent.vue:引入 child.vue,调用 ChildExample 组件

【1】匿名插槽

<slot> </slot>是最常用的插槽,根据需要自定义内容

// child.vue
<slot></slot>

// parent.vue
<child-example>
  <span>这是匿名插槽的内容</span>
</child-example>

【2】具名插槽

假设一个插槽满足不了要求,需要设置多个插槽,那么就必须要给插槽赋name值

匿名插槽是特殊的具名插槽,它的name为default

// child.vue
<slot name="left"></slot>
<slot name="right"></slot>

// parent.vue
<child-example>
  <span slot="left">这是具名插槽left的内容</span>

  <!-- 2.6.0 + -->
  <template v-slot:right>
    <span>这是具名插槽right的内容</span>
  </template>
</child-example>

本地存储

本地存储通常用于保存用户登录信息

通常有三种方式sessionStorage,localStorage和vue-cookies

vue-cookies是第三方插件,需要下载

【1】sessionStorage和localstorage的区别

  1. sessionStorage 中的数据仅在当前会话有效,也就是说当用户增加了标签页或者关闭浏览器之后,保存的数据就会丢失。
  2. localstorage 中的数据可以说是永久有效的,只要用户不主动清除,就会一直存在。

【2】操作sessionStorage

// 增
sessionStorage.setItem(‘key’, ‘value’)
// 查
sessionStorage.getItem(‘key’)
// 删除单个key数据
sessionStorage.removeItem(‘key’)
// 清除sessionStorage所有数据
sessionStorage.clear()

【3】操作localstorage

// 增
localstorage.setItem(‘key’, ‘value’)
// 查
localstorage.getItem(‘key’)
// 删除单个key数据
localstorage.removeItem(‘key’)
// 清除sessionStorage所有数据
localstorage.clear()

【3】使用vue-cookies

这是一个简单的Vue.js插件,专门用于在vue中处理浏览器的cookie操作,vue-cookies没有依赖关系,它可以独立存在,对vuejs友好。

安装 引用

// 安装
npm install vue-cookies --save

// 引用
import Vue from 'vue'
import VueCookies from 'vue-cookies'
Vue.use(VueCookies)

API

//不写过期时间,默认为1天过期
this.$cookies.set("token","123456")

// 1天过期,忽略大小写
this.$cookies.set("token","12346","1d")
this.$cookies.set("token","123456","1D")
// 以秒为单位,设置1天过去
this.$cookies.set("token","123456",60 * 60 * 24)

// 填写Date对象,明确指定过期时间
this.$cookies.set("token","123456", new Date(2020, 10, 01))

// 填写一个时间字符串,指定过期时间
this.$cookies.set("token","123456", "Sat, 13 Mar 2017 12:25:57 GMT")

//浏览器会话结束时过期
this.$cookies.set("token","input_value","0");

//永不过期
this.$cookies.set("token","input_value",-1); 

标签:插件,vue,name,插槽,Vue,Props,组件
From: https://www.cnblogs.com/Hqqqq/p/18172599

相关文章

  • pythony插件操作cloudflare
    https://juejin.cn/s/cloudflare%20dns%20api%20python通过安装CloudflareDNSAPI是Cloudflare提供的一组API接口,允许用户通过程序化方式管理其DNS记录。Python是一种流行的编程语言,可以通过它来编写与CloudflareDNSAPI交互的程序。下面是一些使用Python......
  • 如何在本地使用授权或插件
    这里以PHPstudy为例,顺便附上phpstudy的安装教程:https://www.eyoucms.com/ask/list_1_10/5536.html。第一种情况:还没有域名的情况下,想要测试某个插件,先在官网下单,补全插件域名,这个域名尽量和其他域名区别开,比如用特别的后缀:eyouCMS.hk等等。如图所示:将源码上传后,在浏览器打开ey......
  • Hexo-Matery主题评论插件
    matery主题集成了各种评论模块,例如gitalk、gitment、disqus、livere、valine、waline、Twikoo、utteranc等,但我使用最好的还是utteranc这种集成在github种的评论插件,并且能够做到github邮箱通知。1.新建一个评论仓库首先创建一个公开的评论仓库<自定义名称>!注意一定要公开,......
  • GPU插件介绍
    对于NVIDIAGPU,存在3种设备插件的实现。官方NVIDIAGPU插件要求1.节点安装了NVIDIA驱动。2.节点安装nvidia-docker2.0。3.Docker的默认运行时必须设置为nvidia-container-runtime,而不是runc。4.NVIDIA驱动版本~=384.81。NVIDIAContainerRuntime把docker的默认运行时......
  • 混入、插件、插槽、vuex、本地存储
    【混入】#mixin(混入)功能:可以把多个组件共用的配置提取成一个混入对象,不需要在每个组件中都写了使用步骤   。。。【插件】1#1写plugins/index.js2importVuefrom"vue";3importaxiosfrom"axios";4importhunrufrom"@/mixin";......
  • SpringBoot中分页插件PageHelper的使用
    SpringBoot如何使用PageHelper实现分页查询在原始的分页查询方法中,需要编写复杂的SQL语句来限制查询结果的范围,通常需要使用LIMIT或者ROWNUM等数据库特定的语法来实现分页。在每个需要分页的查询方法中,都需要手动计算分页的起始位置和偏移量,通常需要根据页码和每页数量来计算,这部......
  • [POM]idea安装pom文件maven依赖查询插件
    安装前: 安装:Fle->Setting plugin->marketplace搜索“”mavenhelper“”,点击install 安装后,下方多了“DependencyAnalyzer”,支持查看全部依赖、依赖冲突,依赖树,过滤  ......
  • zotero添加markdown插件(Mac版)
    zotero安装官网下载地址:https://www.zotero.orgmarkdown插件下载下载地址:https://gitcode.com/fei0810/markdownhere4zotero/tree/master选择相应的.xpi文件插件安装步骤打开zotero,选择工具->附加组件选择installadd-onfromfile选中刚才下载的.xpi文件点......
  • 06-混入-自定义插件-插槽-本地存储-vuex组件通信-页面跳转
    混入mixin在Vue中,混入(mixin)是一种可以在多个组件中重复使用的对象。它允许您将组件中的一些选项提取出来,然后在多个组件中进行重复使用。混入可以包含组件中的任何选项,例如数据、计算属性、方法等。使用步骤在src文件夹下新建一个文件夹,比如mixin,然后再这个文件夹下面新建一......
  • Smart IME 智能切换中文与英文输入法 - vscode插件推荐
    SmartIME智能切换中文与英文输入法-vscode插件推荐IDEA插件SmartInputVSCode插件SmartIME插件SmartIME本文是针对vscode插件,正常安装SmartIME,就自动安装另外2个插件了SmartIME需要安装IMEandCursor与HyperScopes插件。缺点vscode下,只能是中文......