前言
组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。
在vue angular react三大前端框架的大前端时代。许多人选择了vue,在 github 上的star,vue已经超过react的数量了。虽然star并不能代表vue更强,不过在发展速度上看来,vue确实很快。
在模块化的前端时代,万物皆组件,vue学习组件是必不可少的。
可是在大多数人熟悉了纯html、jq之后,在初次接触vue的组件时候,却是满脸蒙蔽。
今天咱们以最简单的方式,带vue小白童鞋们,步入组件的世界~
咱们今天讲三种组件使用方式
1. 基本组件四步骤
咱们以一个button子组件为例
项目src结构:
组件一般都放在components文件夹下:
1.写好子组件:
<template> <button class="btn" :style="{color:color}"> <slot/> <!-- 插槽 --> </button> </template> <script> export default { // 传入子组件的参数写到props props: { color: { type: String, // 颜色参数类型 default: "#000" // 默认黑色 } } } </script> <style scoped> .btn { width: 110px; height: 60px; border-radius: 10px; border: none; font-size: 15px; } </style>
2.3.4.父组件:
<template> <div id="app"> <!-- 4. 在页面上使用 --> <Button color="red">我是插槽的值</Button> </div> </template> <script> // 2. 在页面种引用组件 import Button from '@/components/Button.vue' export default { name: "app", // 3. 在components中声明组件 components: { Button } }; </script>
效果:
2. 全局组件五步骤
1.子组件还是那样~~:
2. 子组件添加install方法
Button.js :
import ButtonComponent from './Button.vue' // 添加install方法 (插件方法) const Button = { install: function (Vue) { Vue.component("Button", ButtonComponent); } } // 导出Button export default Button
当然 你可以处理多个全局组件:
import ButtonComponent1 from './Button1.vue' import ButtonComponent2 from './Button2.vue' import ButtonComponent3 from './Button3.vue' const buttonList = [ ButtonComponent1, ButtonComponent2, ButtonComponent3 ]; // 添加install方法 (插件方法) const Button = { install: function (Vue) { buttonList.forEach(button=>{ // 这里 使用每个组件的 name 属性作为组件名 Vue.component(button.name, button); }) } } // 导出Button export default Button
3.4. main.js
import Vue from 'vue' import App from './App.vue' // 3 import Button from '@/components/Button.js' // 4 Vue.use(Button); new Vue({ render: h => h(App), }).$mount('#app')
5. 在页面上使用
app.vue:
<template> <div id="app"> <!-- 5. 在页面上使用 --> <Button color="blue">我是全局按钮</Button> </div> </template>
效果如下:
2. 构造组件四步骤
1.写好子组件:
<template> <p class="Message">{{value}}</p> </template> <script> export default { data() { return { value: "我是一个弹框" }; } }; </script> <style> .Message { position: fixed; bottom: 30px; width: 200px; background-color: rgba(0, 0, 0, 0.5); color: #fff; border-radius: 10px; left: 50%; transform: translateX(-50%); line-height: 30px; text-align: center; font-size: 15px; animation: messageFade 3s 1; } /* 加个简单动画 */ @keyframes messageFade { 0% { opacity: 0; -webkit-transform: translate3d(-50%, 80%, 0); transform: translate3d(-50%, 80%, 0); } 16% { opacity: 1; -webkit-transform: translate3d(-50%, 0, 0); transform: translate3d(-50%, 0, 0); } 84% { opacity: 1; -webkit-transform: translate3d(-50%, 0, 0); transform: translate3d(-50%, 0, 0); } 100% { opacity: 0; -webkit-transform: translate3d(-50%, 80%, 0); transform: translate3d(-50%, 80%, 0); } } </style>
2. vue.extend构建组件
Message.js :
import Vue from 'vue'; import Message from './Message.vue'; // 构造组件 const MessageConstructor = Vue.extend(Message); // 设置删除组件 const removeDom = (target) => { target.parentNode.removeChild(target); }; // 构造组件添加关闭方法 MessageConstructor.prototype.close = function() { this.visible = false; removeDom(this.$el); }; const MessageDiv = (options) => { // 实例化组件 const instance = new MessageConstructor({ el: document.createElement('div'), // 组件参数,运用到组件内的data data: options, }); // 在body添加组件 document.body.appendChild(instance.$el); Vue.nextTick(() => { instance.timer = setTimeout(() => { // 定时关闭组件 instance.close(); }, 3000); }); return instance; }; export default MessageDiv;
3. 挂载 Vue.prototype
main.js :
import Message from '@/components/Message.js' Vue.prototype.$message = Message;
4. 使用:
<template> <div id="app"> <Button color="blue" @click.native="msg">我是全局按钮</Button> </div> </template> <script> import Button from "@/components/Button.vue"; export default { name: "app", components: { Button }, methods: { msg() { // 4. 使用构造组件 this.$message({value:'我是构造组件'}); } } }; </script>
效果:
以上就是三种组件的基本使用啦~~
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。
本文向大家介绍详解vue文件中使用echarts.js的两种方式,包括了详解vue文件中使用echarts.js的两种方式的使用技巧和注意事项,需要的朋友参考一下 最近工作中需要用到echarts,由于项目是用的vue-cli开发的。在网上搜到vue中合成了vue-echarts,但是不想使用vue中规定好的数据格式,于是就自己做了一个vue项目引用原生echarts的简单demo,实现过程如下:
本文向大家介绍详解Vue中使用Echarts的两种方式,包括了详解Vue中使用Echarts的两种方式的使用技巧和注意事项,需要的朋友参考一下 1. 直接引入echarts 先npm安装echarts 开发: main.js 2、使用vue-echarts 先npm安装vue-echarts 开发: main.js 总结 以上所述是小编给大家介绍的Vue中使用Echarts的两种方式,希望对大家有
本文向大家介绍vue component组件使用方法详解,包括了vue component组件使用方法详解的使用技巧和注意事项,需要的朋友参考一下 什么是组件 按照惯例,引用Vue官网的一句话: 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件
本文向大家介绍vue拖拽组件使用方法详解,包括了vue拖拽组件使用方法详解的使用技巧和注意事项,需要的朋友参考一下 前言 pc端开发需要拖拽组件完成列表的顺序交换,一般移动端的UI组件会包含,但是我在用的iview并没有此功能的组件,于是手写一个,实现起来很简单。效果图如下: 可以拖拽完成新排序,点击某一项可以触发相关事件. 关于拖拽 drag & drop 拖放(Drag 和 drop)是 HT
本文向大家介绍详解VUE中常用的几种import(模块、文件)引入方式,包括了详解VUE中常用的几种import(模块、文件)引入方式的使用技巧和注意事项,需要的朋友参考一下 1 引入第三方插件 2 引入工具类 第一种是引入单个方法 下面是写法,需要export导出 第二种 导入成组的方法 其中tools.js中有多个export方法,把tools里所有export的方法导入 vue中怎么用呢?
本文向大家介绍vue注册组件的几种方式总结,包括了vue注册组件的几种方式总结的使用技巧和注意事项,需要的朋友参考一下 1、全局注册(这种方式注册组件必须在vue实例化之前声明) 2、局部注册 3、扩展实例 以上这篇vue注册组件的几种方式总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。