vue命令式组件和插件编写
一直在写各种业务,好多基本用法都忘记了,回顾一下:
一、vue各种UI库里的命令式组件比如element-ui里Notification组件,可以这样调用
this.$notify({
title: '偏移',
message: '这是一条带有偏移的提示消息',
offset:
});
命令式调用的组件写法分三步:
- 编写组件代码,也就是.vue文件
- Vue.extend()继承扩展组件,编写组件调用逻辑
- 挂载到Vue原型上,使得每个组件实例可以调用
这里简单写个message组件演示一下
1.编写message.vue文件:
<template>
<div class="message" v-if="show">
{{label}}
</div>
</template>
<script>
export default {
data () {
return {
label:'空消息',
show:true
}
}
}
</script>
<style lang="scss">
.message{
position:fixed;
top:20px;
right: 10px;
color: #fff;
background-color: #;
padding: 15px 20px;
width: 180px;
}
</style>
2.实现调用逻辑,messagefun.js文件
import Vue from 'vue'
import Message from './message.vue' const Msg = Vue.extend(Message);
export default (options={}) => {
const instance = new Msg({
el:document.createElement('div'),
data(){
return{
label:options.label
}
}
})
document.body.appendChild(instance.$el);
window.setTimeout(()=>{
instance.$data.show=false
},options.time?options.time:)
}
3.挂载到原型,index.js里
import Vue from 'vue'
import P3 from 'pages/index3.vue'
import Coms from 'pages/page3com/com.js'
import msg from 'pages/page3com/messagefun.js'
Vue.use(Coms) Vue.prototype.$msg = msg; new Vue({
el: '#p3',
render: h => h(P3)
})
4.调用
this.$msg(
{
label:'我是一个消息',
time:
});
效果:页面右上角一个消息通知,4秒后自动消失

二、插件定义编写步骤
- 编写组件代码,即.vue文件
- 统一将组件在插件的install方法里注册为全局组件
- Vue.use(custom)之后即可使用
1.定义两个简单的组件,com1.vue和com2.vue
//com2.vue
<template>
<div class="demo">
<button :style="{color:color}">我是插件二</button>
</div>
</template>
<script>
export default {
name:'com2',
props:{
color:{
type:String,
required:false,
default:'#333'
}
}
}
</script> //com1.vue
<template>
<div class="demo">
<button :style="{color:color}">我是插件一</button>
</div>
</template>
<script>
export default {
name:'com1',
props:{
color:{
type:String,
required:false,
default:'#333'
}
}
}
</script>
2.注册全局组件,com.js
import Vue from 'vue'
import Com1 from './com1.vue'
import Com2 from './com2.vue' const coms = [
Com1,
Com2
]
const install = function(Vue){
coms.forEach(component => {
Vue.component(component.name,component)
})
}
/* 支持使用标签的方式引入 */
if (typeof window !== 'undefined' && window.Vue) {
install(window.Vue);
} export default {
install,
Com1,
Com2
}
3.在index.js里引入并Vue.use()使用组件(use方法会调用对象的install方法)
import Vue from 'vue'
import P3 from 'pages/index3.vue'
import Coms from 'pages/page3com/com.js'
import msg from 'pages/page3com/messagefun.js'
Vue.use(Coms) Vue.prototype.$msg = msg; new Vue({
el: '#p3',
render: h => h(P3)
})
4.使用这两个组件
<template>
<div class="demo">
<com1></com1>
<com2 color="red"></com2>
</div>
</template>
效果:

以上组件都写的比较简单,不过复杂的组件只是组件内部逻辑代码复杂,编写和使用流程再上边已经阐述完毕。
vue命令式组件和插件编写的更多相关文章
- vue插件编写与实战
关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 热爱vue开发的同学肯定知道awesome-vue 这个github地址,里面包含了数以千计的vue ...
- Vue插件编写、用法详解(附demo)
Vue插件编写.用法详解(附demo) 1.概述 简单来说,插件就是指对Vue的功能的增强或补充. 比如说,让你在每个单页面的组件里,都可以调用某个方法,或者共享使用某个变量,或者在某个方法之前执行一 ...
- vue中自定义组件(插件)
vue中自定义组件(插件) 原创 2017年01月04日 22:46:43 标签: 插件 在vue项目中,可以自定义组件像vue-resource一样使用Vue.use()方法来使用,具体实现方法: ...
- vue.js国际化vue-i18n插件的使用问题,在模版文本、组件方法、jsf方法里的使用
vue.js国际化vue-i18n插件的使用问题,在模版文本.组件方法.jsf方法里的使用 1.在文本里使用{{$t("xxx")}} <span>{{$t(" ...
- chart.js angular组件封装(ng6)、实战配置、插件编写
前言 项目需要使用chart.js插件,由于项目是使用angular开发,那么我第一步就是先把chart.js改造成angular组件来使用. 本项目代码都可以在github上下载:项目git地址 a ...
- vue axios拦截器 + 自编写插件 实现全局 loading 效果;
项目需求:用自定义的 .gif 图标实现全局 loading 效果:为避免在每个页面手动添加,且简单高效的实现,经查阅资料,最终采用了 vue axios拦截器 + 自编写 loading 插件:下面 ...
- 自己封装 vue 组件 和 插件
vue 组件 一.组件的创建,两种方法.(本质上是1.2两种,vue文件,只是创建了一个 组件选项对象,仅是一个js对象)1.定义组件:Vue.component('button-counter', ...
- vue.js组件化开发实践
前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...
- VUE.JS组件化
VUE.JS组件化 前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎 ...
随机推荐
- dagger2的Qualifier与Scope
Qualifier即Named 当module的@Provides提供相同变量的不同属性时:用于区分把哪一个初始化 Module 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- C++扬帆远航——13(个人所得税计算器)
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:shui.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- async/await实现图片的串行、并行加载
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- nginx 命令行参数 启动 重启 重载 停止
今天和大家分享关于 nginx 的一些参数使用 首先,你应该安装了nginx CentOS 安装 nginx 这是很早之前的一篇博客,可以参考. 之前,我们如何去操作 nginx ##简单粗暴法 pk ...
- ado.net DataSet
一.概念 DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataS ...
- localstorage浏览器储存
需求 a.html页面生成订单信息,b.html中调用. 通过不操作数据库,直接在浏览器自带的数据库中进行操作,当然主要是对Json数据的操作. a.html代码部分: <!--html--&g ...
- 使用CSS实现折叠面板总结
任务目的 深入理解html中radio的特性 深入理解CSS选择器以及伪元素的使用 任务描述 使用input的radio单选框特性结合CSS中的伪元素实现bootstrap中折叠面板(点击查看样例), ...
- 编译putty 源码去掉 Are you sure you want to close this session? 提示
0, 为什么要编译 putty ?在关闭窗口的时候,会弹出一个 Are you sure you want to close this session?要把这个去掉.当然也可以用 OD 之类的来修改. ...
- docker 学习之路 将docker容器变为镜像并上传
环境 ubunt 16.4 去hub.docker.com上注册一个账号,并在账号中注册一个公有public或者私有仓库private 步骤如下 如上图 点击该处进入创建docker库页面 除了名字之 ...
- Azure CLI 简单入门
Azure CLI 是什么 Azure 命令行接口 (CLI) 是用于管理 Azure 资源的 Microsoft 跨平台命令行体验. Azure CLI 易于学习,是构建适用于 Azure 资源的自 ...