自定义vue组件 和 自定义vue组件npm包

16 篇文章 0 订阅

自定义组件

 <div id="components-demo" style="margin-top:10px">
        <button-counter></button-counter>
 </div>
import Vue from 'vue';

Vue.component('button-counter',{
  template: '<button @click="count+=1">点击了{{count}}次</button>',
  data: function() {
    return {
      count: 0
    }
  }
})

new Vue({
  el: '#components-demo',
  data: {}
})

自定义组件的npm包

父子传值啥的都没问题

开发自定义组件

新建自定义组件vue项目,这里我们直接vue-cli4整上

vue create vue-settlement-component
npm run serve

开发自定义组件 VueSettlementComponents

<template>
  <div>
    请输入两个数:<input type="text" v-model="frist"> + <input type="text" v-model="second"> <button @click="plus">计算</button>
  </div>
</template>
<script>
export default {
  name:'vueSettlementComponents',
  props:{
    third:{
      type: Number,
      default: 0
    }
  },
  data() {
    return{
      frist: 0,
      second: 0
    }
  },
  methods:{
    plus() {
      alert(Number(this.frist)+Number(this.second)+Number(this.third))
      this.$emit('all',Number(this.frist)+Number(this.second)+Number(this.third))
    }
  }

}
</script>

src下新建index.js

import VueSettlementComponents from '../src/components/vueSettlementComponents.vue'
const coms = [VueSettlementComponents]; // 将来如果有其它组件,都可以写到这个数组里

// 批量组件注册
const install = function (Vue) {
  coms.forEach((com) => {
    Vue.component(com.name, com);
  });
};

export default install;

install方法会在 vue.use(plugin) 时调用

配置打包方式(只打包自定义组件,可配置):

 "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "build:components": "vue-cli-service build --target lib ./src/index.js --name vueSettlementComponents --dest package",
    "lint": "vue-cli-service lint"
  },
--target lib 关键字 指定打包的目录
--name 打包后的文件名字
--dest 打包后的文件夹的名称

指定文件夹打包后,生成bundle文件

上传自定义组件的npm包

在生成bundle文件的文件夹下,创建npm包

npm init -y
npm login
npm publish

这个时候,npm官方就有 vue-settlement-component 这个包了

使用自定义组件的npm包

npm install vue-settlement-component

main.js

// 引入自己定义的第三方vue组件,全局使用
import VueSettlementComponents from "vue-settlement-components";
Vue.use(VueSettlementComponents)

页面中使用

   <div style="margin-top:40px">
       <div>自定义组件封装的npm包(已经传入值4了)</div>
      <vue-settlement-components :third="4" style="margin-top:10px"></vue-settlement-components>
   </div>

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值